指令转换方法和装置与流程

文档序号:17159531发布日期:2019-03-20 00:28阅读:565来源:国知局
指令转换方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种指令转换方法和一种指令转换装置。



背景技术:

llvm(lowlevelvirtualmachine,底层虚拟机)编译器是一种可以将高级语言代码,转换为目标平台代码的编译器。llvm编译器首先将高级语言代码转换为llvm的中间语言指令ir,然后再将中间指令转换为目标平台代码。

llvm编译器的中间语言指令ir,需要经过selectiondag节点选择器转换为带有的selectiondag节点的指令。isd命令空间包括一个记录所有selectiondag节点类型和值类型的枚举列表,其中的selectiondag节点包括:多精度加减法指令addc,subc,adde,sube。

现有技术中只实现了将多精度加减法指令addc,subc,adde,sube,转换为32位的mips平台上的指令的转换操作,未实现64位mips平台的转换操作。



技术实现要素:

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种指令转换方法和相应的一种指令转换装置。

为了解决上述问题,本发明实施例公开了一种指令转换方法,包括:

获取底层虚拟机llvm编译器中间代码的算数指令;

确定所述llvm编译器中间代码的算数指令的操作数和操作码;

确定目标平台的系统位数;

在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

采用所述操作数以及目标操作码,生成目标平台的算数指令。

优选的,所述目标平台为mips平台,所述算数指令包括:addc加法指令和subc减法指令;所述addc加法指令的操作码为addc操作码;所述subc减法指令的操作码为subc操作码;

所述在所述目标平台的目标指令集中,确定与所述llvm编译器中间代码的算数指令的操作码对应的目标操作码的步骤包括:

若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码daddu;

若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码dsubu;

若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码daddiu;

若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码dsubiu。

优选的,所述addc加法指令和所述subc减法指令的操作数包括:第一操作数和第二操作数;所述采用所述操作数以及目标操作码,生成目标平台的算数指令的步骤包括:

采用所述第一操作数、所述第二操作数以及所述加法操作码daddu,生成addc加法指令在64位目标平台对应的加法指令;或,

采用所述第一操作数、所述第二操作数以及所述减法操作码dsubu,生成subc减法指令在64位目标平台对应的减法指令;或,

采用所述第一操作数、所述第二操作数以及所述加法操作码daddiu,生成addc加法指令在64位目标平台对应的加法指令;或,

采用所述第一操作数、所述第二操作数以及所述减法操作码dsubiu,生成subc减法指令在64位目标平台对应的减法指令。

优选的,所述目标平台为mips平台,所述算数指令包括:adde加法指令和sube减法指令;所述adde加法指令的操作码为adde操作码;所述sube减法指令的操作码为sube操作码;

所述在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码的步骤包括:

若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码daddu;

若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码dsubu;

若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码daddiu;

若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码dsubiu。

优选的,所述adde加法指令和所述sube减法指令的操作数包括:第一操作数、第二操作数、输入进位值;

所述采用所述操作数以及目标操作码,生成目标平台的算数指令的步骤包括:

采用所述第一操作数、第二操作数以及所述加法操作码daddu,生成daddu加法指令;或,

采用所述第一操作数、第二操作数以及所述减法操作码dsubu,生成dsubu减法指令;或,

采用所述第一操作数、第二操作数以及所述加法操作码daddiu,生成daddiu加法指令;或,

采用所述第一操作数、第二操作数以及所述减法操作码dsubiu,生成dsubiu减法指令;

采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令;

结合所述daddu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

结合所述dsubu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

结合所述daddiu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

结合所述dsubiu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令。

优选的,所述采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令的步骤包括:

对于所述daddu加法指令,生成第一输出进位值计算指令;所述第一输出进位值计算指令用于执行采用所述daddu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

对于所述dsubu减法指令,生成第二输出进位值计算指令;所述第二输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

对于daddiu加法指令,生成第三输出进位值计算指令;所述第三输出进位值计算指令用于执行采用所述daddiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

对于dsubiu减法指令,生成第四输出进位值计算指令;所述第四输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作。

优选的,所述采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令的步骤还包括:

生成特定输出进位值计算指令;所述特定输出进位值计算指令用于执行若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值的操作。

本发明实施例还公开了一种指令转换装置,包括:

算数指令获取模块,用于获取llvm编译器中间代码的算数指令;

