二进制翻译中系统库函数分类处理方法.docVIP

二进制翻译中系统库函数分类处理方法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二进制翻译中系统库函数分类处理方法

二进制翻译中系统库函数的分类处理方法   摘要:如何处理库函数调用问题直接关系到二进制翻译系统的性能。提出了一种系统库函数的分类处理方法,成功地解决了二进制翻译系统中的库函数调用处理问题。   关键词:二进制翻译; 系统库函数; 普通库函数; 特殊库函数   中图分类号:TP311文献标志码:A   文章编号:1001-3695(2008)04-1057-03      二进制翻译是代码移植的重要方法之一,可以将一种指令集体系结构(instruction set architecture,ISA)上的代码翻译到另一种ISA上运行。二进制翻译的目的不仅仅是模拟源ISA,更高的目标是翻译产生的代码在目标ISA上运行的速度等同甚至超过源ISA的原有代码。目前,二进制翻译成为解决软件移植问题的一个研究热点。众所周知,新开发的处理器如果其ISA不向前兼容,则会失去现有软件的支持,影响其推广和应用。这就迫使设计者使用宝贵的芯片空间来兼容老处理器,这样既增加新处理器的复杂度和功耗,影响其主频的提高,又阻碍了处理器的发展。二进制翻译技术为新旧处理器架起了一座桥梁,将现有的软件移植到新开发处理器上执行,使得新处理器摆脱向前兼容的约束。??   二进制翻译可分为系统级翻译和应用程序级翻译。对于系统级翻译,操作系统运行在它之上,它翻译整个系统,包括操作系统,它需要考虑源机器和目标机器的各种特性,如硬件中断、异常、端口映射等,比较复杂,并且需要硬件提供支持,否则效率将会严重下降;而对于应用程序级翻译,它运行在目标机器操作系统之上,只需要翻译用户级应用程序,它的性能和实用性都优于系统级翻译,所以很多二进制翻译系统均采用应用程序级翻译,并且源和目标平台的操作系统都是同一类操作系统(如类UNIX操作系统)。因此,对于这类二进制翻译系统,如何处理库函数调用问题直接关系到二进制翻译系统的性能,库函数调用处理得好,就能提高源二进制程序在目标机器上运行的速度;反之,则影响源二进制程序在目标机器上运行的速度。??   目前,国内外许多研究机构都开展了二进制翻译和动态优化的研究,如DEC公司开发的FX!32[1]、澳大利亚Queensland大学开发的UQBT[2]和UQDBT[3]、Sun Microsystems实验室开发的Walkabout[4]、维也纳技术大学开发的Bintrans[5]等。其中,对系统库函数处理比较典型的是DEC公司开发的FX!32和Queensland大学开发的UQBT。FX!32采用模拟源系统传参和返回值约定的方法对系统库函数调用进行处理,存在一定的效率问题;UQBT对所有函数调用进行提升,但是对于那些无法提升的函数,它没有进行任何处理,因此其适用面很窄。??   本文提出了一种系统库函数分类处理方法:对于普通库函数,针对FX!32对系统库函数调用处理存在的效率下降的问题和UQBT对系统库函数调用处理存在的适用面窄的问题,识别和提升源系统二进制程序的普通库函数调用,避免在处理库函数调用时模拟源系统的调用约定,而是用目标机本地函数调用约定来处理库函数调用,从而达到提高程序执行效率的目的。对于源系统二进制程序的特殊库函数,本文用模拟源系统传参和返回值约定的方法对其进行处理,以保证处理的正确性。??      1相关工作??      FX!32是DEC公司开发的轮廓制导(profile-directed)的二进制翻译器,目的是为了能将运行在(x86,WinNT)系统下的应用程序运行在(Alpha,WinNT)系统下。它结合静态翻译和动态模拟,具有正确性、高效而且透明的特点。并通过对本地系统库函数包装(jacket),使得x86的应用程序可以调用Alpha本地的系统库函数。具体过程是每一个jacket都包含一条非法的x86指令,通知解释器切换到正确的Alpha本地代码。大多数jacket的基本操作是根据Alpha的调用约定,将x86栈中的参数移到对应的Alpha寄存器。一些jacket还要对被调程序语义进行修改,如系统库函数GetSystemDirector的jacket返回的是x86的系统路径,而不是实际的系统路径,这样x86的应用程序才不会覆盖本地的Alpha动态链接库。这种方法可以准确地处理x86程序对系统库函数调用的问题,但其最大的缺陷就是效率下降问题。由于需要模拟x86的堆栈,在进行系统库函数调用之前,需要将参数压入到模拟堆栈中;之后又要将参数取出放入到目标机的传参寄存器和堆栈中,显然将参数压入到模拟堆栈中完全是多余的,影响程序的执行效率。??   UQBT是Queensland大学开发的可变源和可变目标的二进制翻译框架。它使用到达定值分析和活跃性分析来恢复过程调用的参数和返回值的信息,使用过程抽象语言识

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档