本发明专利技术提供了一种二进制目标码翻译的方法和系统,可以以软件或以硬件实现,将一种二进制目标码翻译成第二种二进制目标码。使得只能执行第二种目标码的计算机或处理器不需改动,能直接执行翻译得到的第二种二进制目标码。
Binary translation method and system
【技术实现步骤摘要】
二进制翻译方法和系统
本专利技术涉及计算机软件及硬件领域。
技术介绍
用高级语言编写的代码编译后成为机器码(machinecode),也称为二进制目标码(binaryobjectcode)。用一种汇编语言编写的汇编码经汇编后也成为机器码。一种机器码需经过二进制翻译(binarytranslation)才能在可执行另一种机器码的计算机或处理器上执行。二进制翻译现实中有很大需求。但现有的二进制翻译技术或者会带来显著的性能损失,例如模拟器(emulator);或者翻译效率不高,如将二进制目标码反编译为高级语言,再从高级语言编译为另一种二进制目标码,比如专利US7765539;或者需要改变现有计算机或处理器的结构,如中国专利申请201410697780.X。本专利技术提出的方法与系统装置能直接解决上述或其他的一个或多个困难。
技术实现思路
本专利技术提出了一种二进制目标码翻译的方法和系统,其特征在于,包括:将一个计算机可读存储介质(computerreadablestoragemedium)中单数或复数行第一种二进制目标码翻译成第二种二进制目标码存入第二个计算机可读存储介质中的单数或复数行,其单或复数第一种二进制目标码行中的字节数与单或复数第二种二进制目标码行中的字节数成特定比例关系。如翻译得到的第二种二进制目标码未占据单数或复数行第二种二进制目标码行的全部,在最后一条第二种二进制目标码后增添无条件分支第二种二进制目标码,或不影响执行状态的第二种二进制目标码。根据所述第一种二进制目标码分支偏移量与所述比例关系等计算第二种二进制目标码的分支偏移量存入相应的第二种分支二进制目标码。使得现有的计算机或处理器等器件能直接执行第二个计算机可读存储介质中存储的,由翻译得到的第二种二进制目标码。有益效果本专利技术所述二进制目标码翻译的方法和系统简单,高效,可预测;翻译得到的二进制目标码的执行效率较其他二进制翻译方法和系统高;可以以软件或硬件的形式实现。现有的计算机或处理器等器件可直接执行本二进制目标码翻译方法和系统翻译得到的二进制目标码,不需任何改动。对于本领域专业人士而言,本专利技术的其他优点和应用是显见的。附图说明图1是第一存储中的第一行组与第二存储中的第二行组的实施例;图2是增添一条无条件分支第二目标码的实施例;图3是计算第二偏移量的过程;图4是计算第二偏移量的实施例;图5是目标码长度表的实施例图6是行组偏移表的实施例;图7是二进制翻译器与处理器协同工作的实施例;图8是二进制翻译器与处理器协同工作的另一个实施例。具体实施方式以下结合附图和具体实施例对本专利技术提出的二进制目标目标码翻译方法和装置,系统作进一步详细说明。根据下面说明和权利要求书,本专利技术的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本专利技术实施例的目的。需要说明的是,为了清楚地说明本专利技术的内容,本专利技术特举多个实施例以进一步阐释本专利技术的不同实现方式,其中,该多个实施例是列举式并非穷举式。此外,为了说明的简洁,前实施例中已提及的内容往往在后实施例中予以省略,因此,后实施例中未提及的内容可相应参考前实施例。虽然该专利技术可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的实施图例并进行详细阐述。应当理解的是,专利技术者的出发点不是将该专利技术限于所阐述的特定实施例,正相反,专利技术者的出发点在于保护所有基于由本权利声明定义的精神或范围内进行的改进、等效转换和修改。同样的元器件号码可能被用于所有附图以代表相同的或类似的部分。根据本专利技术技术方案,将存储于一个计算机可读存储介质(computerreadablestoragemedium)中(以下称第一存储)的二进制目标目标码(以下称第一目标码)翻译为另一种二进制目标目标码(以下称第二目标码)存入一个计算机可读存储介质(以下称第二存储)。翻译第一存储中单数或复数行(line)的一个行组(linegroup)(以下称为第一行组)中每一条第一目标码得到的第二目标码存入第二存储中单数或复数行的一个行组(以下称为第二行组)。本专利技术中视行组内的偏移量(以下称为行组偏移量)连续。行组偏移量是以行组起始点为原点的行组内地址。例如一个行组中有两行,每行8个字节,则第一行中行组偏移量为0-7,第二行中行组偏移量为8-15。第二行组中的总字节数与第一行组中的总字节数的比例称为行组比(linegroupratio)。图1是第一存储中的第一行组与第二存储中的第二行组的实施例。其中11为第一存储10中的第一行组,有一行共32字节;21为第二存储20中的第二行组,有两行,每行32字节,共64字节。因此行组比为2。将第一存储中一个第一行组中每一条第一目标码翻译为相应的第二目标码按第一目标码的顺序存入第二存储的一个第二行组。如果翻译所得的第二目标码未占据整个第二行组,在第二行组中最后一条第二目标码后增添一条无条件分支或跳转第二目标码。该无条件分支或跳转第二目标码中的分支偏移量随该第二目标码在第二行组中的位置而配置使得其跳转目标为顺序下一个行组的第一条第二目标码。例如在第二行组中最后一行中最后一个位置,则分支偏移量是一个第二目标码长;在最后一个位置之前一个位置,则分支偏移量是两个第二目标码长。如此类推。某些目标码集有Nop(不操作)目标码。在行组中最后一条第二目标码后的剩余位置增添Nop第二目标码或其他不影响处理器状态的第二目标码,也可达到使计算机或处理器的执行从行组中最后一条第二目标码过渡到顺序下一行组的第一条第二目标码的目的。图2是增添一条无条件分支第二目标码的实施例。其中21与27为第二存储中的两个连续行组,23为行组21中最后一条第二目标码,25为增添的无条件分支第二目标码。25的分支目标为29。29是顺序下一个行组27的第一条第二目标码。翻译第一目标码时要识别每条第一目标码。当翻译一条分支第一目标码为分支第二目标码时,需将第一目标码中的分支偏移量(以下称第一分支偏移量)翻译为第二目标码中的分支偏移量(以下称第二分支偏移量)。第二分支偏移量可以基于第一分支偏移量用行组比,源差(sourcedifference)以及目标差(targetdifference)计算得到。第一分支偏移量,源差以及目标差都以第一目标码与第二目标码中可寻址最小地址单位表达。其中源差是分支第一目标码的行组偏移量与相应的分支第二目标码的行组偏移量之间的差。源差在翻译含有分支第一目标码的第一目标码行组时求得。其中目标差是分支目标第二目标码的行组偏移量与相应的分支目标第一目标码的行组偏移量之间的差。目标差在翻译含有相应的分支目标第一目标码的第一目标码行组时求得。计算第二分支偏移量的方法为,将第一分支偏移量分解为第一分支行偏移量以及第一分支行内偏移量两部分分别处理。将第一分支偏移量除以第一存储一行的长度,得到的商为第一分支行偏移量,得到的余数为第一分支行本文档来自技高网...
【技术保护点】
1.一种二进制目标码翻译方法,将第一存储中的第一目标码翻译为第二目标码存入第二存储;其特征在于,/n将第一存储中单数或复数行构成的一个第一行组中的每一条第一目标码翻译成第二目标码,按第一目标码的顺序存入第二存储中单数或复数行的一个第二行组;/n将第二行组的总字节数与第一行组的总字节数之间的比例称为行组比;/n基于行组比,分支目标第一目标码中的第一分支偏移量,源差以及目标差确定分支第二目标码中的第二分支偏移量;/n在第二行组最后一条第二目标码后插入无条件分支第二目标码或不影响执行状态的第二目标码。/n
【技术特征摘要】
1.一种二进制目标码翻译方法,将第一存储中的第一目标码翻译为第二目标码存入第二存储;其特征在于,
将第一存储中单数或复数行构成的一个第一行组中的每一条第一目标码翻译成第二目标码,按第一目标码的顺序存入第二存储中单数或复数行的一个第二行组;
将第二行组的总字节数与第一行组的总字节数之间的比例称为行组比;
基于行组比,分支目标第一目标码中的第一分支偏移量,源差以及目标差确定分支第二目标码中的第二分支偏移量;
在第二行组最后一条第二目标码后插入无条件分支第二目标码或不影响执行状态的第二目标码。
2.如权利要求1所述的方法,其特征在于,源差是分支第一目标码的行组偏移量与相应的分支第二目标码的行组偏移量之间的差;
行组偏移量是以行组起始点为原点的行组内地址。
3.如权利要求2所述的方法,其特征在于,目标差是分支目标第二目标码的行组偏移量与相应的分支目标第一目标码的行组偏移量之间的差。
4.如权利要求3所述的方法,,其特征在于,根据分支第一目标码的行组偏移量及分支第一目标码中第一偏移量计算分支目标第一目标码地址;
根据分支第一目标码地址从第一存储取得相应的第一行组,将其中的每条第一目标码翻译为第二目标码;
根据分支第一目标码地址的行组偏移量与相应的分支第一目标码地址的行组偏移量提取目标差。
5.如权利要求3所述的方法,其特征在于,
以第一分支偏移量除以第一存储中一行的长度,得到商及余数;
以所述商,行组比,以及第一存储的行长度相乘得到积;
以所述余数,所述积,所述源差,以及所述目标差的和为第二分支偏移量。
6.如权利要求1所述的方法,其特征在于,
如果翻译所得的第二目标码未...
【专利技术属性】
技术研发人员:林正浩,
申请(专利权)人:上海芯豪微电子有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。