发明名称 |
指令重组方法及装置 |
摘要 |
本发明提供一种运行时指令重组方法,包括:步骤1、缓存指令运行环境;获取栈中保存的跳转指令的地址和参数,计算下一条即将运行的指令地址,该地址为第零地址;将第一地址设置为第零地址;步骤2、利用第一地址来查找地址对应表,如果找到记录,恢复所缓存的指令运行环境,并跳转到找到的对应地址继续执行,完成本次指令重组;步骤3、如果没有找到记录,从第一地址开始获取待执行的机器指令片段,指令片段的结尾为跳转指令,跳转指令所在地址为第三地址;步骤4、从第一地址开始,将机器码进行反汇编,并将反汇编结果通过一个词法分析器进行处理,生成重组后的汇编代码,直到第三地址为止。 |
申请公布号 |
CN103677746B |
申请公布日期 |
2016.06.29 |
申请号 |
CN201210327228.2 |
申请日期 |
2012.09.06 |
申请人 |
中天安泰(北京)信息技术有限公司 |
发明人 |
汪家祥;杨潇 |
分类号 |
G06F9/30(2006.01)I |
主分类号 |
G06F9/30(2006.01)I |
代理机构 |
|
代理人 |
|
主权项 |
一种运行时指令重组方法,包括:步骤1、缓存指令运行环境;获取栈中保存的第一跳转指令的地址和参数,计算下一条即将运行的指令地址,所述即将运行的指令地址为第零地址;将第一地址设置为第零地址;步骤2、利用第一地址来查找地址对应表,如果找到记录,恢复所缓存的指令运行环境,并跳转到找到的对应地址继续执行,完成本次指令重组;步骤3、如果没有找到记录,从第一地址开始获取待执行的机器指令片段,指令片段的结尾为第二跳转指令,第二跳转指令所在地址为第三地址;步骤4、从第一地址开始,将机器码进行反汇编,并将反汇编结果通过一个词法分析器进行处理,生成重组后的汇编代码,直到第三地址为止;步骤5、判断第三地址处的第二跳转指令的目标代码是否可以进一步处理,如果可以,将第一地址设置为第三地址或第三地址的第二跳转指令的目标地址,重新开始执行步骤3;步骤6、如果不可以,在生成的重组后的汇编代码最后,加入压栈指令记录当前第三地址的值和操作数,并在压栈指令之后加入跳转至重组平台开始的指令;步骤7、将生成的重组后的汇编代码通过汇编器生成对应的机器码,并存储于重组地址空间中分配出的地址,该地址为第二地址;将第二地址和第零地址以对应地址对的形式存储于地址对应表中;和步骤8、恢复环境,并跳转到第二地址继续执行。 |
地址 |
100071 北京市丰台区小屯路89号航天标准大厦南楼 |