[发明专利]利用中间指令集的二进制翻译方法有效
申请号: | 200710047697.8 | 申请日: | 2007-11-01 |
公开(公告)号: | CN101145109A | 公开(公告)日: | 2008-03-19 |
发明(设计)人: | 管海兵;梁阿磊;包云程 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海交达专利事务所 | 代理人: | 毛翠莹 |
地址: | 200240*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 利用 中间 指令 二进制 翻译 方法 | ||
技术领域
本发明涉及一种利用中间指令集的二进制翻译方法,利用一套用于二进制翻译的中间指令集,可以将一种物理机器指令翻译为另一种物理机器指令。本发明属于二进制翻译技术领域。
背景技术
二进制翻译是一种仿真技术,涉及“源”(Source)与“目标”(Target)两个机器平台,因此二进制翻译器与机器平台有强烈的依赖关系,这对基础平台的可移植性提出了更高的要求,可重定向性就是其中要求之一。可重定向性是指基础平台对多种源机器与目标机器的支持,并且能够很容易地移植到新的机器平台,中间指令有效地隔开了源机器与目标机器,是实现可重定性的关键。在二进制翻译器中,如果要在x86,ARM,MIPS三种机器代码之间进行翻译,需要实现3×3=9种翻译过程,如果在“源”与“目标”两个机器平台放入一种中间指令作为中间层次,只需要实现3+3=6种翻译过程,因此中间指令大大减小了二进制翻译器支持多种源与目标机器平台的复杂性。
中间指令是一种中间语言,中间语言最初来自于编译器,编译器一般首先将程序源代码转换成一种更适合于优化分析的形式,即在生成目标机器代码前的中间步骤。在传统的静态编译器中,编译器一般采用一种或多种与机器无关的中间语言作为中间层次,大部分的代码转化与优化工作都针对该中间语言,从而使编译器的大部分模块能够与机器无关,在编译过程中从一种中间语言转换至另一种形式,以在不同的阶段适合于不同的需求,但增加中间步骤的级数也意味着增加额外的编译开销。在动态二进制翻译器或动态编译器等动态的运行时系统中,运行时的编译开销直接影响了程序的运行时性能,因此动态二进制翻译器一般不值得采用多重的中间形式。
如果在二进制翻译中使用现有的中间语言,则需要考虑它对新的使用环境的适应性问题——既包括前端语言也包括后端语言;要考虑实现它所产生的移植代价与重用现有设计和代码所固有的开销之间的权衡;现有的中间语言都针对编译器设计,其源语言为一种高级程序设计语言,目标语言为机器语言,而在二进制翻译中,源程序和目标语言均为机器语言,因此中间语言应该是机器级语言,因此现有中间语言并不完全适合于二进制翻译的应用环境。
因此需要发明一套全新的二进制中间指令集,用中间指令集准确表达各种体系结构机器的指令,使之可以应用于各种二进制翻译器。
发明内容
本发明的目的在于针对现有技术的不足,提供一种利用中间指令集的二进制翻译方法,解决二进制翻译器对各种新的应用环境的适应性问题,减小二进制翻译器支持多源与多目标机器平台的复杂性,实现二进制翻译器可重定向性。
为实现这一目的,本发明针对二进制翻译器的特点设计了一套中间指令集,作为从一种机器指令翻译到另一种机器指令时的中间层,有效隔开源机器与目标机器。所述中间指令集是一种低层次的虚拟精简机器指令系统,它具有无穷多个32位寄存器、Load-Store风格体系结构、单一的偏移寻址模式。中间指令的设计遵循计算机系统设计中的一条基本原则:使执行频繁的部分保持高效,使其他的部分保持正确。中间指令集包含了各种机器指令集中一些最常用的指令,剩下相对不常用的源机器指令可以用多种中间指令模拟,也可以利用CALL中间指令,即C函数模拟。
本发明的中间指令集包含与主流机器指令集(包括RISC与CISC)相匹配的基本指令,可分为寄存器状态映射指令、内存访问指令、数据移动指令、运算指令、控制转移、和特殊指令共六类指令。在将机器指令翻译为中间指令时,将一些最常用的源机器指令直接映射到某条中间指令,而对于一些不常用源机器指令可以翻译成多条中间指令或者用C函数模拟。
本发明采用中间指令集进行二进制翻译的方法具体步骤如下:
1.映射源机器寄存器到虚拟寄存器
定义中间指令集具有无穷多个32位寄存器,称虚拟寄存器,记作vn,其中v0永远代表零值。首先分析源机器指令中将要使用的源机器寄存器,然后通过寄存器状态映射指令GET s,v、FGETS s,v和FGETD s,v,将源机器寄存器映射至虚拟寄存器,将源机器指令对源机器寄存器的状态改变对应到中间指令对虚拟寄存器的改变,从而建立源机器寄存器到虚拟寄存器的映射关系。
2.将源机器指令翻译为中间指令
将最常用源机器指令直接映射到某条中间指令,而对于不常用源机器指令则翻译成多条中间指令或者用C函数模拟。其中,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710047697.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:蠕动式微小管道机器人
- 下一篇:一种数据显示方法及数据显示系统以及相关设备