[发明专利]函数调用和返回的处理方法、二进制翻译方法和系统无效
申请号: | 200710094328.4 | 申请日: | 2007-11-28 |
公开(公告)号: | CN101452395A | 公开(公告)日: | 2009-06-10 |
发明(设计)人: | 唐大国;王丽一;漆锋滨;文延华;卿鹏;孙俊 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 逯长明 |
地址: | 214083江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 返回 处理 方法 二进制 翻译 系统 | ||
1.一种函数调用和返回的处理方法,其特征在于,包括:
将源程序的函数调用的返回地址作为假指令的指令代码保存,所述假指 令为插入在目标程序的函数调用指令之后的指令;
在目标程序的函数调用开始,将所述假指令的地址保存到栈中;
在目标程序的函数调用结束,将栈顶保存的地址取出,在所述从栈顶取 出的地址的值等于所述源程序的函数调用的返回地址时,跳转到所述假指令 后,其中,在第一次跳转到所述假指令后,跳转到直接跳转指令控制中心, 所述直接跳转指令控制中心用于将跳转到直接跳转指令控制中心的指令修改 为跳转到目标程序的函数调用的返回地址的指令,以在以后各次跳转到所述 假指令后,跳转到目标程序的函数调用的返回地址。
2.根据权利要求1所述的函数调用和返回的处理方法,其特征在于,在所 述从栈顶取出的地址的值等于所述源程序的函数调用的返回地址时,跳转到 所述假指令后包括:
将所述从栈顶取出的地址的值载入;
将所述从栈顶取出的地址的值与所述源程序的函数调用的返回地址进行 比较;
若比较结果为不相等则跳转到间接跳转指令控制中心,由所述间接跳转 指令控制中心帮助跳转到目标程序的函数调用的返回地址;
若比较结果为相等则跳转到所述假指令后。
3.一种函数调用和返回的处理方法,其特征在于,包括:将源程序翻译成 目标程序的二进制翻译步骤和执行所述目标程序的步骤,所述二进制翻译步 骤包括:
将源程序的函数调用指令翻译成对应的目标程序的函数调用指令;
将源程序的函数调用的返回地址作为假指令插入在所述目标程序的函数 调用指令之后,并在所述假指令后,插入跳转到直接跳转指令控制中心的指 令,所述直接跳转指令控制中心用于将跳转到直接跳转指令控制中心的指令 修改为跳转到目标程序的函数调用的返回地址的指令;
在目标程序的函数调用开始,插入将所述假指令的地址保存到栈中的指 令;
在目标程序的函数调用结束,插入将栈顶保存的地址取出的指令、判断 所述从栈顶取出的地址的值是否等于所述源程序的函数调用的返回地址的指 令、和在所述从栈顶取出的地址的值等于所述源程序的函数调用的返回地址 时跳转到所述假指令后的指令。
4.根据权利要求3所述的函数调用和返回的处理方法,其特征在于,所述 执行所述目标程序的步骤包括:在第一次执行所述直接跳转指令控制中心的 指令时,将所述跳转到直接跳转指令控制中心的指令修改为跳转到目标程序 的函数调用的返回地址的指令。
5.根据权利要求3所述的函数调用和返回的处理方法,其特征在于,所述 插入判断所述从栈顶取出的地址的值是否等于所述源程序的函数调用的返回 地址的指令包括:
插入将所述从栈顶取出的地址的值载入的指令;
插入将所述从栈顶取出的地址的值与所述源程序的函数调用的返回地址 进行比较的指令;
插入在所述从栈顶取出的地址的值与所述源程序的函数调用的返回地址 不相等时跳转到间接跳转指令控制中心的指令,以在所述从栈顶取出的地址 的值与所述源程序的函数调用的返回地址不相等时,由所述间接跳转指令控 制中心帮助跳转到目标程序的函数调用的返回地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710094328.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:粗、细纤维混纺纱
- 下一篇:瓦楞纸箱的二次压痕装置