[发明专利]函数调用和返回的处理方法、二进制翻译方法和系统无效
申请号: | 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被二进制翻译系统翻译为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710094328.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:粗、细纤维混纺纱
- 下一篇:瓦楞纸箱的二次压痕装置