【技术实现步骤摘要】
本专利技术涉及的是计算机领域中二进制翻译领域,尤其涉及二进制翻译中间接跳转指令的翻译方法及其系统。
技术介绍
二进制翻译器功能是将一种指令集体系结构(ISA)上的可执行程序翻译到另一 种ISA上执行。当源机器和目标机器的ISA不同时,可以实现不同机器间的代码迁移。该 项技术可以用于解决遗产代码的移植,为某一处理器提供更加丰富的软件资源等。当ISA 相同时,该项技术可以用于实现动态优化和软件插桩等。另外在虚拟机系统的实现中,存在 一个关键步骤就是二进制翻译。上述开发过程中,均会面临的问题为如何高效地处理程序 中存在的间接跳转指令。 间接跳转指令不同于普通的跳转指令,它的跳转目标地址只有在运行的时刻才能 够获得。例如Intel X86体系结构上间接跳转指令的格式如下所示。 FF/4 JMP r/ml6 Jump near,absolute indirect, address given in r/ml6 FF/4 JMP r/m32 Jump near,absolute indirect, address given in r/m32 FF/5 JMP ml6:16 Jump near, absolute indirect, address given in ml6:16 FF/4 JMP ml6:32 Jump near, absolute indirect, address given in ml6:32 可见,间接跳转指令的操作数可能是寄存器,也可能是内存,该操作数指示的内存 地址中存放的内容即为要跳转的目标地址。在二进制翻译系统中,如何有效地翻译 ...
【技术保护点】
一种二进制翻译中间接跳转指令的翻译方法,其特征在于,包括: 步骤1,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表; 步骤2,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项; 步骤3,翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表; 步骤4,将构建的所述目标跳转表的地址写入所述重定位项。
【技术特征摘要】
一种二进制翻译中间接跳转指令的翻译方法,其特征在于,包括步骤1,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;步骤2,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;步骤3,翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;步骤4,将构建的所述目标跳转表的地址写入所述重定位项。2. 如权利要求1所述的二进制翻译中间接跳转指令的翻译方法,其特征在于, 所述步骤l进一步为,步骤21,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转 指令是否为多分支语句或虚函数调用,如果是,则对所述间接跳转指令进行标记;步骤22,获得所述被标记的间接跳转指令的源跳转表的大小,所述源跳转表中记载的 各个跳转目标地址,记录计算所述源跳转表索引的指令。3. 如权利要求2所述的二进制翻译中间接跳转指令的翻译方法,其特征在于, 所述步骤2进一步为,步骤31,翻译所述计算源跳转表的索引的指令,在索引所述目标跳转表时使用所述索引;步骤32,将被标记的间接跳转指令翻译为根据所述索引从待构建的所述间接跳转指令 的目标跳转表中获得对应表项,并按所述表项的内容进行跳转的指令; 步骤33,为所述目标跳转表预留重定位项。4. 如权利要求2所述的二进制翻译中间接跳转指令的翻译方法,其特征在于, 所述步骤3进一步为,步骤41,翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的 大小相同;步骤42,判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果 是,执行步骤43,否则,执行步骤44 ;步骤43,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中; 步骤44,将所述目标跳转表对应的表项填为跳转到翻译控制器的代码入口地址。5. 如权利要求2所述的二进制翻译中间接跳转指令的翻译方法,其特征在于, 所述步骤1和所述步骤2之间还包括步骤51,将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本 地码移到跳转寄存器指令之后; 所述步骤3进一步为,步骤51,翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的 大小相同;步骤52,判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果 是,执行步骤53,否则,执行步骤54 ;步骤53,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中;步骤54,将所述目标跳转表对应的表项填为所述跳转寄存器指令的下一条指令的地址。6. 如权利要求1所述的二进制翻译中间接跳转指令的翻译方法,其特征在于, 所述步骤2还包括,对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译...
【专利技术属性】
技术研发人员:武成岗,王文文,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。