论文部分内容阅读
二进制翻译技术是解决软件移值问题的重要手段,在遗产代码移植、程序优化、系统安全等方面都有着重要的意义,已经成为现代编译技术研究热点之一。由于静态二进制翻译技术在理论和实践上都尚未成熟,当前关于二进制翻译技术的研究主要围绕动态和动静结合的路线展开,纯静态二进制翻译技术亟待提高。 本文首先综述了二进制翻译的研究现状及其基本方法,然后分析了静态二进制翻译技术的传统难点以及由新的体系结构IA-64带来的新的困难,在对IA-64体系结构软件规范的分析基础之上,探讨了如何将软件规范应用到静态二进制翻译中,并以我们设计实现的静态二进制翻译系统ITA为实验平台,提出了若干算法和方法来解决静态二进制翻译中同函数识别和恢复相关的难点问题。测试实验证明,通过在静态二进制翻译过程中利用软件规范,能够较好地解决静态二进制翻译的若干关键问题。 本文的主要贡献如下: 1.分析了IA-64体系结构及编译技术方面的新特性,研究了这些新特性对静态二进制翻译带来的影响。 2.实现了静态二进制翻译系统ITA,对静态二进制翻译方法进行了深入地探索,为进一步研究二进制翻译技术搭建了有用的实验平台。 3.提出了ELF64文件主入口点定位算法。该算法基于ELF64文件的加载机制,通过对_start例程及_libc_start_main函数的参数约定分析,不需要查找符号表,即可自动分析和确定ELF64可执行文件的main()函数入口。 4.提出了IA-64动态链接库函数调用恢复算法。该算法从IA-64的动态链接机制入手,通过分析ELF64二进制文件中的多个段之间的联系,结合函数调用地址来识别所调用库函数的函数名。 5.提出了一种过程识别算法。该算法根据惰性执行原理,推迟过程识别时机,解决了icc编译器生成的二进制代码中某些过程识别与恢复问题。 6.提出了最大化参数列表方法以恢复用户自定义可变参数列表函数,解决了某些用户自定义可变参数列表函数的静态识别与恢复问题。 7.研究了数学函数内嵌优化的翻译问题,设计并实现了一种基于内嵌代码识别路径的自动恢复算法。测试表明算法能够解决对应的函数识别与恢复问题。