操作参数确定模块,用于确定所述llvm编译器中间代码的算数指令的操作数和操作码;

系统位数确定模块,用于确定目标平台的系统位数;

目标操作码确定模块,用于在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

算数指令生成模块,用于采用所述操作数以及目标操作码,生成目标平台的算数指令。

优选的,所述目标平台为mips平台,所述算数指令包括:addc加法指令和subc减法指令;所述addc加法指令的操作码为addc操作码;所述subc减法指令的操作码为subc操作码;

所述目标操作码确定模块包括:

第一操作码确定子模块,用于若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码daddu;

第二操作码确定子模块,用于若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码dsubu;

第三操作码确定子模块,用于若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码daddiu;

第四操作码确定子模块,用于若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码dsubiu。

优选的,所述addc加法指令和所述subc减法指令的操作数包括:第一操作数和第二操作数;所述算数指令生成模块包括:

第一算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述加法操作码daddu,生成addc加法指令在64位目标平台对应的加法指令;或,

第二算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述减法操作码dsubu,生成subc减法指令在64位目标平台对应的减法指令;或,

第三算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述加法操作码daddiu,生成addc加法指令在64位目标平台对应的加法指令;或,

第四算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述减法操作码dsubiu,生成subc减法指令在64位目标平台对应的减法指令。

优选的,所述目标平台为mips平台,所述算数指令包括:adde加法指令和sube减法指令;所述adde加法指令的操作码为adde操作码;所述sube减法指令的操作码为sube操作码;

所述目标操作码确定包括:

第五操作码确定子模块,用于若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码daddu;

第六操作码确定子模块,用于若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码dsubu;

第七操作码确定子模块,用于若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码daddiu;

第八操作码确定子模块,用于若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码dsubiu。

优选的,所述adde加法指令和所述sube减法指令的操作数包括:第一操作数、第二操作数、输入进位值;

所述算数指令生成模块包括:

第五算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述加法操作码daddu,生成daddu加法指令;或,

第六算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述减法操作码dsubu,生成dsubu减法指令;或,

第七算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述加法操作码daddiu,生成daddiu加法指令;或,

第八算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述减法操作码dsubiu,生成dsubiu减法指令;

输出进位值计算指令生成子模块,用于采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令;

第九算数指令生成子模块,用于结合所述daddu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

第十算数指令生成子模块,用于结合所述dsubu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

第十一算数指令生成子模块,用于结合所述daddiu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

第十二算数指令生成子模块,用于结合所述dsubiu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令。

优选的,所述输出进位值计算指令生成子模块包括:

第一输出进位值计算单元,用于对于所述daddu加法指令,生成第一输出进位值计算指令;所述第一输出进位值计算指令用于执行采用所述daddu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

第二输出进位值计算单元,用于对于所述dsubu减法指令,生成第二输出进位值计算指令;所述第二输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

第三输出进位值计算单元,用于对于daddiu加法指令,生成第三输出进位值计算指令;所述第三输出进位值计算指令用于执行采用所述daddiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

第四输出进位值计算单元,用于对于dsubiu减法指令,生成第四输出进位值计算指令;所述第四输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作。

优选的,所述输出进位值计算指令生成子模块还包括:

特定输出进位值计算单元,用于生成特定输出进位值计算指令;所述特定输出进位值计算指令用于执行若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值的操作。

本发明实施例还公开了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:

获取llvm编译器中间代码的算数指令;

确定所述llvm编译器中间代码的算数指令的操作数和操作码;

确定目标平台的系统位数;

在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

采用所述操作数以及目标操作码,生成目标平台的算数指令。

本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述方法的步骤。

本发明实施例包括以下优点:

在本发明实施例中,llvm编译器在将中间代码的算数指令转换为目标平台的算数指令时,可以根据目标平台的系统位数,生成与目标系统的系统位数匹配的算数指令。

本发明实施例中,llvm编译器在将中间代码的算数指令转换为mips平台的算数指令时,对于32位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc/adde/sube指令)转为32位mips平台上的算数指令。对于64位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc/adde/sube指令)转为64位mips平台上的算数指令。

附图说明

图1是本发明的一种指令转换方法实施例1的步骤流程图;

图2是本发明的一种指令转换方法实施例2的步骤流程图;

图3是本发明的一种指令转换方法实施例3的步骤流程图;

