[发明专利]函数调用和返回的处理方法、二进制翻译方法和系统无效

专利信息
申请号: 200710094328.4 申请日: 2007-11-28
公开(公告)号: CN101452395A 公开(公告)日: 2009-06-10
发明(设计)人: 唐大国;王丽一;漆锋滨;文延华;卿鹏;孙俊 申请(专利权)人: 无锡江南计算技术研究所
主分类号: G06F9/45 分类号: G06F9/45
代理公司: 北京集佳知识产权代理有限公司 代理人: 逯长明
地址: 214083江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 函数 调用 返回 处理 方法 二进制 翻译 系统
【说明书】:

技术领域

本发明涉及二进制翻译,特别是涉及函数调用和返回的处理方法、二进 制翻译方法和系统。

背景技术

二进制翻译是将一种(源)机器上的可执行程序翻译成另一种(目标) 机器上的可执行程序的过程,二进制翻译系统使得已有的大量应用程序可以 直接为新的平台所利用。如图1所示,源机器11的可执行程序111(以下简称 为源程序)通过目标机器12上的二进制翻译系统121,被转换成目标机器的可 执行程序122(以下简称为目标程序)。

函数调用和返回在程序中十分多见,虽然不同的高级语言调用函数的形 式不同,但本质是类似的,都遵循后进先出(LIFO)的原则,即最后被调用 的函数最先返回。因此可以使用栈来实现,例如,

函数调用的一般形式为:

call P              ;调用以P为起始地址的子函数

R:.......          ;call后面的指令是从地址R开始的

二进制翻译系统将函数调用翻译为:

push R              ;将返回地址R保存(push)到栈中

jmp P’             ;通过二进制翻译后,子函数的起始地址为P’

函数返回的一般形式为:

ret

二进制翻译系统将函数返回翻译为:

save scratch registers%eax,%ebx,%flags;保存以下程序用到的寄存器值

pop%eax        ;从栈中弹出(pop)一个元素,即源程序的返回地址R

%eax:=ILtoOLAddress(%eax)    ;将源程序的返回地址R映射到目标程

                                 ;序的返回地址R’

store(Return Target),%eax  ;保存目标程序的返回地址R’

restore scratch registers%eax,%ebx,%flags  ;恢复已保存的寄存器值

jmp(Return_Target)    ;跳到目标程序的返回地址R’去执行

上述二进制翻译系统在翻译返回指令时比较慢,因为不仅要将一条返回 指令翻译成几条目标指令,而且还要完成一些将源程序的地址映射到目标程 序的地址的工作。这样,源程序返回只需要一个时钟周期,而目标程序返回 则需要很多时钟周期。子函数调用和返回在程序中十分多见,因此通过二进 制翻译之后目标程序会明显变慢。

专利号为US6711672的美国专利公开了一种二进制翻译系统的函数调用 和返回的处理方法,在该专利中,源程序的指令称为输入语言(IL)指令, 目标程序的指令称为输出语言(OL)指令,对于每个IL子函数调用,正确的 IL返回地址R被存放到栈中,相应的OL返回地址R’存放到返回目标缓存(RTC, return target cache)中,根据R来计算RTC的索引;执行到OL函数返回时,从 栈顶弹出一个值,根据这个值来计算索引,根据这个索引从RTC中获得一个目 标地址,如果目标地址正确,则从该地址开始执行,否则转到备份返回地址 恢复模块来重新构建OL返回地址。RTC其实就是一个哈希表,根据R来计算 RTC的索引就是一个哈希函数,能够将IL返回地址映射到RTC中。

因此,函数调用:

call P        ;调用以P为起始地址的子函数

R:.......    ;call后面的指令是从地址R开始的

被二进制翻译系统翻译为:

push R             ;将IL返回地址R保存到栈中

store(RTC),R’    ;将OL返回地址R’保存到RTC中

jmp P’            ;跳到子函数的起始地址P’去执行

R’:cmp%eax,R   ;判断是否返回到正确的地址(命中)

jne Miss/Failure;如果不是正确的地址,则跳到备份返回地址恢复模块

restore scatch registers%eax,%ebx,%flags

函数返回ret被二进制翻译系统翻译为:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710094328.4/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top