二进制翻译中的字节序调整方法.pdf

上传人:Y948****062 文档编号:5780991 上传时间:2019-03-19 格式:PDF 页数:6 大小:364.05KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010300018.5

申请日:

2010.01.04

公开号:

CN101763242A

公开日:

2010.06.30

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 7/76申请日:20100104授权公告日:20110629终止日期:20180104|||授权|||实质审查的生效IPC(主分类):G06F 7/76申请日:20100104|||公开

IPC分类号:

G06F7/76; G06F9/30

主分类号:

G06F7/76

申请人:

上海交通大学

发明人:

管海兵; 梁阿磊; 朱彤; 刘博; 杨辉兵

地址:

200240 上海市闵行区东川路800号

优先权:

专利代理机构:

上海交达专利事务所 31201

代理人:

王锡麟;王桂忠

PDF下载: PDF下载
内容摘要

本发明公开了一种计算机技术领域的二进制翻译中的字节序调整方法,包括以下步骤:动态二进制翻译系统的执行引擎加载源程序可执行映像,将各个程序段的内容进行字节序调整,同时调整加载进来的参数个数、参数内容和环境变量;修改表示内存访问的中间指令的有效地址,使修改后的有效地址的表达符合源程序内存访问指令的语义,以在内存中加载或存储正确的数据;前端解码器将源程序指令翻译为中间指令,然后将生成的中间指令加入到构建的中间指令基本块中,直到发生直接跳转或系统调用,则结束当前基本块的构造,并将该基本块发送到后端执行。本发明采用修改内存地址的方法避免了内存数据字节顺序的搬移,高效准确,在二进制翻译领域具有通用性。

权利要求书

权利要求书
1.  一种二进制翻译中的字节序调整方法,其特征在于,包括以下步骤:
第一步,动态二进制翻译系统的执行引擎加载源程序可执行映像,将各个程序段的内容进行字节序调整,同时调整加载进来的参数个数、参数内容和环境变量;
第二步,修改表示内存访问的中间指令的有效地址,使修改后的有效地址的表达符合源程序内存访问指令的语义,以在内存中加载或存储正确的数据;
第三步,前端解码器将源程序指令翻译为中间指令,然后将生成的中间指令加入到构建的中间指令基本块中,直到发生直接跳转或系统调用,则结束当前基本块的构造,并将该基本块发送到后端执行。

2.  根据权利要求1所述的二进制翻译中的字节序调整方法,其特征是,所述的动态二进制翻译系统包括:前端解码器、中端优化器、后端编码器和中间指令集,其中:前端解码器与中间指令集相连传输源程序,中间指令集和中端优化器相连传输中间代码信息,中端优化器与后端编码器相连传输优化后的中间代码信息,后端编码器输出编码后的代码信息。

3.  根据权利要求2所述的二进制翻译中的字节序调整方法,其特征是,所述的动态二进制翻译系统是昆士兰大学的UQDBT系统,或者是弗吉尼亚大学的strata系统,或者是上海交通大学的CrossBit系统。

4.  根据权利要求1所述的二进制翻译中的字节序调整方法,其特征是,所述的修改后的有效地址等于,内存中数据的最高地址与数据的最低地址的和,减去访存指令操作的字节数与源程序要访问的有效地址的和。

5.  根据权利要求4所述的二进制翻译中的字节序调整方法,其特征是,所述的修改后的有效地址适用于地址以字为单位进行分配的体系结构,并且存储器访问都是对齐的,即:半字从双字节的边界加载和存储,字从四字节的边界加载和存储,根据表示内存访问的中间指令的参数求出该访存指令访问的有效地址,然后更新有效地址以完成中间指令修改,具体过程为:
1)如果访问的是字节数据,将有效地址和4做求模运算得i,如果i为0,则将该有效地址加3;如果i为1,则将该有效地址加1;如果i为2,则将该有效地址减1;如果i为3,则将该有效地址减3;
2)如果访问的是半字数据,将有效地址和4做求模运算得i,如果i为0,则将该有效地址加2;如果i为2,则将该有效地址减2;
3)如果访问的是字数据,无需做地址转换。

说明书