图4是本发明的一种指令转换装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种指令转换方法实施例1的步骤流程图,具体可以包括如下步骤:

步骤101,获取llvm编译器中间代码的算数指令;

在llvm编译器将高级语言的指令转换为目标平台的指令的过程中,llvm编译器首先将高级语言的指令转换为中间语言指令ir,然后将中间语言指令ir转换为带selectiondag节点的指令。

在本发明实施例中,中间代码的算数指令就是带selectiondag节点的算数指令。算数指令的selectiondag节点可以包括:多精度加法节点addc和adde,多精度减法节点subc和sube。

addc/subc是多精度加法和减法的进位设置节点,addc/subc节点有相同类型的两个操作数,并产生两个结果,第一个是正常加或减的结果,第二个是进位标志结果。

adde/sube是多精度加法和减法的进位应用节点,该节点有三个操作数,前两个是正常加或减的左右两个数,第三个操作数是进位标志的输入,该节点产生两个结果,第一个是正常加或减的结果,第二个是进位标志的输出。这些节点都读和写一个进位标志从而允许他们将任意大的数的加和减串联在一起。

步骤102,确定所述llvm编译器中间代码的算数指令的操作数和操作码;

带selectiondag节点的算数指令包括操作数和操作码,其中操作码就是selectiondag节点。

操作数相当于指令的输入,操作码则描述了对输入的处理方式。

步骤103,确定目标平台的系统位数;

在本发明实施例中,目标平台可以包括mips平台。mips平台的系统位数可以包括32位和62位。

具体的,可以通过abi(applicationbinaryinterface,应用程序二进制接口)来判断mips平台的系统位数。

在mips平台上是通过abi为o32或n64来区分,系统位数是32位还是64位。

步骤104,在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

将中间代码的指令转换为目标平台指令的实质就是,采用目标平台的指令集中的操作码,生成与中间代码的算数具有相同功能的指令。

目标操作码可以是预先设定的,可以实现中间代码的算法指令的功能的操作码。

对于不同系统位数的目标平台,用于实现中间代码的算法指令的功能的操作码可以是不同的。因此,需要选定与目标平台的系统位数匹配的操作码。

步骤105,采用所述操作数以及目标操作码,生成目标平台的算数指令。

采用中间代码的算数指令的操作数,以及目标平台的指令集中的目标操作码,生成目标平台的指令。

例如,采用中间代码的算数指令的操作数,以及mips平台的指令集中的目标操作码,生成mips平台的指令。

在本发明实施例中,llvm编译器在将中间代码的算数指令转换为目标平台的算数指令时,可以根据目标平台的系统位数,生成与目标系统的系统位数匹配的算数指令。

本发明实施例中,llvm编译器在将中间代码的算数指令转换为mips平台的算数指令时,对于32位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc/adde/sube指令)转为32位mips平台上的算数指令。对于64位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc/adde/sube指令)转为64位mips平台上的算数指令。

参照图2,示出了本发明的一种指令转换方法实施例2的步骤流程图,所述目标平台为mips(microprocessorwithoutinterlockedpipedstages,无内部互锁流水级的微处理器)平台,所述的方法具体可以包括如下步骤:

步骤201,获取llvm编译器中间代码的算数指令;所述中间代码的算数指令包括:addc加法指令和subc减法指令;

步骤202,确定所述llvm编译器中间代码的算数指令的操作数和操作码;

在发明实施例中,所述addc加法指令的操作码为addc操作码;所述subc减法指令的操作码为subc操作码;

步骤203,确定所述mips平台的系统位数;

mips平台可以包括32位系统和64位系统。

步骤204,在所述mips平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

在本发明实施例中,所述步骤204可以包括如下子步骤:

子步骤s11,若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码daddu;

子步骤s12,若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码dsubu;

子步骤s13,若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码daddiu;

子步骤s14,若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码dsubiu;

子步骤s15,若所述算数指令为addc加法指令,目标平台的系统位数为32位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码addu;

子步骤s16,若所述算数指令为subc减法指令,目标平台的系统位数为32位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码subu;

子步骤s17,若所述算数指令为addc加法指令,目标平台的系统位数为32位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码addiu;

子步骤s18,若所述算数指令为subc减法指令,目标平台的系统位数为32位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码subiu。

步骤205,采用所述操作数以及目标操作码,生成所述mips平台的算数指令。

