CN101706734A - 二进制翻译中间接跳转指令的翻译方法及其系统 - Google Patents

二进制翻译中间接跳转指令的翻译方法及其系统 Download PDF

Info

Publication number
CN101706734A
CN101706734A CN200910237389A CN200910237389A CN101706734A CN 101706734 A CN101706734 A CN 101706734A CN 200910237389 A CN200910237389 A CN 200910237389A CN 200910237389 A CN200910237389 A CN 200910237389A CN 101706734 A CN101706734 A CN 101706734A
Authority
CN
China
Prior art keywords
jump
instruction
list
indirect
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910237389A
Other languages
English (en)
Other versions
CN101706734B (zh
Inventor
武成岗
王文文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN 200910237389 priority Critical patent/CN101706734B/zh
Publication of CN101706734A publication Critical patent/CN101706734A/zh
Application granted granted Critical
Publication of CN101706734B publication Critical patent/CN101706734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及二进制翻译中间接跳转指令的翻译方法及系统,方法包括:步骤1,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;步骤2,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;步骤3,翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;步骤4,将构建的所述目标跳转表的地址写入所述重定位项。本发明能够减少了访问内存的开销,提高了二进制翻译的效率。

Description

二进制翻译中间接跳转指令的翻译方法及其系统
技术领域
本发明涉及的是计算机领域中二进制翻译领域,尤其涉及二进制翻译中间接跳转指令的翻译方法及其系统。
背景技术
二进制翻译器功能是将一种指令集体系结构(ISA)上的可执行程序翻译到另一种ISA上执行。当源机器和目标机器的ISA不同时,可以实现不同机器间的代码迁移。该项技术可以用于解决遗产代码的移植,为某一处理器提供更加丰富的软件资源等。当ISA相同时,该项技术可以用于实现动态优化和软件插桩等。另外在虚拟机系统的实现中,存在一个关键步骤就是二进制翻译。上述开发过程中,均会面临的问题为如何高效地处理程序中存在的间接跳转指令。
间接跳转指令不同于普通的跳转指令,它的跳转目标地址只有在运行的时刻才能够获得。例如Intel X86体系结构上间接跳转指令的格式如下所示。
FF/4 JMP r/m16 Jump near,absolute indirect,address given in r/m16
FF/4 JMP r/m32 Jump near,absolute indirect,address given in r/m32
FF/5 JMP m16:16 Jump near,absolute indirect,address given in m16:16
FF/4 JMP m16:32 Jump near,absolute indirect,address given in m16:32
可见,间接跳转指令的操作数可能是寄存器,也可能是内存,该操作数指示的内存地址中存放的内容即为要跳转的目标地址。在二进制翻译系统中,如何有效地翻译上述间接跳转指令,从而达到较高的运行效率,成为现有技术中的一个问题。
现有技术中的方法是在内存中构造一个哈希表,该表记录了源机器上跳转目标地址,简称为源PC,和相应的本地码地址,简称为目标PC,的对应关系。当遇到间接跳转指令时,就生成查询哈希表的代码。如果查询成功,就将对应的目标PC装载到一个临时寄存器,跳转到目标PC处继续执行;如果查询失败,就返回到二进制翻译器的运行时环境,并对源PC处的代码进行翻译。翻译完成后修改哈希表对应表项的内容,以备以后查询。该方法在每次执行间接跳转指令时,都需要查询哈希表,开销太大。
发明内容
为解决上述问题,本发明提供了一种二进制翻译中间接跳转指令的翻译方法及其系统,能够减少了访问内存的开销,提高了二进制翻译的效率。
本发明公开了一种二进制翻译中间接跳转指令的翻译方法,包括:
步骤1,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;
步骤2,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;
步骤3,翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;
步骤4,将构建的所述目标跳转表的地址写入所述重定位项。
所述步骤1进一步为,
步骤21,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是,则对所述间接跳转指令进行标记;
步骤22,获得所述被标记的间接跳转指令的源跳转表的大小,所述源跳转表中记载的各个跳转目标地址,记录计算所述源跳转表索引的指令。
所述步骤2进一步为,
步骤31,翻译所述计算源跳转表的索引的指令,在索引所述目标跳转表时使用所述索引;
步骤32,将被标记的间接跳转指令翻译为根据所述索引从待构建的所述间接跳转指令的目标跳转表中获得对应表项,并按所述表项的内容进行跳转的指令;
步骤33,为所述目标跳转表预留重定位项。
所述步骤3进一步为,
步骤41,翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;
步骤42,判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,执行步骤43,否则,执行步骤44;
步骤43,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中;
步骤44,将所述目标跳转表对应的表项填为跳转到翻译控制器的代码入口地址。
所述步骤1和所述步骤2之间还包括:
步骤51,将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本地码移到跳转寄存器指令之后;
所述步骤3进一步为,
步骤51,翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;
步骤52,判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,执行步骤53,否则,执行步骤54;
步骤53,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中;
步骤54,将所述目标跳转表对应的表项填为所述跳转寄存器指令的下一条指令的地址。
所述步骤2还包括,对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译。
本发明还公开了一种二进制翻译中间接跳转指令的翻译系统,包括:
间接跳转指令标识模块,用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;
翻译模块,用于在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;
目标跳转表构建模块,用于在翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;
所述翻译模块还用于将构建的所述目标跳转表的地址写入所述预留的重定位项,完成翻译。
所述间接跳转指令标识模块进一步用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是,则对所述间接跳转指令进行标记;获得所述被标记的间接跳转指令的源跳转表的大小,所述源跳转表中记载的各个跳转目标地址,记录计算所述源跳转表索引的指令。
所述翻译模块在所述目标跳转表被构建前进一步用于翻译所述计算源跳转表的索引的指令,在索引所述目标跳转表时使用所述索引;将被标记的间接跳转指令翻译为根据所述索引从待构建的所述间接跳转指令的目标跳转表中获得对应表项,并按所述表项的内容进行跳转的指令;为所述目标跳转表预留重定位项。
所述目标跳转表构建模块进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为跳转到翻译控制器的代码入口地址。
所述系统在所述间接跳转指令标识模块和所述翻译模块之间还包括:
指令修改模块,用于将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本地码移到跳转寄存器指令之后;
所述目标跳转表构建模块进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为所述跳转寄存器指令的下一条指令的地址。
所述翻译模块还用于对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译。
本发明的有益效果在于,通过根据源跳转表构造目标跳转表,依据目标跳转表进行翻译,相比于查找哈希表方法,能够减少访问内存的开销,提高了二进制翻译的效率。
附图说明
图1是本发明的二进制翻译中间接跳转指令的翻译方法的流程图;
图2是本发明的二进制翻译中间接跳转指令的翻译系统的结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
本发明的二进制翻译中间接跳转指令的翻译方法如图1所示。
步骤S100,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断该间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表.
当反汇编到源平台上的间接跳转指令时,首先根据反汇编出的源指令序列对多分支语句和虚函数调用语句进行识别,具体实施方式中识别方法为中国发明专利“二进制翻译中经由跳转表的多目标分支语句的识别方法”,申请号200510085509.1。该专利通过语义图匹配的方法进行多目标分支语句的识别。首先为反汇编出的源指令序列构造语义图,然后将该语义图和多目标分支语句的标准语义图进行匹配。如果匹配成功,则该间接跳转指令就被识别为多目标分支语句,否则不被识别。如上所述如果识别成功,则标记该间接跳转指令,同时获取该间接跳转指令对应的源跳转表的大小,以及源跳转表的各项内容,源跳转表的各项内容为各个跳转目标地址,并记录下计算源跳转表索引的指令。
步骤S200,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为该目标跳转表预留重定位项。
翻译间接跳转指令时,检查所述步骤S100中对该间接跳转指令的标记,如果是未标记为多分支语句和虚函数调用类型的间接跳转,则按照现有技术中的方法进行翻译,例如将间接跳转指令翻译为查询哈希表的本地码;如果是标记为多分支语句或虚函数调用语句类型的间接跳转,则按照下面的步骤翻译该间接跳转指令。
步骤S201,翻译步骤S100中记录的计算源跳转表索引的指令,该索引同时用来索引目标跳转表。
步骤S202,翻译生成索引目标跳转表,获取对应表项的内容,根据获取的该表项的内容进行跳转的指令。
步骤S203,为所述目标跳转表预留重定位项。
由于此时该被标记的间接跳转指令对应的目标跳转表还未被构造,所以需要在翻译该间接跳转指令时为该被标记的间接跳转指令的目标跳转表预留下重定位项,以在构造完目标跳转表后就可以知道目标跳转表的地址。
步骤S300,翻译完所述被标记的间接跳转指令后,根据该间接跳转指令的源跳转表构建该间接跳转指令的目标跳转表。
当翻译完间接跳转指令后,如果该间接跳转指令被识别为多分支语句或虚函数调用语句,则为该间接跳转指令构造目标跳转表。
具体实施方式如下所述。
步骤S301,目标跳转表的大小和源跳转表的大小一致,实施例中每一项的内容为一个32位的地址值。
步骤S302,如果源跳转表表项中的跳转地址存在已翻译的本地码,则向目标跳转表对应的表项中填入该已翻译的本地码入口地址;如果没有已翻译的本地码,也就是源跳转表中的跳转地址还未被翻译,则将相应的目标跳转表的表项填入跳转到翻译控制器的代码入口地址。
步骤S400,将构建的所述目标跳转表的地址写入所述重定位项。
由于所述步骤S200在翻译间接跳转指令时,对于识别为多分支语句或虚函数调用语句的间接跳转指令的翻译留下了关于该间接跳转指令的目标跳转表的重定位项,所以在步骤S400中把步骤S300中构造目标跳转表地址写入到重定位项中,以在程序运行的时候就可以找到对应的目标跳转表.
一较佳的具体实施方式如下所述。
所述步骤S100和所述步骤S200之间还包括:
步骤S110,将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本地码移到跳转寄存器指令之后。
所述步骤S300的具体实施方式如下所述。
步骤S310,翻译完所述被标记的间接跳转指令后,构建目标跳转表的大
小同源跳转表的大小相同。
步骤S320,判断源跳转表的表项中的跳转地址是否为已被翻译的本地码,如果是,执行步骤S330,否则,执行步骤S340。
步骤S330,将所述已被翻译的本地码的入口地址填入所述目标跳转表对应的表项中。
步骤S340,将所述目标跳转表对应的表项填为所述间接跳转指令的下一条指令的地址。
根据步骤S100中识别的结果,对取源跳转表地址的指令翻译进行修改。
例如,间接跳转指令为:
S1:jmp*table_base(,%index,4)
该间接跳转指令被翻译成跳转到目标跳转表的指令D12、D13和D14,在该指令之前取源跳转表表项内容的指令被翻译成D11。
D11:ld %info,table_base(,%index,4)
D12:s11 %index,%index,2
D13:ld %temp2,table_base_dest(%index)
D14:jr %temp2
由于源跳转表表项存放的内容是源跳转目标PC的值,所以如果目标跳转表中放置的已经是源跳转目标对应的本地码入口地址,该步操作为多余。但是如果目标跳转表里放的不是对应的本地码入口地址,则需要取源跳转目标PC的值,这是因为翻译控制器需要根据该PC完成翻译工作。
由于大部分的指令都已经被翻译完成,所以上述后一种情况出现的可能性较小,因而可以把上述取源跳转表表项内容的指令被翻译生成的指令D11移到跳转到目标跳转表的指令D12、D13和D14之后。
D21:sll %index,%index,2
D22:ld %temp2,table_base_dest(%index)
D23:jr %temp2
D24:ld %info,table_base(,%index,4)
D25:ld %Ret_BT,Ret_BT_Addr
D26:jr %Ret_BT
同时在构造目标跳转表时依据如下规则:如果不存在和源跳转表中源跳转目标对应的本地码,即源跳转目标还未被翻译,则目标跳转表对应项存放间接跳转指令下一条指令的地址,也就是D24指令的地址.按照上述描述的原则构造目标跳转表后,能够省掉对源跳转表的访问,进一步减少访存次数,降低访存开销.
二进制翻译中间接跳转指令的翻译系统如图2所示,包括:
间接跳转指令标识模块100,用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表。
翻译模块200,用于在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项。
目标跳转表构建模块300,用于在翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表。
翻译模块200还用于将构建的所述目标跳转表的地址写入所述预留的重定位项,完成翻译。
较佳的,所述间接跳转指令标识模块100进一步用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是,则对所述间接跳转指令进行标记;获得所述被标记的间接跳转指令的源跳转表的大小,所述源跳转表中记载的各个跳转目标地址,记录计算所述源跳转表索引的指令。
较佳的,翻译模块200在目标跳转表被构建前进一步用于翻译所述计算源跳转表的索引的指令,在索引所述目标跳转表时使用所述索引;将被标记的间接跳转指令翻译为根据所述索引从待构建的所述间接跳转指令的目标跳转表中获得对应表项,并按所述表项的内容进行跳转的指令;为所述目标跳转表预留重定位项。
较佳的,目标跳转表构建模块300进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为跳转到翻译控制器的代码入口地址。
较佳的,所述系统在间接跳转指令标识模块100和翻译模块200之间还包括指令修改模块,用于将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本地码移到跳转寄存器指令之后。
目标跳转表构建模块300进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为所述跳转寄存器指令的下一条指令的地址。
较佳的,翻译模块200还用于对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (12)

1.一种二进制翻译中间接跳转指令的翻译方法,其特征在于,包括:
步骤1,在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;
步骤2,在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;
步骤3,翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;
步骤4,将构建的所述目标跳转表的地址写入所述重定位项。
2.如权利要求1所述的二进制翻译中间接跳转指令的翻译方法,其特征在于,
所述步骤1进一步为,
步骤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还包括,对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译。
7.一种二进制翻译中间接跳转指令的翻译系统,其特征在于,包括:
间接跳转指令标识模块,用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是则进行标记,获得被标记的间接跳转指令的源跳转表;
翻译模块,用于在翻译时,将被标记的间接跳转指令翻译为根据待构建的所述被标记的间接跳转指令的目标跳转表的内容进行跳转的指令,为所述目标跳转表预留重定位项;
目标跳转表构建模块,用于在翻译完所述被标记的间接跳转指令后,根据所述间接跳转指令的源跳转表构建所述间接跳转指令的目标跳转表;
所述翻译模块还用于将构建的所述目标跳转表的地址写入所述预留的重定位项,完成翻译。
8.如权利要求7所述的二进制翻译中间接跳转指令的翻译系统,其特征在于,
所述间接跳转指令标识模块进一步用于在反汇编到间接跳转指令时,根据反汇编出的源指令序列判断所述间接跳转指令是否为多分支语句或虚函数调用,如果是,则对所述间接跳转指令进行标记;获得所述被标记的间接跳转指令的源跳转表的大小,所述源跳转表中记载的各个跳转目标地址,记录计算所述源跳转表索引的指令。
9.如权利要求8所述的二进制翻译中间接跳转指令的翻译系统,其特征在于,
所述翻译模块在所述目标跳转表被构建前进一步用于翻译所述计算源跳转表的索引的指令,在索引所述目标跳转表时使用所述索引;将被标记的间接跳转指令翻译为根据所述索引从待构建的所述间接跳转指令的目标跳转表中获得对应表项,并按所述表项的内容进行跳转的指令;为所述目标跳转表预留重定位项。
10.如权利要求8所述的二进制翻译中间接跳转指令的翻译系统,其特征在于,
所述目标跳转表构建模块进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为跳转到翻译控制器的代码入口地址。
11.如权利要求8所述的二进制翻译中间接跳转指令的翻译系统,其特征在于,
所述系统在所述间接跳转指令标识模块和所述翻译模块之间还包括:
指令修改模块,用于将被标记的间接跳转指令的翻译中取源跳转表表项内容的指令对应生成的本地码移到跳转寄存器指令之后;
所述目标跳转表构建模块进一步用于翻译完所述被标记的间接跳转指令后,构建目标跳转表的大小同源跳转表的大小相同;判断源跳转表的表项中的跳转地址是否已被翻译并生成对应的本地码,如果是,将所述对应的本地码的入口地址填入所述目标跳转表对应的表项中,否则,将所述目标跳转表对应的表项填为所述跳转寄存器指令的下一条指令的地址。
12.如权利要求7所述的二进制翻译中间接跳转指令的翻译系统,其特征在于,
所述翻译模块还用于对于未被标记的间接跳转指令,按查找哈希表的方法进行翻译。
CN 200910237389 2009-11-10 2009-11-10 二进制翻译中间接跳转指令的翻译方法及其系统 Active CN101706734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910237389 CN101706734B (zh) 2009-11-10 2009-11-10 二进制翻译中间接跳转指令的翻译方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910237389 CN101706734B (zh) 2009-11-10 2009-11-10 二进制翻译中间接跳转指令的翻译方法及其系统

Publications (2)

Publication Number Publication Date
CN101706734A true CN101706734A (zh) 2010-05-12
CN101706734B CN101706734B (zh) 2013-08-14

Family

ID=42376960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910237389 Active CN101706734B (zh) 2009-11-10 2009-11-10 二进制翻译中间接跳转指令的翻译方法及其系统

Country Status (1)

Country Link
CN (1) CN101706734B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591698A (zh) * 2011-12-05 2012-07-18 福建二菱电子有限公司 一种单片机反汇编的方法
CN102662631A (zh) * 2012-03-15 2012-09-12 龙芯中科技术有限公司 间接分支指令处理方法和装置
CN103299270A (zh) * 2011-04-29 2013-09-11 北京中天安泰信息科技有限公司 运行时指令重组方法及装置
CN103530184A (zh) * 2013-10-24 2014-01-22 华为技术有限公司 一种在线补丁激活的方法及装置
WO2014043886A1 (en) * 2012-09-21 2014-03-27 Intel Corporation Methods and systems for performing a binary translation
CN103744641A (zh) * 2014-01-23 2014-04-23 龙芯中科技术有限公司 禁止已翻译指令序列执行的方法、装置和虚拟机
CN107015840A (zh) * 2017-03-17 2017-08-04 南京南瑞继保电气有限公司 一种解析器的快速执行方法及快速执行系统
CN107168761A (zh) * 2017-05-19 2017-09-15 南京南瑞继保电气有限公司 一种选择语句优化编译方法
CN109471668A (zh) * 2018-11-20 2019-03-15 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN116501387A (zh) * 2023-06-16 2023-07-28 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100359470C (zh) * 2004-06-30 2008-01-02 中国科学院计算技术研究所 动静结合二进制翻译中静态信息不完备的处理方法及装置
CN100359472C (zh) * 2005-07-01 2008-01-02 中国科学院计算技术研究所 一种二进制翻译中库函数调用的处理方法

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103299270A (zh) * 2011-04-29 2013-09-11 北京中天安泰信息科技有限公司 运行时指令重组方法及装置
CN103299270B (zh) * 2011-04-29 2017-03-08 中天安泰(北京)信息技术有限公司 运行时指令重组方法及装置
CN102591698A (zh) * 2011-12-05 2012-07-18 福建二菱电子有限公司 一种单片机反汇编的方法
CN102591698B (zh) * 2011-12-05 2015-06-24 福建二菱电子有限公司 一种单片机反汇编的方法
CN102662631B (zh) * 2012-03-15 2014-09-10 龙芯中科技术有限公司 间接分支指令处理方法和装置
CN102662631A (zh) * 2012-03-15 2012-09-12 龙芯中科技术有限公司 间接分支指令处理方法和装置
US9928067B2 (en) 2012-09-21 2018-03-27 Intel Corporation Methods and systems for performing a binary translation
WO2014043886A1 (en) * 2012-09-21 2014-03-27 Intel Corporation Methods and systems for performing a binary translation
CN103530184A (zh) * 2013-10-24 2014-01-22 华为技术有限公司 一种在线补丁激活的方法及装置
CN103744641A (zh) * 2014-01-23 2014-04-23 龙芯中科技术有限公司 禁止已翻译指令序列执行的方法、装置和虚拟机
CN103744641B (zh) * 2014-01-23 2016-08-17 龙芯中科技术有限公司 禁止已翻译指令序列执行的方法、装置和虚拟机
CN107015840A (zh) * 2017-03-17 2017-08-04 南京南瑞继保电气有限公司 一种解析器的快速执行方法及快速执行系统
CN107015840B (zh) * 2017-03-17 2020-07-28 南京南瑞继保电气有限公司 一种解析器的快速执行方法及快速执行系统
CN107168761A (zh) * 2017-05-19 2017-09-15 南京南瑞继保电气有限公司 一种选择语句优化编译方法
CN107168761B (zh) * 2017-05-19 2019-10-29 南京南瑞继保电气有限公司 一种选择语句优化编译方法
CN109471668A (zh) * 2018-11-20 2019-03-15 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN109471668B (zh) * 2018-11-20 2021-11-26 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN116501387A (zh) * 2023-06-16 2023-07-28 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质
CN116501387B (zh) * 2023-06-16 2023-09-12 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN101706734B (zh) 2013-08-14

Similar Documents

Publication Publication Date Title
CN101706734B (zh) 二进制翻译中间接跳转指令的翻译方法及其系统
EP2487585B1 (en) Method and device for dynamically loading relocatable file
CN103077064B (zh) 一种解析并执行程序语言方法及解释装置
WO2017067175A1 (zh) 一种加载elf文件的方法、装置、设备和计算机存储介质
CN107506219A (zh) 一种基于Android系统的通用版本升级方法
US20230117105A1 (en) On-demand loading of dynamic scripting language code for reduced memory usage
CN102087609B (zh) 多处理器平台下的动态二进制翻译方法
CN102830975A (zh) 一种汇编语言到高级语言的代码转换方法和装置
CN106648755B (zh) 一种在安卓art环境中动态加载dex的方法及装置
EP2176742A1 (en) Runtime machine supported method level caching
US20220292082A1 (en) Method, apparatus and device for parallel execution of smart contract, and medium
CN101299192A (zh) 一种非对齐访存的处理方法
KR101200083B1 (ko) Risc 프로세서 장치 및 그의 명령어 어드레스의 전환 룩업 방법
CN108984612A (zh) 目标sql语句的获取方法、装置、计算机设备及存储介质
US20090144528A1 (en) Method for running native code across single or multi-core hybrid processor achitecture
CN104865904A (zh) 一种面向多周期运算任务的无扰组态方法
JP2006323844A (ja) ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN112487092B (zh) 一种基于区块链的智能合约调用方法及装置
CN103544151A (zh) linux系统中数据处理的方法及系统
CN101216776A (zh) 一种自动创建编译环境的方法及系统
CN100568224C (zh) 一种翻译网页的方法和系统
JP5536593B2 (ja) 最適化装置、最適化方法およびコンパイラ・プログラム
CN108664238A (zh) 一种解释型脚本语言c-sub的执行方法及装置
CN105242932A (zh) 一种基于delphi工具开发的软件的自动翻译方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant