论文部分内容阅读
计算机体系结构的不断发展,使得代码迁移工作变得尤为重要,在这种背景下,二进制翻译技术应运而生。二进制翻译技术使得在已有的体系结构下生成的可执行文件自动迁移到新的体系结构中成为可能。二进制翻译技术又分为动态二进制翻译与静态二进制翻译,其中动态翻译克服了静态翻译一些缺点,如动态翻译能够解决自修改代码的问题,并可以在软件运行期收集大量的信息,发掘优化机会。
龙芯系列处理器是基于MIPS指令集的国产RISC处理器,目前X86处理器在应用中仍然占据着主导地位,这是因为服务器领域的大量应用都是基于X86架构的,龙芯处理器为了可以广泛地运行服务器类应用,首要任务就是实现与X86架构的兼容;此外,X86架构的桌面应用程序也更加多样化,许多的商业软件都是基于X86架构,所以龙芯处理器要想广泛地运行多样化的桌面应用,也是需要实现对X86兼容的。当然,将源代码重新编译链接成目标架构下的二进制程序是进行移植的最佳方案,但是这种方法对于没有源码或者移植困难的程序是不可行的,这就导致以二进制翻译技术为核心的虚拟机的应用越来越广泛。虚拟机分为用户态模拟和系统态模拟,其中用户态虚拟的手段自身存在一些缺点,如应用程序种类繁多,难以保证模拟的正确性,一旦某个程序有问题就需要重新调试修改模拟器。所以本文采用系统态模拟,以龙芯2F处理器为硬件平台,对开源的虚拟机QEMU进行移植,成功虚拟出一个的X86计算机,并将基于X86架构的操作系统WindowsXP在龙芯2F处理器上运行起来,同时又研究了QEMU中冗余指令的删除优化技术,采用代码活性分析方法来降低代码膨胀度,提高执行效率。