在本发明实施例中,所述addc加法指令和所述subc减法指令的操作数包括:第一操作数和第二操作数;

第一操作数具体为左操作数lhs(left-handside),第二操作数具体为右操作数rhs(right-handside)。

所述步骤205可以包括如下子步骤:

子步骤s21,采用所述第一操作数、所述第二操作数以及所述加法操作码daddu,生成addc加法指令在64位目标平台对应的加法指令;或,

若mips平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及加法操作码daddu,生成addc加法指令在64位mips平台对应的加法指令。

子步骤s22,采用所述第一操作数、所述第二操作数以及所述减法操作码dsubu,生成subc减法指令在64位目标平台对应的减法指令;或,

若mips平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及减法操作码dsubu,生成subc减法指令在64位mips平台对应的减法指令。

子步骤s23,采用所述第一操作数、所述第二操作数以及所述加法操作码daddiu,生成addc加法指令在64位目标平台对应的加法指令;或,

若mips平台的系统位数为64位,且addc加法指令的操作数包含立即数,则采用第一操作数、第二操作数以及加法操作码daddiu,生成addc加法指令在64位mips平台对应的加法指令。

子步骤s24,采用所述第一操作数、所述第二操作数以及所述减法操作码dsubiu,生成subc减法指令在64位目标平台对应的减法指令;或,

若mips平台的系统位数为64位,且subc减法指令的操作数包含立即数,则采用第一操作数、第二操作数以及减法操作码dsubiu,生成subc减法指令在64位mips平台对应的减法指令。

子步骤s25,采用所述第一操作数、所述第二操作数以及所述加法操作码addu,生成addc加法指令在32位目标平台对应的加法指令;或,

若mips平台的系统位数为32位,且addc加法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及加法操作码addu,生成addc加法指令在32位mips平台对应的加法指令。

子步骤s26,采用所述第一操作数、所述第二操作数以及所述减法操作码subu,生成subc减法指令在32位目标平台对应的减法指令;或,

若mips平台的系统位数为32位,且subc减法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及减法操作码subu,生成subc减法指令在32位mips平台对应的减法指令。

子步骤s27,采用所述第一操作数、所述第二操作数以及所述加法操作码addiu,生成addc加法指令在32位目标平台对应的加法指令;或,

若mips平台的系统位数为32位,且addc加法指令的操作数包含立即数,则采用第一操作数、第二操作数以及加法操作码addiu,生成addc加法指令在32位mips平台对应的加法指令。

子步骤s28,采用所述第一操作数、所述第二操作数以及所述减法操作码subiu,生成subc减法指令在32位目标平台对应的减法指令。

若mips平台的系统位数为32位,且subc减法指令的操作数包含立即数,则采用第一操作数、第二操作数以及减法操作码subiu,生成subc减法指令在32位mips平台对应的减法指令。

本发明实施例中,llvm编译器在将中间代码的算数指令转换为mips平台的算数指令时,对于32位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc指令)转为32位mips平台上的算数指令。对于64位的mips平台,llvm编译器可以将中间代码的算数指令(addc/subc指令)转为64位mips平台上的算数指令。

为了使本领域技术人员能够更好地理解本发明实施例,下面通过示例对本发明实施例加以说明:

如下所示为本发明实施例中将subc指令转换为64位mips平台的dsubu减法指令的代码:

其中,gpr64表示操作数类型是64位,$lhs表示左操作数,$rhs表示右操作数。

subc指令包括:操作码subc,64位的左操作数lhs和64位的右操作数rhs。

dsubu减法指令包括:操作码dsubu,64位的左操作数lhs和64位的右操作数rhs。

如下所示为本发明实施例中将addc指令转换为64位mips平台的dsubu加法指令代码:

其中,addc指令包括:操作码addc,64位的左操作数lhs和64位的右操作数rhs。

daddu指令包括:操作码adddu,64位的左操作数lhs和64位的右操作数rhs。

如下所示为本发明实施例中将addc指令转换为64位mips平台的daddiu加法指令的代码:

其中,$imm表示立即数。

addc指令包括:操作码addc,64位的左操作数lhs和64位的立即数imm。

daddiu指令包括:操作码daddiu,64位的左操作数lhs和64位的立即数imm。

参照图3,示出了本发明的一种指令转换方法实施例3的步骤流程图,所述目标平台为mips(microprocessorwithoutinterlockedpipedstages,无内部互锁流水级的微处理器)平台,所述的方法具体可以包括如下步骤:

步骤301,获取llvm编译器中间代码的算数指令;所述中间代码的算数指令包括:adde加法指令和sube减法指令;

步骤302,确定所述llvm编译器中间代码的算数指令的操作数和操作码;

在本发明实施例中,所述adde加法指令的操作码为adde操作码;所述sube减法指令的操作码为sube操作码;

步骤303,确定mips平台的系统位数;

mips平台可以包括32位系统和64位系统。

步骤304,在所述mips的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

在本发明实施例中,所述步骤304可以包括如下子步骤:

子步骤s31,若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码daddu;

子步骤s32,若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码dsubu;

子步骤s33,若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码daddiu;

子步骤s34,若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码dsubiu;

子步骤s35,若所述算数指令为adde加法指令,目标平台的系统位数为32位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码addu;

子步骤s36,若所述算数指令为sube减法指令,目标平台的系统位数为32位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码subu;

子步骤s37,若所述算数指令为adde加法指令,目标平台的系统位数为32位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码addiu;

子步骤s38,若所述算数指令为sube减法指令,目标平台的系统位数为32位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码subiu。

步骤305,采用所述操作数以及目标操作码,生成所述mips的算数指令。

在本发明实施例中,所述adde加法指令和所述sube减法指令的操作数包括:第一操作数、第二操作数、输入进位值;

第一操作数具体为左操作数lhs(left-handside),第二操作数具体为右操作数rhs(right-handside),输入进位值是输入进位标志carry的值。

在本发明实施例中,所述步骤305可以包括如下子步骤:

子步骤s41,采用所述第一操作数、第二操作数以及所述加法操作码daddu,生成daddu加法指令;或,

若mips平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及加法操作码daddu,生成daddu加法指令;

子步骤s42,采用所述第一操作数、第二操作数以及所述减法操作码dsubu,生成dsubu减法指令;

若mips平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及减法操作码dsubu,生成dsubu减法指令;

子步骤s43,采用所述第一操作数、第二操作数以及所述加法操作码daddiu,生成daddiu加法指令;

若mips平台的系统位数为64位,且adde加法指令的操作数包含立即数,则采用第一操作数、第二操作数以及加法操作码daddiu,生成daddiu加法指令。

子步骤s44,采用所述第一操作数、第二操作数以及所述减法操作码dsubiu,生成dsubiu减法指令;

若mips平台的系统位数为64位,且sube减法指令的操作数包含立即数,则采用第一操作数、第二操作数以及减法操作码dsubiu,生成dsubiu减法指令。

子步骤s45,采用所述第一操作数、第二操作数以及所述加法操作码addu,生成addu加法指令;

若mips平台的系统位数为32位,且adde加法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及加法操作码addu,生成addu加法指令。

子步骤s46,采用所述第一操作数、第二操作数以及所述减法操作码subu,生成subu减法指令;

若mips平台的系统位数为32位,且sube减法指令的操作数不包含立即数,则采用第一操作数、第二操作数以及减法操作码subu,生成subu减法指令。

子步骤s47,采用所述第一操作数、第二操作数以及所述加法操作码addiu,生成addiu加法指令;

若mips平台的系统位数为32位,且adde加法指令的操作数包含立即数,则采用第一操作数、第二操作数以及加法操作码addiu,生成addiu加法指令。

子步骤s48,采用所述第一操作数、第二操作数以及所述减法操作码subiu,生成subiu减法指令;

若mips平台的系统位数为32位,且sube减法指令的操作数包含立即数,则采用第一操作数、第二操作数以及减法操作码subiu,生成subiu减法指令。

子步骤s49,采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令;

在本发明实施例中,所述子步骤s49可以包括如下子步骤:

子步骤s491,对于所述daddu加法指令,生成第一输出进位值计算指令;所述第一输出进位值计算指令用于执行采用所述daddu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

在发明实施例中,不同指令的输出进位值的计算方式是不同的。

对于执行加法操作的指令,其输出进位值等于输入进位值,加上加法运算的进位值。

对于执行减法操作的指令,其输出进位值等于输入进位值,减去减法运算的借位值。

具体的,可以采用比较指令sltu确定加法进位值。sltu指令的意思是,如果条件满足就置1,否则置0。