说明书二进制翻译中的字节序调整方法
技术领域
本发明涉及的是一种计算机技术领域的方法,具体是一种二进制翻译中的字节序调整方法。
背景技术
动态二进制翻译技术是进程级虚拟机领域中重要的组成部分,它将对应源机器平台的二进制代码动态翻译为可在目标机器平台上运行的二进制代码,是解决遗留代码和提高软件平台适应性的一种有效手段,为软件移植和改善系统性能提供了途径。
字节序是计算机体系结构的一个基本属性,是计算机处理数据时对内存中多字节数据的高位和低位进行判定的方法。字节序有两种:大端字节序(Big Endian)和小端字节序(Little Endian)。Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。而Little-Endian则正好相反,低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。典型的大端平台包括PowerPC和SPARC,而小端平台的应用则更广泛些,包括X86,MIPS以及ARM等。动态二进制翻译中的源机器平台和目标机器平台的字节序往往是不同的,这时对同一条指令,它们的“理解”就变成相反的了。要使源机器平台的程序能够正确地在目标机器平台上执行,就需要在翻译的过程中对字节序进行调整。
目前在动态二进制翻译领域中解决字节序调整的方法并不多,主要的思想就是通过修改访存指令(Load和Store指令)的结果,使其符合目标机器平台的字节序。其中最典型的一种方法就是Byte Swapping(字节翻转):将每次读取或写入内存的数据都做一次字节翻转(byte swap),即翻转数据内部的字节顺序。有些处理器提供了一些特性,以简化ByteSwapping的过程。比如,Intel公司的80486及其向上的处理器提供了bswap这条指令来处理“跨字节序”(Cross-endian)的问题。
还有少数处理器,如IBM公司的PowerPC处理器提供了lwbrx,lhbrx,swbrx,shbrx等特殊的load-store(加载-存储)指令,这些指令用相反的字节序来访问内存,从而避免了上述的Byte Swapping过程。例如:lwbrx RT,RA,RB这条指令就是从地址(RA|0)+(RB)处装载一个字的数据到寄存器RT,字的0:7位装载到RT的24:31位,字的8:15位装载到RT的16:23位,字的16:23位装载到RT的8:15位,字的24:31位装载到RT的0:7位。
经过对现有文献的检索发现,美国专利号为:5867690,公开时间:1999年2月2日,名称:  Apparatus For Converting Data Between Different Endian Formats And SystemAnd Method Employing Same,该技术提供了一种在不同字节序系统之间转换数据的方法及其装置,其在处理器和存储设备之间实现了一个Byte Swapping Device(字节翻转设备),使得处理器能够处理存储设备中字节序与其不同的数据。但是,尽管是硬件的实现,上述技术还是需要搬移数据的内部字节顺序,而逻辑单元也较为繁琐,所以这个搬移的开销是非常大的。对于那些没有硬件体系结构支持的处理器来说,Byte Swapping的开销则更为巨大,对系统性能有较大的制约。
发明内容
本发明的目的在于克服现有技术的上述不足,提供了一种二进制翻译中的字节序调整方法。本发明基于中间指令来调整字节序,既能使源机器平台的程序能够正确地在目标机器平台上执行,又能提高跨平台翻译的性能。
本发明是通过以下技术方案实现的,包括以下步骤:
第一步,动态二进制翻译系统的执行引擎加载源程序可执行映像,将各个程序段的内容进行字节序调整,同时调整加载进来的参数个数、参数内容和环境变量。
所述的动态二进制翻译系统包括:前端解码器(Front-End)、中端优化器(Middle-End)、后端编码器(Back-End)和中间指令集,其中:前端解码器与中间指令集相连传输源程序,中间指令集和中端优化器相连传输中间代码信息,中端优化器与后端编码器相连传输优化后的中间代码信息,后端编码器输出编码后的代码信息。
所述的动态二进制翻译系统是昆士兰大学的UQDBT系统,或者是弗吉尼亚大学的strata系统,或者是上海交通大学的CrossBit系统。
第二步,修改表示内存访问的中间指令的有效地址,使修改后的有效地址的表达符合源程序内存访问指令的语义,以在内存中加载或存储正确的数据。
所述的修改后的有效地址等于,内存中数据的最高地址与数据的最低地址的和,减去访存指令操作的字节数与源程序要访问的有效地址的和。
所述的修改后的有效地址适用于地址以字为单位进行分配的体系结构,并且存储器访问都是对齐的,即:半字从双字节的边界加载和存储,字从四字节的边界加载和存储,根据表示内存访问的中间指令的参数求出该访存指令访问的有效地址,然后更新有效地址以完成中间指令的修改,具体过程为:
1)如果访问的是字节数据,将有效地址和4做求模运算得i,如果i为0,则将该有效地址加3;如果i为1,则将该有效地址加1;如果i为2,则将该有效地址减1;如果i为3,则将该有效地址减3;
2)如果访问的是半字数据,将有效地址和4做求模运算得i,如果i为0,则将该有效地址加2;如果i为2,则将该有效地址减2;
3)如果访问的是字数据,无需做地址转换。
第三步,前端解码器将源程序指令翻译为中间指令,然后将生成的中间指令加入到构建的中间指令基本块中,直到发生直接跳转或系统调用,则结束当前基本块的构造,并将该基本块发送到后端执行。
与现有技术相比,本发明的有益效果是:通过修改访存指令的有效地址,无需搬移数据内部字节顺序,完成不同字节序平台之间的程序翻译,并且获得很好的性能提升。
具体实施方式
以下对本发明的方法进一步描述:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例
本实施例用于对LD指令进行字节序调整,包括步骤如下:
第一步,动态二进制翻译系统的执行引擎加载源程序可执行映像,将各个程序段的内容进行字节序调整,同时调整加载进来的参数个数、参数内容和环境变量。
所述的动态二进制翻译系统是昆士兰大学的UQDBT系统,或者是弗吉尼亚大学的strata系统,或者是上海交通大学的CrossBit系统,其中:UQDBT系统参见发表于《Proceedingsof the ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization(美国计算机协会SIGPALN组织关于动态和自适应编译与优化的附属会议)》上的“Machine-Adaptable Dynamic Binary Translation(可自适应机器的动态二进制翻译)”文献,或者是UQDBT系统项目的主页http://www.itee.uq.edu.au/~cristina/uqbt.html;strata系统参见发表于2001年《IEEE Workshop on Binary Translation(美国电气和电子工程师协会关于二进制翻译的附属会议)》上的“Strata:A Software DynamicTranslation Infrastructure(strata:一个软件动态翻译的框架)”文献,或者是strata系统项目的主页http://www.cs.pitt.edu/coco/strata;CrossBit系统参见2007年发表于《计算机工程》上的“动态二进制翻译基础平台CrossBit的设计与实现”文献,或者是CrossBit系统的项目主页:202.120.40.100。
本实施例采用的二进制翻译系统是上海交通大学的CrossBit系统,该系统以MIPS(MIPS公司开发的精简指令集微处理器)为前端体系结构、PowerPC为后端体系结构来完成二进制翻译中的字节序的调整,CrossBit系统采用VINST作为中间指令集,VINST是一种低层次的类RISC指令集,具有无穷多个32位虚拟寄存器、Load-Store风格体系结构、唯一的偏址寻址模式,VINST的内存访问指令包括LD指令和ST指令。
CrossBit的执行引擎将MIPS体系结构的可执行文件映像加载到CrossBit内存空间中,并读取代码段入口地址,加载过程中需对源程序的各段进行字节序翻转。源机器平台和目标机器平台的字节顺序不同,源程序映像(以ELF文件为例)的.text段(代码段)和.bss段(存放程序中未初始化的全局变量的一块内存区域)在加载的时候都需要进行字节序的翻转。设置堆栈时,压入的参数(参数个数和参数内容)和环境变量也要做字节序翻转处理。
第二步,修改表示内存访问的中间指令的有效地址,使修改后的有效地址的表达符合源程序内存访问指令的语义,以在内存中加载或存储正确的数据。
所述的修改后的有效地址等于,内存中数据的最高地址与数据的最低地址的和,减去访存指令操作的字节数与源程序要访问的有效地址的和。
LD指令有4个参数:源寄存器reg、偏移量disp、数据的大小size和目标寄存器dst,访存的有效地址ea即为:ea=[reg]+disp。
1)如果size=1,即加载字节数据,对ea和4做求模运算得到i(i=ea%4),如果i=0,则修改后的有效地址ea′=ea+3;如果i=1,则修改后的有效地址ea′=ea+1;如果i=2,则修改后的有效地址ea′=ea-1;如果i=3,则修改后的有效地址ea′=ea-3;
2)如果size=2,即加载半字数据,对ea和4做求模运算得到i(i=ea%4),如果i=0,则修改后的有效地址ea′=ea+2;如果i=2,则修改后的有效地址ea′=ea-2;
3)如果size=4,即加载字数据,无需做地址转换。
第三步,入口地址传递到前端解码器的解码函数中进行指令解释,将源程序指令翻译为一条到若干条VINST中间指令,然后将生成的中间指令封装到构建的中间指令基本块(VBlock)中,直到发生直接跳转或系统调用,则结束当前基本块的构造,将该基本块发送到后端,调用后端编码器,编码函数以中间指令块VBlock为输入,将生成的后端目标代码(PowerPC指令)插入到目标代码块TBlock中,TBlock代表了一个可运行的目标代码块。TBlock包含有唯一的入口(Entry)和若干个出口(Exit),CrossBit从TBlock入口开始进入目标代码的执行,随后从出口返回。
本实施例的优点:利用MIPS和PowerPC体系结构存储器格式的特点,通过修改表示内存访问的中间指令的有效地址,正确地表达了源程序的内存访问指令的语义,从而无需搬移数据本身的内部字节顺序,完成不同字节序平台之间的程序翻译,并且获得很好的性能提升。

二进制翻译中的字节序调整方法.pdf_第1页
第1页 / 共6页
二进制翻译中的字节序调整方法.pdf_第2页
第2页 / 共6页
二进制翻译中的字节序调整方法.pdf_第3页
第3页 / 共6页
点击查看更多>>
资源描述

《二进制翻译中的字节序调整方法.pdf》由会员分享,可在线阅读,更多相关《二进制翻译中的字节序调整方法.pdf(6页珍藏版)》请在专利查询网上搜索。

本发明公开了一种计算机技术领域的二进制翻译中的字节序调整方法,包括以下步骤:动态二进制翻译系统的执行引擎加载源程序可执行映像,将各个程序段的内容进行字节序调整,同时调整加载进来的参数个数、参数内容和环境变量;修改表示内存访问的中间指令的有效地址,使修改后的有效地址的表达符合源程序内存访问指令的语义,以在内存中加载或存储正确的数据;前端解码器将源程序指令翻译为中间指令,然后将生成的中间指令加入到构建。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1