汇编指令翻译方法、装置、电子设备及可读存储介质与流程
未命名
09-17
阅读:71
评论:0

1.本发明涉及计算机技术领域,尤其涉及一种汇编指令翻译方法、装置、电子设备及可读存储介质。
背景技术:
2.不同架构的汇编指令的翻译功能,可以提高汇编指令的适用范围,满足各个场景下使用汇编指令的需求。
3.目前,对于复杂指令集计算机(cisc,complex instruction set computer)架构的汇编指令,可以将其等意翻译为精简指令集计算机(risc,reduced instruction set computer)架构的汇编指令,从而在使用risc架构的汇编指令的设备上,可以快速复用cisc架构的汇编指令。
4.相关技术中,由于cisc指令集的语义较risc指令集更为复杂,为了实现等意翻译,经常需要很多条risc指令才能完整覆盖一条cisc指令的语义,这就使得翻译后得到的risc指令数量较多,导致代码效率低下。
技术实现要素:
5.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种汇编指令翻译方法、装置、电子设备及可读存储介质。
6.第一方面,本技术实施例公开了一种汇编指令翻译方法,所述方法包括:
7.获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;
8.根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;
9.在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
10.第二方面,本技术实施例公开了一种汇编指令翻译装置,所述装置包括:
11.获取模块,用于获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;
12.确定模块,用于根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;
13.翻译模块,用于在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
14.第三方面,本技术实施例还公开了一种电子设备,包括有处理器;以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
15.获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;
16.根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;
17.在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
18.第四方面,本技术实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面方法。
19.本技术实施例中,预先对不同架构的汇编指令翻译的过程进行分析,构建汇编指令、精简翻译结果以及预设条件的第一对应关系,并在待翻译汇编指令的设备参数,满足第一对应关系中的目标汇编指令对应的预设条件的情况下,则将与目标汇编指令对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果,本发明实施例通过对汇编指令进行分析,将符合预设条件的汇编指令翻译为精简翻译结果,可以使用更高效的精简汇编指令作为翻译结果,来代替原本的等意翻译结果,而相较于等意翻译结果,精简翻译结果的条数可以更少,从而减少了指令执行的数量,提高了翻译后代码的执行效率。
附图说明
20.图1是本发明实施例提供的一种汇编指令翻译方法步骤流程图;
21.图2是本发明实施例提供的又一种汇编指令翻译方法步骤流程图;
22.图3是本发明实施例提供的一种汇编指令翻译装置框图
23.图4是本发明实施例提供的一种电子设备的框图;
24.图5是本发明另一个实施例的另一种电子设备的框图。
具体实施方式
25.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
26.参考图1,其示出了本技术实施例提供的一种汇编指令翻译方法的步骤流程图,所述方法包括:
27.步骤101,获取待翻译汇编指令对应的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件。
28.其中,所述预设条件是针对所述设备参数构建的条件。
29.步骤102、根据所述设备参数和所述第一对应关系,确定目标汇编指令。
30.本发明实施例中,汇编语言(c/c++、python等)是计算机高级语言,为使得机器设备能够按照源代码中设计的算法指令完成特定的计算任务,需要借助编译器将源代码转换为能够被机器直接读取并识别的二进制编码表示的机器指令,而汇编指令是一种助记符和操作符,汇编指令与机器指令一一对应,汇编指令用于通过汇编语言解释机器指令的实现功能,每一种架构的操作系统都具有自己的汇编指令集,不同架构的操作系统的汇编指令
集可能不同。
31.进一步的,汇编指令具有对应的设备参数,设备参数用于表征汇编指令为实现其功能所需的电子设备中的重要参数,设备参数可以包括汇编指令对应的寄存器中的操作数、执行汇编指令的处理器的状态等。
32.具体在汇编指令的翻译场景中,翻译功能的目的是将第一架构类型的待翻译汇编指令翻译为第二架构类型的汇编指令,在本发明实施例中,优选的,第一架构类型为x86系统使用的cisc架构,第二架构类型为其他系统使用的risc架构。
33.在本发明实施例中,由于cisc指令集的语义较risc指令集更为复杂,则在等意翻译(即翻译前后的语义完全一致)的情况下,经常需要很多条risc汇编指令才能完整覆盖一条cisc汇编指令的语义,即一条cisc汇编指令翻译后,获得对应的多条risc汇编指令,这就造成翻译后得到的risc指令数量较多,代码效率低下。
34.而根据对cisc汇编指令翻译至risc汇编指令的过程进行分析,发现当cisc汇编指令的设备参数满足预设条件(如操作数满足操作数值条件或处理器状态满足处理器状态条件)时,可以使用更高效的精简risc汇编指令作为翻译结果,来代替原本的等意翻译结果,而相较于等意risc汇编指令,精简risc汇编指令可以省略原汇编指令的某些执行步骤,使得精简risc汇编指令的条数可以更少,从而提高了翻译后代码的效率。
35.其中,等意翻译结果是指保留了待翻译汇编指令所有执行步骤的结果,即等意翻译结果是保留了待翻译汇编指令的完整语义的结果,而精简翻译结果是剔除等意翻译结果中某些执行步骤后的结果,即精简翻译结果是保留了待翻译汇编指令的部分执行步骤的结果,也可理解为精简翻译结果是保留了待翻译汇编指令的部分语义的结果。
36.因此本发明实施例可以预先建立汇编指令与精简翻译结果的第一对应关系进行缓存,并为精简翻译结果设定对应的预设条件,后续在翻译过程中,先根据设备参数和第一对应关系,确定第一对应关系中与带翻译汇编指令匹配的目标汇编指令,之后在确定待翻译汇编指令的设备参数,满足目标汇编指令对应的预设条件的情况下,则可以将对应的精简翻译结果,作为对待翻译汇编指令翻译后的结果,从而优化等意翻译结果,在保证汇编指令正常运行的基础上,实现精简翻译。
37.其中,汇编指令通常用于执行电子设备的设备参数,因此汇编指令一般包含获取设备参数,以及判断设备参数是否满足对应的构建条件的指令,本发明实施例为了实现精简翻译,减少了汇编指令翻译后得到的指令条数,从而提升翻译后指令的执行效率。
38.本实施例中,分析汇编指令时,在确定当前电子设备已获取到设备参数并可对设备参数进行判断的情况下,由电子设备自行对设备参数进行判断,无需通过执行汇编指令以判断设备参数是否满足预设的构建条件。在设备参数满足预设条件的情况下,从等意翻译结果中获取设备参数,以及判断设备参数是否满足条件的指令步骤进行精简,从而将剩余的指令进行输出,实现对汇编指令的精简翻译。
39.例如,假设电子设备执行汇编指令a所需的完整步骤包含:
40.s1、获取设备参数x;
41.s2、判断设备参数x是否大于0;
42.s3、在设备参数x大于0时,执行x1操作;
43.则针汇编指令a的执行逻辑,可以在电子设备的缓存中针对汇编指令a设定预设条
件:判断电子设备是否获得汇编指令a执行所需的设备参数x,以及判断x是否大于0,则进一步针对汇编指令a的预设条件所设定的精简翻译结果,可以去除上述s1、s2的步骤指令,仅留下s3的步骤指令,即在输入指令满足上述预设条件的情况下,直接将包含s3对应步骤指令的精简翻译结果进行输出,s1、s2的执行可以由电子设备本身在缓存内完成,从而减少翻译后指令的数量,提升指令执行效率。
44.步骤103,在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
45.本发明实施例中,由于提前基于各个汇编指令的特性,设置了汇编指令可以实现精简翻译的精简翻译结果,以及满足精简翻译的预设条件,则针对待翻译汇编指令,可以先从汇编指令与精简翻译结果的第一对应关系中,查找与待翻译汇编指令匹配的目标汇编指令,并判断待翻译汇编指令的设备参数是否满足与目标汇编指令对应的预设条件,若满足,则可以将与目标汇编指令对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果,从而实现精简翻译;若不满足,则可以对待翻译汇编指令进行等意翻译。
46.例如,假设目标汇编指令对应的预设条件为:判断电子设备是否获得执行所需的设备参数x,以及判断x是否大于0,则电子设备从输入的待翻译指令中确定其执行所需的参数为设备参数x,且电子设备当前已获得该设备参数x并对设备参数x判断其取值大于0时,认为待翻译汇编指令的设备参数是否满足与目标汇编指令对应的预设条件。
47.例如,预先建立的第一对应关系包括:
48.第一架构类型的汇编指令a—第二架构类型的精简翻译结果a
‘
—预设条件1;
49.第一架构类型的汇编指令b—第二架构类型的精简翻译结果b
‘
—预设条件2;
50.第一架构类型的汇编指令c—第二架构类型的精简翻译结果c
‘
—预设条件3;
51.…
52.假设要对待翻译汇编指令x(第一架构类型),则可以先将待翻译汇编指令x与第一对应关系中的各个汇编指令进行匹配,若待翻译汇编指令x与汇编指令b完全匹配,则进一步获取与汇编指令b对应的预设条件2,假设预设条件2是汇编指令对应的寄存器的操作数都为正数,后续可以提取待翻译汇编指令x对应的寄存器中的操作数的数值,若都为正数,则认为待翻译汇编指令x可以实现精简翻译,即将与预设条件2对应的精简翻译结果b
‘
作为待翻译汇编指令x的翻译结果。
53.综上,本技术的方案,通过预先对不同架构的汇编指令翻译的过程进行分析,构建汇编指令、精简翻译结果以及预设条件的第一对应关系,并在待翻译汇编指令的设备参数,满足第一对应关系中的目标汇编指令对应的预设条件的情况下,则将与目标汇编指令对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果,本发明实施例通过对汇编指令进行分析,将符合预设条件的汇编指令翻译为精简翻译结果,可以使用更高效的精简汇编指令作为翻译结果,来代替原本的等意翻译结果,而相较于等意翻译结果,精简翻译结果的条数可以更少,从而减少了指令执行的数量,提高了翻译后代码的执行效率。
54.参考图2,其示出了本技术实施例提供的又一种汇编指令翻译方法的步骤流程图,包括:
55.步骤201,获取待翻译汇编指令对应的设备参数,以及各汇编指令与精简翻译结果的第一对应关系。
56.其中,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件。
57.该步骤具体可以参照上述步骤101,此处不做赘述。
58.步骤202,根据所述设备参数和所述第一对应关系,确定目标汇编指令。
59.步骤203、在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
60.现通过一个示例来描述精简翻译过程的实现:
61.以cisc汇编向量指令pshufb(混洗指令)为例,通过c语言表示其语义的多个语句依次包括:
[0062]“char a[16];//input a”;
[0063]“char b[16];//inputb”;
[0064]“char r[16];//output r”;
[0065]“for(i=0;i《16;i++)”;
[0066]“r[i]=(b[i]《0)?0:a[b[i]%16];”。
[0067]
其中,语句:“char a[16];//input a”表示输入向量参数a;
[0068]
语句:“char b[16];//input b”表示输入向量参数,为数组b;
[0069]
语句:“char r[16];//output r”表示输出向量参数,为数组r;
[0070]
语句:“for(i=0;i《16;i++)”和语句:“r[i]=(b[i]《0)?0:a[b[i]%16];”表示:
[0071]
判断数组元素b[i]的值小于0时,给b[i]对应的r[i]赋值0;判断b[i]大于或等于0时,先将b[i]与16进行除法运算,运算结果取余数m,将余数m赋至所对应的数组元素a[m]的值,赋值给与b[i]对应的r[i]。
[0072]
其中,a、b、r都分别是有16个元素的数组。
[0073]
若等意翻译cisc汇编向量指令pshufb,则翻译后的对应risc汇编指令包括四条指令和一个额外寄存器$vr16,具体依次包括:
[0074][0075]
其中,额外寄存器$vr16用于存储中间运算结果,$vr0是用于存储输入向量参数b的寄存器;$vr2是用于存储参数a或结果输出向量参数r的寄存器。
[0076]
指令:“vandi.b$vr16,$vr0,0xf”表示:将$vr0寄存器中每字节的高4位清零,因为pshufb指令只有一个输入,其有效位为0~3,而vshuf.b的va寄存器每字节的有效位为0~4,因此须将第4位清零;该指令的执行效果等同于:数组元素b[i]为正数情况下,将b[i]与16进行除法运算,运算结果取余数m,将余数m存入对应的额外寄存器$vr16;
[0077]
指令:“vshuf.b$vr2,$vr2,$vr2,$vr16”表示:首先按照$vr2,$vr2,$vr2,$vr16的排列顺序,将这四个寄存器依次表示为vd,vk,vj,va;则vshufb指令使用四个寄存器,其中两个作为输入寄存器vj、vk,一个作为控制寄存器va和一个作为输出寄存器vd。两个输入寄存器vj、vk拼成一个256位的临时向量vec0,即vec0={vr[vj],vr[vk]},由控制寄存器va每
字节的低5位作为索引确定将vec0的哪个字节拷贝到输出寄存器vd的对应字节。该指令的执行效果等同于:将余数m所对应的a[m]的值,赋值给与数组元素b[i]对应的r[i];
[0078]
指令:“vsrai.b$vr16,$vr0,7”和“vandn.v$vr2,$vr16,$vr2”的执行效果等同于:判断数组元素b[i]是否小于0,在b[i]小于0时,给b[i]对应的r[i]赋值0;在b[i]大于或等于0时,进入前两个指令的执行。
[0079]
具体的,针对指令:“vsrai.b$vr16,$vr0,7”,srai的含义是立即数算术右移指令(shiftrightarithmeticimmediate),v前缀代表向量,.b后缀代表是字节,本条指令中$vr0是输入,$vr16是输出,7代表算数右移的位数,作用是每个字节的符号位扩展到右移后的位,在本条指令中$vr0某个字节的符号位为1(即为负数)处理后$vr16的对应字节为0b11111111,如$vr0某个字节的符号位为0,则处理后$vr16的对应字节为0b0。
[0080]
针对指令“vandn.v$vr2,$vr16,$vr2”,其作用是与vsrai.b$vr16,$vr0,7配合,将vsrai.b中$vr0符号为1的字节在$vr2中的对应字节清零。andn的含义是andnot,前缀v代表向量,后缀v代表为以整个向量为单位进行运算的,不是字节、半字或者整型为单位处理的。
[0081]
通过研究上述等意翻译过程,可以发现针对汇编指令pshufb,若能够确定输入寄存器vr0的输入值中每一个数组元素b[i](设备参数)的值都满足大于或等于0的预设条件下,则可以仅用到前两个指令:“vandi.b$vr16,$vr0,0xf”和“vshuf.b$vr2,$vr2,$vr2,$vr16”,前两个指令用于在数组元素b[i]为正数情况下,将b[i]与16进行除法运算,运算结果取余数m,以及将余数m所对应的a[m]的值,赋值给与数组元素b[i]对应的r[i],因此,本技术可以将前两个指令作为cisc汇编向量指令pshufb翻译后对应的精简翻译结果,则在数组元素b[i]为正数情况下,后两个指令“vsrai.b$vr16,$vr0,7”和“vandn.v$vr2,$vr16,$vr2”(用于在数组元素b[i]为负数情况下,给b[i]对应的r[i]赋值0)作为冗余部分,可以被精简省略。
[0082]
因此,本技术实施例可以在电子设备中提前建立与cisc汇编指令pshufb对应的预设条件:vr0的输入值中每一个数组元素b[i]的值都大于或等于0;以及对应该预设条件的精简翻译结果:“vandi.b$vr16,$vr0,0xf”和“vshuf.b$vr2,$vr2,$vr2,$vr16”之间的第一对应关系。
[0083]
后续在进行指令翻译时,针对输入的待翻译汇编指令,首先获取待翻译汇编指令对应的设备参数,即数组b[i];之后从第一对应关系中,确定待翻译汇编指令匹配的目标汇编指令为pshufb时,再进行判断电子设备是否已获得待翻译汇编指令执行所需的设备参数b[i],以及设备参数b中的每个元素b[i]是否大于或等于0,若确定电子设备已获得设备参数b[i],以及设备参数b[i]中的元素值大于或等于0,则认为待翻译汇编指令的设备参数满足目标汇编指令对应的预设条件,当前可以进行精简翻译,从而将第一对应关系中与预设条件对应的精简翻译结果“vandi.b$vr16,$vr0,0xf”和“vshuf.b$vr2,$vr2,$vr2,$vr16”,作为输入的待翻译汇编指令的翻译结果。精简翻译结果可以在电子设备判断数组元素b[i]为正数情况下,直接将b[i]与16进行除法运算,运算结果取余数m,以及将余数m所对应的a[m]的值,赋值给与数组元素b[i]对应的r[i],实现对r[i]的快速赋值。
[0084]
可选的,本发明实施例还可以包括:
[0085]
步骤204,在所述设备参数不满足所述预设条件的情况下,则对所述目标汇编指令
进行等意翻译,获得所述待翻译汇编指令翻译后的结果。
[0086]
在本发明实施例中,等意翻译具体可以通过保证翻译前后的语义完全一致的原则,对待翻译汇编指令进行翻译,而在待翻译汇编指令的设备参数不满足预设条件的情况下,可以认为待翻译汇编指令不满足精简翻译的条件,需要进行等意翻译获得其翻译结果。
[0087]
针对cisc汇编指令等意翻译为risc汇编指令的过程,由于cisc指令集的语义较risc指令集更为复杂,经常需要很多条risc汇编指令才能完整覆盖一条cisc汇编指令的语义,即一条cisc汇编指令翻译后,获得对应的多条risc汇编指令。
[0088]
上述步骤203的示例中,给出了将cisc汇编向量指令pshufb等意翻译为四条指令:
[0089][0090]
即cisc汇编向量指令pshufb等意翻译后的risc汇编指令包括四条指令,这四条指令完全涵盖了cisc汇编向量指令pshufb的全部内容,形成汇编指令pshufb的等意翻译结果。在输入的待翻译汇编指令的设备参数不满足预设条件的情况下,可以将目标汇编指令的等意翻译结果进行输出。
[0091]
可选地,步骤204具体可以包括:
[0092]
子步骤2041,在所述设备参数不满足所述预设条件的情况下,获取各汇编指令与等意翻译结果的第二对应关系。
[0093]
子步骤2042,从所述第二对应关系中确定与所述目标汇编指令对应的目标等意翻译结果,并将所述目标等意翻译结果作为对所述待翻译汇编指令翻译后的结果。
[0094]
在本发明实施例中,针对子步骤2041-2042,等意翻译可以利用专家系统进行实现,专家系统中存储有汇编指令与等意翻译结果的第二对应关系,在待翻译汇编指令的设备参数不满足预设条件的情况下,可以获取第二对应关系,并从第二对应关系中,确定与待翻译汇编指令对应的目标汇编指令,将目标汇编指令对应的目标等意翻译结果,作为对待翻译指令等意翻译后的结果。
[0095]
具体的,本发明实施例的专家系统里包含了x86的cisc汇编指令翻译为risc汇编指令的程序,该程序包含了一条cisc指令对应的等意risc汇编指令的第二对应关系。当然,在一些情况下,还可以为每一条第二对应关系设定对应的场景条件,即带翻译汇编指令在满足设定的场景条件时,才可以利用对应的一条第二对应关系,确定等意翻译结果。
[0096]
需要说明的是,本发明实施例为实现精简翻译而设定的第一对应关系也可存储在专家系统中,以供专家系统实现精简翻译的判断和执行。
[0097]
可选的,设备参数包括:与所述待翻译汇编指令对应的寄存器中的操作数的数值;本发明实施例还可以包括:
[0098]
步骤205,在已获取到所述操作数的数值,且所述操作数的数值满足所述第一对应关系中目标汇编指令对应的预设操作数值条件的情况下,则确定所述设备参数满足所述预设条件。
[0099]
步骤206,在未获取到所述操作数的数值,或所述操作数的数值不满足所述预设操
作数值条件的情况下,则确定所述设备参数不满足所述预设条件。
[0100]
在本发明实施例中,针对步骤205-206,指令翻译时判断待翻译汇编指令是否符合精简翻译的条件,可以将翻译汇编指令的设备参数,与第一对应关系中对应汇编指令的预设条件进行匹配,若匹配则确定待翻译汇编指令符合精简翻译的条件。
[0101]
具体的,在一种实现方式中,可以通过待翻译汇编指令对应的寄存器中的操作数的数值的判断,来确定是否满足精简翻译的条件。这种情况下,设备参数可以包括:与待翻译汇编指令对应的寄存器中的操作数的数值,而与之对应的预设条件则为:设备是否已获取到操作数的数值,操作数的数值是否满足对应的预设操作数值条件。
[0102]
针对上述步骤203的示例中,将cisc汇编向量指令pshufb等意翻译为:
[0103][0104]
则一条第一对应关系为:cisc汇编指令pshufb、预设操作数值条件:寄存器vr0的输入值中每一个操作数b[i]的值都大于或等于0、精简翻译结果:
[0105]“vandi.b$vr16,$vr0,0xf”和“vshuf.b$vr2,$vr2,$vr2,$vr16”。
[0106]
可知在翻译时,针对输入的待翻译汇编指令,首先从寄存器$vr0中读取待翻译汇编指令对应的操作数,即向量参数数组b[i]的数值;之后从第一对应关系中,确定待翻译汇编指令匹配的目标汇编指令为pshufb时,再进行判断电子设备是否已获得待翻译汇编指令执行所需的操作数,即数组b[i],以及操作数,即每个数组元素b[i]的值是否大于或等于0,若确定电子设备已获得操作数b[i],以及操作数b[i]大于或等于0,则认为待翻译汇编指令的操作数满足目标汇编指令满足对应的预设操作数值条件,当前可以进行精简翻译,从而将第一对应关系中与预设条件对应的精简翻译结果:“vandi.b$vr16,$vr0,0xf”和“vshuf.b$vr2,$vr2,$vr2,$vr16”进行输出。
[0107]
当然,若未获取到所述操作数的数值,或操作数的数值不满足预设操作数值条件的情况下,表示待翻译汇编指令所需的操作数电子设备获取未获取成功,或者电子设备无法判断操作数的数值,则当前不满足精简翻译条件,需要直接将目标汇编指令pshufb的等意翻译结果(包含获取操作数,以及判断操作数的步骤指令)进行输出,从而实现汇编指令pshufb的完整正确执行。
[0108]
其中,操作数是电子设备的设备参数的一种表现方式,操作数是电子设备指令中的一个组成部分,它规定了指令中进行数字运算的量,操作数具体指出指令执行的操作所需要数据的来源,通常一条指令均包含操作符和操作数,例如:在比较指令中操作符为指定电子设备做比较操作,操作数则为指定电子设备中进行比较的两个数值。
[0109]
可选的,设备参数包括:与所述待翻译汇编指令对应的处理器状态;本发明实施例还可以包括:
[0110]
步骤207,在已获取到所述处理器状态,且所述处理器状态满足所述第一对应关系中目标汇编指令对应的预设处理器状态条件的情况下,则确定所述设备参数满足所述预设条件。
[0111]
步骤208,在未获取到所述处理器状态,或所述处理器状态不满足所述预设处理器状态条件的情况下,则确定所述设备参数不满足所述预设条件。
[0112]
具体的,针对步骤207-208,在另一种实现方式中,指令的判断执行需要基于处理该指令的处理器的状态来实现,则本发明实施例可以通过待翻译汇编指令对应的处理器状态的判断,来确定是否满足精简翻译的条件。这种情况下,设备参数可以包括:与待翻译汇编指令对应的处理器状态,而与之对应的预设条件则为:设备是否已获取到所述处理器状态,处理器状态是否满足对应的预设处理器状态条件。
[0113]
可选的,本发明实施例还可以包括:
[0114]
步骤209,对各汇编指令分别进行等意翻译,获得所述汇编指令各自对应的等意翻译结果。
[0115]
步骤210,在所述汇编指令的设备参数满足预设条件的情况下,根据所述预设条件确定所述等意翻译结果中的冗余翻译内容。
[0116]
步骤211,删除所述等意翻译结果中的冗余翻译内容,获得精简翻译结果。
[0117]
步骤212,构建所述汇编指令、所述精简翻译结果以及所述预设条件之间的第一对应关系。
[0118]
需要说明的是,根据预设条件,可以确定对应的精简翻译结果,而精简翻译结果是等意翻译结果的一部分,因此,对预设条件进行取反操作,则可确定等意翻译结果中的冗余翻译内容,等意翻译结果中删除冗余翻译内容后,剩余内容即为精简翻译结果。
[0119]
具体的,针对步骤209-212,可以通过一个示例,来描述第一对应关系的构建过程。
[0120]
针对上述步骤203的示例中,将cisc汇编向量指令pshufb等意翻译为:
[0121][0122]
可以发现针对指令pshufb,若能够确定输入寄存器vr0的数组b的输入值中每一个元素b[i]的值都大于或等于0,则可以仅用到前两个指令:
[0123][0124]
作为cisc汇编向量指令pshufb翻译后对应的risc汇编指令翻译结果,则后两个指令“vsrai.b$vr16,$vr0,7”和“vandn.v$vr2,$vr16,$vr2”作为冗余部分,可以被精简省略。
[0125]
从而,本技术实施例可以提前建立cisc汇编向量指令pshufb、预设条件为寄存器vr0的输入值中每一个元素b[i]的值都大于或等于0、精简翻译结果:
[0126][0127]
之间的第一对应关系,以实现后续精简翻译时的判断和执行。
[0128]
实现精简翻译后,输出的精简翻译结果中包含的指令数量为2条,相较等意翻译结果的指令数量为4条,精简翻译结果包含的指令数量更少,更少的指令数量提高了精简翻译结果的执行速度,提高了翻译后指令的执行效率。
[0129]
可选的,所述待翻译汇编指令和所述汇编指令为:复杂指令集计算机架构(cisc)的指令;所述精简翻译结果为:精简指令集计算机架构(risc)的指令。
[0130]
综上,本技术的方案,通过预先对不同架构的汇编指令翻译的过程进行分析,构建汇编指令、精简翻译结果以及预设条件的第一对应关系,并在待翻译汇编指令的设备参数,满足第一对应关系中的目标汇编指令对应的预设条件的情况下,则将与目标汇编指令对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果。本发明实施例通过对汇编指令进行分析,将符合预设条件的汇编指令翻译为精简翻译结果,而相较于等意翻译结果,精简翻译结果的条数可以更少,从而减少了指令执行的数量,提高了翻译后代码的执行效率。
[0131]
参考图3,其示出了本技术实施例提供的一种汇编指令翻译装置,所述装置包括:
[0132]
获取模块301,用于获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;
[0133]
确定模块302,用于根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;
[0134]
翻译模块303,用于在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。
[0135]
可选的,所述装置还包括:
[0136]
等意处理模块,用于在所述待翻译汇编指令的设备参数不满足所述预设条件的情况下,则对所述目标汇编指令进行等意翻译,获得所述待翻译汇编指令翻译后的结果。
[0137]
可选的,所述等意处理模块,包括:
[0138]
关系获取子模块,用于在所述待翻译汇编指令的设备参数不满足所述预设条件的情况下,获取各汇编指令与等意翻译结果的第二对应关系;
[0139]
等意识别子模块,用于从所述第二对应关系中确定与所述目标汇编指令对应的目标等意翻译结果,并将所述目标等意翻译结果作为对所述待翻译汇编指令翻译后的结果。
[0140]
可选的,所述设备参数包括:与所述待翻译汇编指令对应的寄存器中的操作数的数值;所述装置还包括:
[0141]
第一判断模块,用于在已获取到所述操作数的数值,且所述操作数的数值满足所述第一对应关系中目标汇编指令对应的预设操作数值条件的情况下,则确定所述设备参数满足所述预设条件;
[0142]
第二判断模块,用于在未获取到所述操作数的数值,或所述操作数的数值不满足所述预设操作数值条件的情况下,则确定所述设备参数不满足所述预设条件。
[0143]
可选的,所述设备参数包括:与所述待翻译汇编指令对应的处理器状态;所述装置还包括:
[0144]
第三判断模块,用于在已获取到所述处理器状态,且所述处理器状态满足所述第一对应关系中目标汇编指令对应的预设处理器状态条件的情况下,则确定所述设备参数满
足所述预设条件;
[0145]
第四判断模块,用于在未获取到所述处理器状态,或所述处理器状态不满足所述预设处理器状态条件的情况下,则确定所述设备参数不满足所述预设条件。
[0146]
可选的,所述装置还包括:
[0147]
等意翻译模块,用于对各汇编指令分别进行等意翻译,获得所述汇编指令各自对应的等意翻译结果;
[0148]
确定模块,用于在所述汇编指令的设备参数满足预设条件的情况下,根据所述预设条件确定所述等意翻译结果中的冗余翻译内容;
[0149]
删除模块,用于删除所述等意翻译结果中的冗余翻译内容,获得精简翻译结果;
[0150]
建立模块,用于构建所述汇编指令、所述精简翻译结果以及所述预设条件之间的第一对应关系。
[0151]
可选的,所述待翻译汇编指令和所述汇编指令为:复杂指令集计算机架构的指令;
[0152]
所述精简翻译结果为:精简指令集计算机架构的指令。
[0153]
综上,本技术的方案,预先对不同架构的汇编指令翻译的过程进行分析,构建汇编指令、精简翻译结果以及预设条件的第一对应关系,并在待翻译汇编指令的设备参数,满足第一对应关系中的目标汇编指令对应的预设条件的情况下,则将与目标汇编指令对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果,本发明实施例通过对汇编指令进行分析,将符合预设条件的汇编指令翻译为精简翻译结果,可以使用更高效的精简汇编指令作为翻译结果,来代替原本的等意翻译结果,而相较于等意翻译结果,精简翻译结果的条数可以更少,从而减少了指令执行的数量,提高了翻译后代码的执行效率。
[0154]
图4是根据一示例性实施例示出的一种电子设备600的框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0155]
参照图4,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(i/o)的接口612,传感器组件614,以及通信组件616。
[0156]
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
[0157]
存储器604用于存储各种类型的数据以支持在电子设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,多媒体等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0158]
电源组件606为电子设备600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
[0159]
多媒体组件608包括在所述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的分界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或多媒体模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0160]
音频组件610用于输出和/或输入音频信号。例如,音频组件610包括一个麦克风(mic),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
[0161]
i/o接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0162]
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到电子设备600的打开/关闭状态,组件的相对定位,例如所述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0163]
通信组件616用于便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0164]
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于实现本技术实施例提供的一种汇编指令翻译方法。
[0165]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,所述非临时性存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0166]
图5是根据一示例性实施例示出的一种电子设备700的框图。例如,电子设备700可以被提供为一服务器。参照图5,电子设备700包括处理组件722,其进一步包括一个或多个
处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行本技术实施例提供的一种汇编指令翻译方法。
[0167]
电子设备700还可以包括一个电源组件726被配置为执行电子设备700的电源管理,一个有线或无线网络接口750被配置为将电子设备700连接到网络,和一个输入输出(i/o)接口758。电子设备700可以操作基于存储在存储器732的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
[0168]
本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现所述的一种汇编指令翻译方法。
[0169]
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求指出。
[0170]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
技术特征:
1.一种汇编指令翻译方法,其特征在于,所述方法包括:获取待翻译汇编指令对应的设备参数,以及各汇编指令与精简翻译结果的第一对应关系;所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;根据所述设备参数和所述第一对应关系,确定目标汇编指令;在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述设备参数不满足所述预设条件的情况下,则对所述目标汇编指令进行等意翻译,获得所述待翻译汇编指令翻译后的结果。3.根据权利要求2所述的方法,其特征在于,所述对所述目标汇编指令进行等意翻译,包括:在所述设备参数不满足所述预设条件的情况下,获取各汇编指令与等意翻译结果的第二对应关系;从所述第二对应关系中确定与所述目标汇编指令对应的目标等意翻译结果,并将所述目标等意翻译结果作为对所述待翻译汇编指令翻译后的结果。4.根据权利要求1-3任一项所述的方法,其特征在于,所述设备参数包括:与所述待翻译汇编指令对应的寄存器中的操作数的数值;所述方法还包括:在已获取到所述操作数的数值,且所述操作数的数值满足所述第一对应关系中目标汇编指令对应的预设操作数值条件的情况下,则确定所述设备参数满足所述预设条件;在未获取到所述操作数的数值,或所述操作数的数值不满足所述预设操作数值条件的情况下,则确定所述设备参数不满足所述预设条件。5.根据权利要求1-3任一项所述的方法,其特征在于,所述设备参数包括:与所述待翻译汇编指令对应的处理器状态;所述方法还包括:在已获取到所述处理器状态,且所述处理器状态满足所述第一对应关系中目标汇编指令对应的预设处理器状态条件的情况下,则确定所述设备参数满足所述预设条件;在未获取到所述处理器状态,或所述处理器状态不满足所述预设处理器状态条件的情况下,则确定所述设备参数不满足所述预设条件。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:对各汇编指令分别进行等意翻译,获得所述汇编指令各自对应的等意翻译结果;在所述汇编指令的设备参数满足预设条件的情况下,根据所述预设条件确定所述等意翻译结果中的冗余翻译内容;删除所述等意翻译结果中的冗余翻译内容,获得精简翻译结果;构建所述汇编指令、所述精简翻译结果以及所述预设条件之间的第一对应关系。7.根据权利要求1-6任一项所述的方法,其特征在于,所述待翻译汇编指令和所述汇编指令为:复杂指令集计算机架构的指令;所述精简翻译结果为:精简指令集计算机架构的指令。8.一种汇编指令翻译装置,其特征在于,所述装置包括:获取模块,用于获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的
第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;确定模块,用于根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;翻译模块,用于在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。9.一种电子设备,其特征在于,包括有处理器;以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,所述精简翻译结果具有对应的预设条件;所述预设条件是针对所述设备参数构建的条件;根据所述设备参数和所述第一对应关系,确定所述目标汇编指令;在所述设备参数满足所述目标汇编指令对应的预设条件的情况下,则将与所述预设条件对应的目标精简翻译结果,作为对所述待翻译汇编指令翻译后的结果。10.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-7中任一项所述的方法。
技术总结
本发明提供了一种汇编指令翻译方法、装置、电子设备及可读存储介质,包括:获取待翻译汇编指令的设备参数,以及各汇编指令与精简翻译结果的第一对应关系,精简翻译结果具有对应的预设条件;根据设备参数和第一对应关系,确定目标汇编指令,在待翻译汇编指令的设备参数,满足第一对应关系中的目标汇编指令对应的预设条件的情况下,则将与预设条件对应的目标精简翻译结果,作为对待翻译汇编指令翻译后的结果,本发明可以使用更高效的精简汇编指令作为翻译结果,来代替原本的等意翻译结果,而相较于等意翻译结果,精简翻译结果的条数可以更少,从而提高了翻译后代码的执行效率。从而提高了翻译后代码的执行效率。从而提高了翻译后代码的执行效率。
技术研发人员:朱琛
受保护的技术使用者:龙芯中科技术股份有限公司
技术研发日:2023.06.19
技术公布日:2023/9/16
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种智能戒指组件的制作方法 下一篇:一种市政施工安全防护护栏的制作方法