daddu加法指令的运算结果为第一操作数和第二操作数的相加值。sltu指令通过比较daddu加法指令的运算结果与第一操作数或第二操作数的任意一个,若daddu加法指令的运算结果小于第一操作数或第二操作数中的任意一个,则进位1,否则为0。即判断和小于任意一个加数时,进位1,否则不进位。

子步骤s492,对于所述dsubu减法指令,生成第二输出进位值计算指令;所述第二输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

对于dsubu减法指令,sltu指令比较第一操作数和第二操作数的值,若小于则借位1,否则借位0。第一操作数相当于被减数,第二操作数相当于减数,即判断被减数小于减数时,借位1,否则借位0。

子步骤s493,对于daddiu加法指令,生成第三输出进位值计算指令;所述第三输出进位值计算指令用于执行采用所述daddiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

daddiu加法指令的运算结果为第一操作数和第二操作数的相加值。sltu指令比较daddiu加法指令的运算结果与第一操作数或第二操作数的任意一个,若daddiu加法指令的运算结果小于第一操作数或第二操作数中的任意一个,则进位1,否则为0。即判断和小于任意一个加数时,进位1,否则不进位。

子步骤s494,对于dsubiu减法指令,生成第四输出进位值计算指令;所述第四输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作。

对于dsubiu减法指令,sltu指令比较第一操作数和第二操作数的值,若小于则借位1,否则借位0。第一操作数相当于被减数,第二操作数相当于减数,即判断被减数小于减数时,借位1,否则借位0。

子步骤s495,对于addu加法指令,生成第五输出进位值计算指令;所述第五输出进位值计算指令用于执行采用所述addu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

addu加法指令的运算结果为第一操作数和第二操作数的相加值。sltu指令比较addu加法指令的运算结果与第一操作数或第二操作数的任意一个,若addu加法指令的运算结果小于第一操作数或第二操作数中的任意一个,则进位1,否则为0。即判断和小于任意一个加数时,进位1,否则不进位。

子步骤s496,对于subu减法指令,生成第六输出进位值计算指令;所述第六输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

对于subu减法指令,sltu指令比较第一操作数和第二操作数的值,若小于则借位1,否则借位0。第一操作数相当于被减数,第二操作数相当于减数,即判断被减数小于减数时,借位1,否则借位0。

子步骤s497,对于addiu加法指令,生成第七输出进位值计算指令;所述第七输出进位值计算指令用于执行采用所述addiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

addiu加法指令的运算结果为第一操作数和第二操作数的相加值。sltu指令比较addiu加法指令的运算结果与第一操作数或第二操作数的任意一个,若addiu加法指令的运算结果小于第一操作数或第二操作数中的任意一个,则进位1,否则为0。即判断和小于任意一个加数时,进位1,否则不进位。

子步骤s498,对于subiu减法指令,生成第八输出进位值计算指令;所述第八输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

对于subiu减法指令,sltu指令比较第一操作数和第二操作数的值,若小于则借位1,否则借位0。第一操作数相当于被减数,第二操作数相当于减数,即判断被减数小于减数时,借位1,否则借位0。

子步骤s499,生成特定输出进位值计算指令;所述特定输出进位值计算指令用于执行若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值的操作。

若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值。

子步骤s50,结合所述daddu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

子步骤s51,结合所述dsubu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

子步骤s52,结合所述daddiu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

子步骤s53,结合所述dsubiu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

子步骤s54,结合所述addu加法指令和所述输出进位值计算指令,作为adde加法指令在32位目标平台对应的加法指令;或,

子步骤s55,结合所述subu减法指令和所述输出进位值计算指令,作为sube减法指令在32位目标平台对应的减法指令;或,

子步骤s56,结合所述addiu加法指令和所述输出进位值计算指令,作为adde加法指令在32位目标平台对应的加法指令;或,

子步骤s57,结合所述subiu减法指令和所述输出进位值计算指令,作为sube减法指令在32位目标平台对应的减法指令。

本发明实施例中,llvm编译器在将中间代码的算数指令转换为mips平台的算数指令时,对于32位的mips平台,llvm编译器可以将中间代码的算数指令(adde/sube指令)转为32位mips平台上的算数指令。对于64位的mips平台,llvm编译器可以将中间代码的算数指令(adde/sube指令)转为64位mips平台上的算数指令。

