[发明专利]一种二进制翻译中库函数调用的处理方法有效
申请号: | 200510080339.8 | 申请日: | 2005-07-01 |
公开(公告)号: | CN1892602A | 公开(公告)日: | 2007-01-10 |
发明(设计)人: | 杨浩;唐锋;谢海斌;武成岗;张兆庆;冯晓兵;崔慧敏;陈龙 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京泛华伟业知识产权代理有限公司 | 代理人: | 高存秀 |
地址: | 100080北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种二进制翻译中库函数调用的处理方法,尽可能地对源X86二进制程序中的库函数调用进行识别和提升;对于可包装库函数,用目标机本地的约定进行传参和返回值处理,这样省去了对X86参数压栈和从堆栈中取返回值的模拟,避免了频繁的内存操作,使用本地的库函数,也不会因为翻译PLT、fixup函数、库函数的源二进制代码造成代码膨胀导致的性能损失,提高了程序执行的效率;对于PLT短路库函数,虽然继续维护X86模拟堆栈,但是控制流不进入PLT和动态链接器的fixup函数,即不翻译PLT和动态链接器的fixup函数的源二进制代码,避免了因为翻译PLT、fixup函数造成代码膨胀导致的性能损失,控制流直接进入库函数的本地码,也能够较好地提高程序执行的效率。 | ||
搜索关键词: | 一种 二进制 翻译 库函数 调用 处理 方法 | ||
【主权项】:
1、一种二进制翻译中库函数调用的处理方法,包括以下步骤:a.建立库函数分类查询表,在表中,对可包装库函数和PLT短路库函数做分类;b.利用动静结合二进制翻译系统中的静态模块对主文件和它涉及的共享库中的库函数进行翻译;c.在控制转移到动态翻译之前,把静态翻译好的本地码装入内存,这部分本地 码包括被执行主文件和共享库中的库函数两部分;d.在目标机中用内存模拟X86的寄存器和堆栈;e.依次对X86二进制程序中的每个基本块进行处理,取X86二进制程序中的第一个基本块;f.判别基本块的结束指令的指令类型是否为CALL指令,如果是,则进行步骤g,如果否,则进行步骤h;g.调用CALL指令处理模块处理CALL指令;h.判断是否所有的基本块都处理了,如果是,则结束;如果否,则进行步骤i;i.取下一个基本块,然后进行步骤f。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200510080339.8/,转载请声明来源钻瓜专利网。
- 上一篇:聚醚醚酮三层复合滑动轴承
- 下一篇:双电容称重传感器