-
公开(公告)号:CN100359471C
公开(公告)日:2008-01-02
申请号:CN200410081020.2
申请日:2004-09-30
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中的库函数调用处理方法,包括在目标机中用内存模拟原系统的寄存器和堆栈;应用目标机本地的约定进行传参和返回值处理,依次对原系统二进制程序中的每个基本块进行处理。本发明通过用目标机本地的约定进行传参和返回值处理,而不是去模拟原机器的调用约定,省去了将参数压入模拟原系统的模拟堆栈或寄存器,然后又从堆栈或寄存器中取出放入到目标机传参寄存器或堆栈中过程中频繁对内存的操作,提高了程序执行的效率,进而提高了系统翻译效率,提高了系统性能。
-
公开(公告)号:CN100377088C
公开(公告)日:2008-03-26
申请号:CN200510051448.7
申请日:2005-03-04
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中对局部变量识别和提升的方法包括以下步骤:a、对翻译单元进行条件判别,判断在此翻译单元内能否进行局部变量的提升;b、依次对可处理翻译单元的每个基本块进行处理,对每条指令的局部变量进行识别;c、将b步骤中识别出来的局部变量进行提升,将识别出来的信息传播到整个翻译单元,并在必要的时候进行同步;本发明克服现有二进制翻译技术中局部变量不能和其他内存操作数区别对待的缺陷,通过对局部变量识别和提升,提高翻译质量和效果,从而提高二进制翻译的性能。
-
公开(公告)号:CN1755631A
公开(公告)日:2006-04-05
申请号:CN200410081020.2
申请日:2004-09-30
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中的库函数调用处理方法,包括在目标机中用内存模拟原系统的寄存器和堆栈;应用目标机本地的约定进行传参和返回值处理,依次对原系统二进制程序中的每个基本块进行处理。本发明通过用目标机本地的约定进行传参和返回值处理,而不是去模拟原机器的调用约定,省去了将参数压入模拟原系统的模拟堆栈或寄存器,然后又从堆栈或寄存器中取出放入到目标机传参寄存器或堆栈中过程中频繁对内存的操作,提高了程序执行的效率,进而提高了系统翻译效率,提高了系统性能。
-
公开(公告)号:CN100377089C
公开(公告)日:2008-03-26
申请号:CN200510085509.1
申请日:2005-07-22
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中经由跳转表的多目标分支语句的识别方法,包括:1)、把要识别的语义转化为语义图,该语义图作为模板图;2)、选择待识别语义的代码片段;3)将代码片段按照语义构建语义图;4)将步骤3)构建出的语义图和步骤1)得到的模板图做匹配,若匹配成功,则识别出语义,执行下一步,否则所选择的代码片段语义识别失败;5)获取跳转表的地址和大小,进而得到表项中记录的分支目标地址,标记其为有效代码。本发明的优点在于:扩大了二进制翻译中静态翻译阶段的翻译覆盖率,提高了代码的执行效率;可以应用于多种平台下的二进制文件分析中,适用范围广;在解决识别经由跳转表的多目标分支语句问题上算法简练,易于实现。
-
公开(公告)号:CN100359470C
公开(公告)日:2008-01-02
申请号:CN200410009287.0
申请日:2004-06-30
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了动静结合二进制翻译中静态信息不完备的处理方法及装置,通过预留必要的入口,由动态翻译执行器进行即时翻译,并通过和预留入口相链接的方式发挥系统的性能。增加设置入口和采用即时翻译,克服现有技术动态执行中长时间无法返回静态所生成的本地码的问题,以及动态是单纯采用解释执行效率低的问题,提高代码质量和系统整体性能。
-
公开(公告)号:CN100345117C
公开(公告)日:2007-10-24
申请号:CN200410074532.6
申请日:2004-09-07
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中对X86中浮点运算的处理方法,包括以下步骤:在运行时环境中设置一个浮点栈,用于仿真X86中的物理浮点栈;通过浮点寄存器映射的处理和归一方法依次对源二进制程序中的每个基本块进行处理。本发明通过用目标机器的寄存器来映射X86的源寄存器,保证了X86的浮点运算在目标机器上也是由寄存器来实现,确保运算的效率;采用归一的方法,确保每个基本块的入口满足每次top的值相同的假设,从本质上来讲,将Intel的运行过程中对投机假设的判别,用归一的方法进行了保证。本发明使得基本块不需要每次都去判别是否投机假设成立,省去了这一部分开销,提高了系统翻译效率,从而提高了系统性能。
-
公开(公告)号:CN1332308C
公开(公告)日:2007-08-15
申请号:CN200410069182.4
申请日:2004-09-10
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明涉及一种动态二进制翻译中的翻译方法,包括以下步骤:统计寻找翻译代码中频繁出现并影响翻译质量的翻译代码片断;找出上述代码片断中的指令模式;确定指令模式的翻译对应关系;扫描待翻译的基本块,寻找所述指令模式,找到,匹配成功,给所述指令模式做标记,否则,匹配未成功,结束扫描;翻译基本块,翻译时遇到标记的指令时,按照所述指令模式的翻译对应关系翻译,否则,按照常规翻译。本发明通过指令模式匹配来翻译基本块,降低代码重复优化导致的系统开销,提高翻译质量和效果,从而提高了动态二进制翻译的性能。
-
公开(公告)号:CN1892602A
公开(公告)日:2007-01-10
申请号:CN200510080339.8
申请日:2005-07-01
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中库函数调用的处理方法,尽可能地对源X86二进制程序中的库函数调用进行识别和提升;对于可包装库函数,用目标机本地的约定进行传参和返回值处理,这样省去了对X86参数压栈和从堆栈中取返回值的模拟,避免了频繁的内存操作,使用本地的库函数,也不会因为翻译PLT、fixup函数、库函数的源二进制代码造成代码膨胀导致的性能损失,提高了程序执行的效率;对于PLT短路库函数,虽然继续维护X86模拟堆栈,但是控制流不进入PLT和动态链接器的fixup函数,即不翻译PLT和动态链接器的fixup函数的源二进制代码,避免了因为翻译PLT、fixup函数造成代码膨胀导致的性能损失,控制流直接进入库函数的本地码,也能够较好地提高程序执行的效率。
-
公开(公告)号:CN1746850A
公开(公告)日:2006-03-15
申请号:CN200410074532.6
申请日:2004-09-07
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中对X86中浮点运算的处理方法,包括以下步骤:在运行时环境中设置一个浮点栈,用于仿真X86中的物理浮点栈;通过浮点寄存器映射的处理和归一方法依次对源二进制程序中的每个基本块进行处理。本发明通过用目标机器的寄存器来映射X86的源寄存器,保证了X86的浮点运算在目标机器上也是由寄存器来实现,确保运算的效率;采用归一的方法,确保每个基本块的入口满足每次top的值相同的假设,从本质上来讲,将Intel的运行过程中对投机假设的判别,用归一的方法进行了保证。本发明使得基本块不需要每次都去判别是否投机假设成立,省去了这一部分开销,提高了系统翻译效率,从而提高了系统性能。
-
公开(公告)号:CN1900910A
公开(公告)日:2007-01-24
申请号:CN200510085509.1
申请日:2005-07-22
Applicant: 中国科学院计算技术研究所
IPC: G06F9/45
Abstract: 本发明公开了一种二进制翻译中经由跳转表的多目标分支语句的识别方法,包括:1)把要识别的语义转化为语义图,该语义图作为模板图;2)选择待识别语义的代码片段;3)将代码片段按照语义构建语义图;4)将步骤3)构建出的语义图和步骤1)得到的模板图做匹配,若匹配成功,则识别出语义,执行下一步,否则所选择的代码片段语义识别失败;5)获取跳转表的地址和大小,进而得到表项中记录的分支目标地址,标记其为有效代码。本发明的优点在于:扩大了二进制翻译中静态翻译阶段的翻译覆盖率,提高了代码的执行效率;可以应用于多种平台下的二进制文件分析中,适用范围广;在解决识别经由跳转表的多目标分支语句问题上算法简练,易于实现。
-
-
-
-
-
-
-
-
-