在本发明实施例中,addc加法指令只包括两个操作数,输出左操作数lhs与右操作数rhs的相加值。adde加法指令包括三个操作数,输出左操作数lhs与右操作数rhs的相加值,以及输出进位值;输出进位值等于输入进位值加上左操作数lhs与右操作数rhs的相加的进位值。

因此,adde加法指令转为mips平台的对应指令,与addc指令转为mips平台的对应指令相比,只增加了一个用于表示进位值的sltu比较指令。

例如,将addc加法指令转换为64位的mips的指令为:daddu加法指令;

将adde加法指令转换为64位的mips的指令包括:dadd加法指令,和用于表示进位值的sltu比较指令。

为了使本领域技术人员能够更好地理解本发明实施例,下面通过示例对本发明实施例加以说明:

如下,所示为本发明实施例中将adde指令转换为32位或64位mips平台的加法指令的代码。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图4,示出了本发明的一种指令转换装置实施例的结构框图,具体可以包括如下模块:

算数指令获取模块401,用于获取llvm编译器中间代码的算数指令;

操作参数确定模块402,用于确定所述llvm编译器中间代码的算数指令的操作数和操作码;

系统位数确定模块403,用于确定目标平台的系统位数;

目标操作码确定模块404,用于在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

算数指令生成模块405,用于采用所述操作数以及目标操作码,生成目标平台的算数指令。

在本发明实施例中的一种示例中,所述目标平台为mips平台,所述算数指令包括:addc加法指令和subc减法指令;所述addc加法指令的操作码为addc操作码;所述subc减法指令的操作码为subc操作码;

所述目标操作码确定模块404可以包括:

第一操作码确定子模块,用于若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码daddu;

第二操作码确定子模块,用于若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码dsubu;

第三操作码确定子模块,用于若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码daddiu;

第四操作码确定子模块,用于若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码dsubiu。

在本发明实施例中,所述addc加法指令和所述subc减法指令的操作数包括:第一操作数和第二操作数;所述算数指令生成模块405可以包括:

第一算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述加法操作码daddu,生成addc加法指令在64位目标平台对应的加法指令;或,

第二算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述减法操作码dsubu,生成subc减法指令在64位目标平台对应的减法指令;或,

第三算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述加法操作码daddiu,生成addc加法指令在64位目标平台对应的加法指令;或,

第四算数指令生成子模块,用于采用所述第一操作数、所述第二操作数以及所述减法操作码dsubiu,生成subc减法指令在64位目标平台对应的减法指令。

在本发明实施例中的另一种示例中,所述目标平台为mips平台,所述算数指令包括:adde加法指令和sube减法指令;所述adde加法指令的操作码为adde操作码;所述sube减法指令的操作码为sube操作码;

所述目标操作码确定404可以包括:

第五操作码确定子模块,用于若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码daddu;

第六操作码确定子模块,用于若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码dsubu;

第七操作码确定子模块,用于若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码daddiu;

第八操作码确定子模块,用于若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码dsubiu。

在本发明实施例中,所述adde加法指令和所述sube减法指令的操作数包括:第一操作数、第二操作数、输入进位值;

所述算数指令生成模块405可以包括:

第五算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述加法操作码daddu,生成daddu加法指令;或,

第六算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述减法操作码dsubu,生成dsubu减法指令;或,

第七算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述加法操作码daddiu,生成daddiu加法指令;或,

第八算数指令生成子模块,用于采用所述第一操作数、第二操作数以及所述减法操作码dsubiu,生成dsubiu减法指令;

输出进位值计算指令生成子模块,用于采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令;

第九算数指令生成子模块,用于结合所述daddu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

第十算数指令生成子模块,用于结合所述dsubu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

第十一算数指令生成子模块,用于结合所述daddiu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

第十二算数指令生成子模块,用于结合所述dsubiu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令。

在本发明实施例中,所述输出进位值计算指令生成子模块可以包括:

第一输出进位值计算单元,用于对于所述daddu加法指令,生成第一输出进位值计算指令;所述第一输出进位值计算指令用于执行采用所述daddu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

第二输出进位值计算单元,用于对于所述dsubu减法指令,生成第二输出进位值计算指令;所述第二输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

第三输出进位值计算单元,用于对于daddiu加法指令,生成第三输出进位值计算指令;所述第三输出进位值计算指令用于执行采用所述daddiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

第四输出进位值计算单元,用于对于dsubiu减法指令,生成第四输出进位值计算指令;所述第四输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作。

在本发明实施例中,所述输出进位值计算指令生成子模块还可以包括:

特定输出进位值计算单元,用于生成特定输出进位值计算指令;所述特定输出进位值计算指令用于执行若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值的操作。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明实施例还公开了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:

获取llvm编译器中间代码的算数指令;

确定所述llvm编译器中间代码的算数指令的操作数和操作码;

确定目标平台的系统位数;

在所述目标平台的指令集中,确定与所述llvm编译器中间代码的算数指令操作码以及所述系统位数对应的目标操作码;

采用所述操作数以及目标操作码,生成目标平台的算数指令。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数不包含立即数,则确定与所述addc操作码对应的加法操作码daddu;

若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数不包含立即数,则确定与所述subc操作码对应的减法操作码dsubu;

若所述算数指令为addc加法指令,目标平台的系统位数为64位,且addc加法指令的操作数包含立即数,则确定与所述addc操作码对应的加法操作码daddiu;

若所述算数指令为subc减法指令,目标平台的系统位数为64位,且subc减法指令的操作数包含立即数,则确定与所述subc操作码对应的减法操作码dsubiu。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

采用所述第一操作数、所述第二操作数以及所述加法操作码daddu,生成addc加法指令在64位目标平台对应的加法指令;或,

采用所述第一操作数、所述第二操作数以及所述减法操作码dsubu,生成subc减法指令在64位目标平台对应的减法指令;或,

采用所述第一操作数、所述第二操作数以及所述加法操作码daddiu,生成addc加法指令在64位目标平台对应的加法指令;或,

采用所述第一操作数、所述第二操作数以及所述减法操作码dsubiu,生成subc减法指令在64位目标平台对应的减法指令。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数不包含立即数,则确定与所述adde操作码对应的加法操作码daddu;

若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数不包含立即数,则确定与所述sube操作码对应的减法操作码dsubu;

若所述算数指令为adde加法指令,目标平台的系统位数为64位,且adde加法指令的操作数包含立即数,则确定与所述adde操作码对应的加法操作码daddiu;

若所述算数指令为sube减法指令,目标平台的系统位数为64位,且sube减法指令的操作数包含立即数,则确定与所述sube操作码对应的减法操作码dsubiu。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

采用所述第一操作数、第二操作数以及所述加法操作码daddu,生成daddu加法指令;或,

采用所述第一操作数、第二操作数以及所述减法操作码dsubu,生成dsubu减法指令;或,

采用所述第一操作数、第二操作数以及所述加法操作码daddiu,生成daddiu加法指令;或,

采用所述第一操作数、第二操作数以及所述减法操作码dsubiu,生成dsubiu减法指令;

采用所述输入进位值、第一操作数以及所述第二操作数,生成输出进位值计算指令;

结合所述daddu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

结合所述dsubu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令;或,

结合所述daddiu加法指令和所述输出进位值计算指令,作为adde加法指令在64位目标平台对应的加法指令;或,

结合所述dsubiu减法指令和所述输出进位值计算指令,作为sube减法指令在64位目标平台对应的减法指令。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

对于所述daddu加法指令,生成第一输出进位值计算指令;所述第一输出进位值计算指令用于执行采用所述daddu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

对于所述dsubu减法指令,生成第二输出进位值计算指令;所述第二输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作;

对于daddiu加法指令,生成第三输出进位值计算指令;所述第三输出进位值计算指令用于执行采用所述daddiu加法指令的运算结果,分别与所述第一操作数和所述第二操作数进行比较,确定加法进位值;将所述输入进位值与所述加法进位值相加,得到输出进位值的操作;

对于dsubiu减法指令,生成第四输出进位值计算指令;所述第四输出进位值计算指令用于执行比较所述第一操作数和所述第二操作数,确定减法借位值;将所述输入进位值减去所述减法借位值,得到输出进位值的操作。

优选地,所述处理器执行所述程序时还可以实现以下步骤:

生成特定输出进位值计算指令;所述特定输出进位值计算指令用于执行若adde加法指令或sube减法指令的第二操作数为0,则将输入进位值作为输出进位值的操作。

本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例所述方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种指令转换方法和一种指令转换装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1