CN116661808A - 二进制翻译方法、装置、电子设备及存储介质 - Google Patents
二进制翻译方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116661808A CN116661808A CN202310925338.7A CN202310925338A CN116661808A CN 116661808 A CN116661808 A CN 116661808A CN 202310925338 A CN202310925338 A CN 202310925338A CN 116661808 A CN116661808 A CN 116661808A
- Authority
- CN
- China
- Prior art keywords
- instruction
- optimization
- translation
- uncertain
- basic block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013519 translation Methods 0.000 title claims abstract description 197
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000005457 optimization Methods 0.000 claims abstract description 265
- 230000008569 process Effects 0.000 claims abstract description 60
- 238000004364 calculation method Methods 0.000 claims description 36
- 239000002243 precursor Substances 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000009471 action Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Machine Translation (AREA)
Abstract
本发明实施例提供了一种二进制翻译方法、装置、电子设备及存储介质,其中的方法包括:翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。本发明实施例不用提前翻译后续基本块即可实现跨基本块的指令优化,可以提高翻译效率,还可以减少二进制翻译过程中冗余指令的产生,进而可以提高翻译后程序的运行效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种二进制翻译方法、装置、电子设备以及存储介质。
背景技术
二进制翻译可以将运行在一种体系结构平台的源程序转换为运行在另一种体系结构平台的目标程序,以解决二进制层面的应用程序跨指令集架构运行的问题。二进制翻译是近年来计算机技术领域的研究热点之一。
二进制翻译过程中,由于两种架构指令集的差异,导致指令集语义表达层面的差距,可能会产生较多的冗余指令,通过指令优化可以减少冗余指令,提高翻译后程序的效率。
二进制翻译以基本块(Translation Block,TB)为单位进行,指令优化通常在单一的基本块内进行。由于不同基本块之间可能存在依赖关系,因此,需要对依赖前序基本块的后续基本块提前进行翻译,才能实现跨基本块(不同基本块之间)的指令优化,但是这样将导致翻译开销增大,降低翻译效率。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种二进制翻译方法,不用提前翻译后续基本块即可实现跨基本块的指令优化,可以提高翻译效率。
相应的,本发明实施例还提供了一种二进制翻译装置、电子设备、以及一种存储介质,用以保证上述方法的实现及应用。
第一方面,本发明实施例公开了一种二进制翻译方法,所述方法包括:
翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
第二方面,本发明实施例公开了一种二进制翻译装置,所述装置包括:
翻译确定模块,用于翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
信息记录模块,用于记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
翻译优化模块,用于在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
第三方面,本发明实施例公开了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如前述中任一所述的二进制翻译方法的步骤。
第四方面,本发明实施例公开了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时能够实现本发明实施例中任一所述的二进制翻译方法。
本发明实施例提供的二进制翻译方法、装置、电子设备及存储介质包括以下优点:
本发明实施例通过跨基本块的优化算法,对单一基本块内暂时不能确定是否可进行优化的指令(不确定优化指令)的相关信息进行记录,并在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化。本发明实施例在二进制翻译过程中只需记录前序基本块中的不确定优化指令的相关信息,不用对后续基本块提前进行翻译,而是在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化,如果可以优化,则执行对应的优化动作,完成对前序基本块的优化。本发明实施例既降低了翻译器的开销,又可以准确识别并完成可以实施的跨基本块的指令优化。进一步地,本发明通过跨基本块优化算法,可以识别并实施更多更深层次的优化,可以减少二进制翻译过程中冗余指令(语义)的产生,可以提高翻译后程序的运行效率。
附图说明
图1是本发明的一种二进制翻译方法实施例的步骤流程图;
图2是本发明的一种二进制翻译方法的运行架构示意图;
图3是本发明的示例一的翻译及优化过程示意图;
图4是本发明的一种二进制翻译装置实施例的结构框图;
图5是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中的术语“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本发明实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
二进制翻译可以用来解决二进制层面的应用程序跨指令集架构(InstructionSet Architecture,ISA)运行的问题。具体而言,二进制翻译技术可将一种指令集架构中的指令序列转化成另一种指令集架构中的指令序列。例如,二进制翻译可以将x86指令集架构中的指令序列翻译成arm指令集架构(如arm64)中的指令序列,反之亦然。二进制翻译包括静态翻译和动态翻译两种。静态翻译是在源平台的二进制程序A执行之前,对该二进制程序A进行翻译,以将该二进制程序A翻译成目标平台上的二进制程序文件B。基于静态翻译技术,一次翻译得到的翻译结果可以被多次使用。动态翻译是在二进制程序运行时对执行到的片段进行翻译。本发明实施例的二进制翻译方法可应用于动态翻译,以基本块为单元进行翻译。一个基本块一般以控制流改变指令(如跳转、函数调用等)为结尾。
本发明实施例中,源程序指的是待进行二进制翻译的程序,源程序可以是任意类型的应用程序。源平台指可运行源程序的机器平台。在一些实施例中,源平台也可称为客户机。源平台的处理器可以是基于第一指令集架构的处理器。该第一指令集架构例如可以是x86指令集架构,也可以是arm指令集架构(如arm64)。源程序是基于第一指令集架构开发的程序,因此,源程序可以在源平台上正常运行。目标平台是希望移植源程序的机器平台。在一些实施例中,目标平台也可称为主机。目标平台的处理器可以是基于第二指令集架构的处理器。该第二指令集架构与第一指令集架构为不同的指令集架构。例如,第一指令集架构为x86指令集架构,第二指令集架构为arm指令集架构。又如,第一指令集架构为arm指令集架构,第二指令集架构为x86指令集架构。再如,第一指令集架构为x86指令集架构,第二指令集架构为LoongArch(龙架构)。源程序可以采用源二进制代码在源平台上运行。该源二进制代码为基于第一指令集架构的代码。如果希望在目标平台上运行该源程序,则需要将该源二进制代码翻译成目标二进制代码。该目标二进制代码为基于第二指令集架构的代码,从而可以在目标平台上运行该目标二进制代码。
图1示出了本发明的一种二进制翻译方法实施例的步骤流程图,所述方法可以包括如下步骤:
步骤101、翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
步骤102、记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
步骤103、在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
本发明实施例提供的二进制翻译方法可应用于动态翻译的场景,并且在翻译过程中对指令进行优化,以尽可能减少冗余指令的产生,进而提高翻译后程序的运行效率。
参照图2,示出了本发明实施例的二进制翻译方法的运行架构示意图。如图2所示,本发明实施例的二进制翻译架构包括反汇编器、优化器、翻译器和汇编器。首先将源程序输入反汇编器进行反汇编并切割为基本块,以及获取每个基本块中每条指令的信息;优化器对反汇编后得到的信息进行分析,找出其中可能存在的待优化指令,并进行标记;翻译器根据反汇编后得到的信息,对每条指令进行对应翻译,并在优化器提供的标记信息的协助下,在翻译过程中进行一些优化;最终优化完成的翻译后的指令会被送入汇编器进行汇编。其中,所述待优化指令包括单个基本块中存在的可确定的待优化的指令,还包括跨基本块的暂时不能确定是否可优化的不确定优化指令。
在二进制翻译过程中,由于两种架构指令集的差异,导致指令集语义表达层面的差距,可能会产生较多的冗余指令,从而影响翻译后程序的效率。本发明实施例在二进制翻译过程中进行指令优化,尤其是可以在不用提前翻译后续基本块的前提下,实现跨基本块的指令优化,以减少冗余指令,提高翻译后程序的效率。
所述前序基本块和所述后续基本块是相对意义上的,例如,按照指令流的顺序,先翻译基本块1,再翻译基本块2,再翻译基本块3,则基本块1是基本块2的前序基本块,基本块1也可以是基本块3的前序基本块,基本块2是基本块3的前序基本块,基本块2是基本块1的后续基本块,基本块3也可以是基本块1的后续基本块,基本块3也是基本块2的后续基本块。
在翻译基本块1时,基本块1可以称为前序基本块,也可以称为当前基本块。本发明实施例将前序基本块中第一指令集架构的指令序列翻译为第二指令集架构的指令序列的过程中,对翻译后的指令进行分析,判断是否存在不确定优化指令,若存在,则记录每个不确定优化指令的相关信息;所述相关信息包括但不限于所述不确定优化指令的优化条件。所述不确定优化指令的优化条件用于表示暂时无法确定的用于判断不确定优化指令是否可被优化的原因。所述优化条件包括但不限于所述不确定优化指令对后续基本块产生的依赖或需要的数据。
示例一,假设前序基本块(如基本块1)中包括第一指令集架构(如X86指令集)的指令序列如下:
CMP A,B
Jcc C
该指令序列包含两条指令,为便于描述,以下将上述两条指令简称为“CMP+Jcc”指令序列。其中,CMP是比较指令,Jcc是条件跳转指令,“CMP+Jcc”指令序列的语义是:比较CMP指令中两个操作数,如果比较结果满足Jcc指令设置的跳转条件,则跳转至C指示的位置。假设将“CMP+Jcc”指令序列翻译为第二指令集架构(如LoongArch指令集)的指令序列如下:
Bcc A, B, C
CMP EFLAGS
在翻译过程中,将上述“CMP+Jcc”指令序列按照语义可以翻译为LoongArch指令集的条件跳转指令Bcc,以完成相应的条件跳转动作。然而,X86指令集定义了独立的运算结果标志寄存器EFLAGS,由运算指令在产生结果数值的同时予以更新,条件跳转指令依据EFLAGS的值进行跳转判断。X86指令集中,一个运算除了产生运算结果,还会同时产生是否进位、是否溢出等多个标志位。但是,LoongArch指令集并不像X86一样会顺带计算出EFLAGS信息,所以在进行翻译时,需要另外加入EFLAGS计算的指令(如上述Bcc指令后增加了“CMPEFLAGS”计算指令),用于模拟X86的EFLAGS信息生成过程,以得到正确的EFLAGS信息,保证翻译后的指令序列与翻译前的指令序列的语义一致。
上述“CMP EFLAGS”计算指令与后续基本块存在依赖关系,需要根据后续基本块是否会使用该“CMP EFLAGS”计算指令的计算结果才能确定该“CMP EFLAGS”计算指令是否可以被优化。例如,如果在后续基本块的计算过程中,该“CMP EFLAGS”计算指令的计算结果会被后续基本块中的其他指令的计算结果所覆盖,则说明此时的“CMP EFLAGS”计算指令是多余的,也即此时该“CMP EFLAGS”计算指令的优化条件被满足,该“CMP EFLAGS”计算指令可以进行优化(如消除该“CMP EFLAGS”计算指令);如果后续基本块中的其他指令的计算需要使用该“CMP EFLAGS”计算指令的计算结果,那么该“CMP EFLAGS”计算指令的优化条件不被满足,该“CMP EFLAGS”计算指令则需要保留,而不能被优化。
因此,对于示例一,在对前序基本块(如基本块1)翻译之后,可以确定该翻译后的前序基本块中存在不确定优化指令(如“CMP EFLAGS”计算指令),并记录该不确定优化指令的相关信息,包括该不确定优化指令的优化条件。例如,可以记录该不确定优化指令的优化条件为“后续基本块不使用CMP EFLAGS”,也即“CMP EFLAGS”计算指令是否可被优化取决于后续基本块是否会使用“CMP EFLAGS”计算指令的计算结果。
在对后续基本块进行翻译的过程中,可以扫描已记录的前序基本块的不确定优化指令的优化条件,并且判断已记录的优化条件是否被满足;若被满足,则可以对相应的不确定优化指令进行优化。示例性地,假设后续基本块并不会使用前序基本块中的不确定优化指令的计算结果,则说明该不确定优化指令是冗余指令,该不确定优化指令的优化条件被满足,可以对该不确定优化指令进行优化,如消除该不确定优化指令。
本发明实施例可以通过跨基本块的优化算法,对单一基本块内暂时不能确定是否可进行优化的指令(不确定优化指令)的相关信息进行记录,并在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化。本发明实施例在二进制翻译过程中只需记录翻译后的前序基本块中的不确定优化指令的相关信息,不用对后续基本块提前进行翻译,而是在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化,如果可以优化,则执行对应的优化动作,完成对前序基本块的优化。本发明实施例既降低了翻译器的开销,又可以准确识别并完成可以实施的跨基本块的指令优化。
在具体实施中,对于某个后续基本块,其依赖的某一个或某几个前序基本块中均可能存在若干个不确定优化指令。进一步地,在翻译前序基本块的过程中,若确定所述前序基本块中存在不确定优化指令,还可以记录不确定优化指令的位置信息,也即所述相关信息还可以包括不确定优化指令的位置信息,由此,在翻译后续基本块的过程中,在确定前序基本块的不确定优化指令的优化条件被满足时,可以根据记录的位置信息定位该不确定优化指令,进而对该位置信息处的不确定优化指令进行优化。
在本发明的一种可选实施例中,所述翻译前序基本块,可以包括:
步骤S11、对所述前序基本块中的指令序列与翻译模板库中的翻译模板进行匹配,以获取相匹配的翻译模板;若所述翻译模板包含不确定优化指令,则所述翻译模板包括预置域,所述预置域用于记录所述翻译模板包含的不确定优化指令及相关信息;
步骤S12、基于所述相匹配的翻译模板对所述前序基本块中的指令序列进行翻译。
翻译模板是预先设置的符合特定规则的指令序列。具体地,翻译模板可以将第一指令集架构的指令序列翻译为第二指令集架构对应的指令序列,翻译模板中的操作数是抽象的操作数(如表1中的A、B和C),并不代表真实数值。也即,翻译模板是一种翻译规则,对符合翻译模板的指令序列,可以按照模板翻译的规则进行翻译。
基于翻译模板可以对指令序列进行整体翻译,而不是对指令一条一条的逐一翻译。利用翻译模板进行翻译,可以实现对指令序列进行整体翻译,并且在翻译过程中实现了对指令在语义层面上的优化,在保持语义不变的前提下,减少了冗余指令。利用翻译模板可以在翻译过程中对单个基本块内的指令进行优化。进一步地,本发明实施例在翻译模板中维护其包含的不确定优化指令的相关信息,进而在翻译过程中,利用相匹配的翻译模块可以获取基本块的不确定优化指令的相关信息,从而可以实现跨基本块的指令优化。
一个示例中,一个翻译模板如表1所示:
表1
该翻译模板的规则是将“CMP A, B”和“Jcc C”这两条指令翻译为“Bcc A, B, C”和“CMP EFLAGS”这两条指令,且翻译前后语义相同。翻译前的指令可以是第一指令集架构的指令,翻译后的指令可以是第二指令集架构的指令。此外,该翻译模板还记录了其包含的不确定优化指令及相关信息。该翻译模板包括预置域,所述预置域可以包括两个部分,一部分用于记录述翻译模板包含的不确定优化指令,另一部分用于记录不确定优化指令的相关信息,如不确定优化指令的优化条件。
翻译模板是预先构建的,在构建翻译模板时可以在翻译模板中维护其包含的不确定优化指令的相关信息,由此,在利用翻译模板进行匹配翻译的过程中,通过相匹配的翻译模板即可获取不确定优化指令的相关信息,不用进行在线分析,可以提高优化效率。
可以理解的是,上述翻译模板仅作为示例性说明,本发明实施例对翻译模板的具体内容不做限制。
所述确定翻译后的前序基本块中存在的不确定优化指令,可以包括:若所述相匹配的翻译模板包括预置域,则通过所述预置域确定基于所述相匹配的翻译模板翻译后的前序基本块包含的不确定优化指令及相关信息。
在示例一中,在翻译前序基本块(如基本块1)的过程中,可以对基本块1中的各指令序列与翻译模板库中的翻译模板进行匹配,进而可以查询到表1所示的相匹配的翻译模板。利用该相匹配的翻译模板可以对基本块1中的指令序列进行翻译,并且可以从该相匹配的翻译模板的预置域中获取并记录不确定优化指令的相关信息。
本发明实施例对记录不确定优化指令的相关信息的位置不做限制。示例性地,不确定优化指令的相关信息可以记录在基本块的信息域、基本块的尾部等可以随时索引获取的位置。例如,对于基本块1,可以将基本块1中的不确定优化指令的相关信息记录在基本块1的信息域内。每个基本块都有自身的信息域,该信息域可用于记录基本块的基础信息,如基本块大小、起始地址等。本发明实施例将不确定优化指令的相关信息也记录在基本块的信息域内,不用额外创建存储空间。
在本发明的一种可选实施例中,所述不确定优化指令可以为翻译包含条件跳转指令的指令序列时产生的标志位计算指令,所述条件跳转指令对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置,所述两个不同的出口分别对应各自的标志位计算指令。
以示例一为例,基本块1中的Jcc指令为条件跳转指令,Jcc指令对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置。在将“CMP+Jcc”指令序列翻译为条件跳转指令Bcc时,会产生标志位计算指令“CMP EFLAGS”。条件跳转指令Bcc对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置,所述两个不同的出口分别对应各自的标志位计算指令。
示例性地,将条件跳转指令Bcc对应的两个出口分别记为出口1和出口2,出口1指向满足跳转条件时对应的跳转位置,出口2指向不满足跳转条件时对应的跳转位置。出口1和出口2分别对应各自的标志位计算指令“CMP EFLAGS”。
假设出口1指向基本块2中的第一条指令(如or指令),出口2指向基本块3中的第一条指令(如sbb指令)。基本块2和基本块3均为基本块1的后续基本块,基本块2中的第一条指令为满足跳转条件时Bcc指令跳转至的位置,基本块3中的第一条指令为不满足跳转条件时Bcc指令跳转至的位置(也即Bcc指令的下一条指令)。
假设在翻译基本块2的过程中,确定基本块1中条件跳转指令Bcc的出口1处的不确定优化指令“CMP EFLAGS”的优化条件被满足,则可以优化基本块1中条件跳转指令Bcc的出口1处的不确定优化指令“CMP EFLAGS”。假设在翻译基本块3的过程中,确定基本块1中条件跳转指令Bcc的出口2处的不确定优化指令“CMP EFLAGS”的优化条件不被满足,则可以保留基本块1中条件跳转指令Bcc的出口2处的不确定优化指令“CMP EFLAGS”,而不进行优化。
需要说明的是,本发明实施例对不确定优化指令的类型不做限制。不确定优化指令与后续基本块存在依赖关系,因此,暂时不能确定是否可被优化,需要在翻译后续基本块的过程中才能够判断前序基本块中的不确定优化指令是否可被优化,进而决定优化的方式,并进行优化。
在具体实施中,“XX+Jcc”类型的指令序列在翻译时产生的标志位(EFLAGS)计算指令均可以作为不确定优化指令。其中,XX指令指的是会产生EFLAGS计算指令的指令,如CMP指令、TEST指令等。此外,ADD指令、SUB指令等产生的EFLAGS计算指令也可以作为不确定优化指令。可以理解的是,除了上述列举的这些主要语义外,其他语义可能被后续基本块所覆盖的指令均可作为不确定优化指令。
在本发明的一种可选实施例中,所述优化条件可以包括:后续基本块中的指令覆盖所述不确定优化指令的计算结果。
示例二,假设前序基本块(如基本块1)中包括第一指令集架构(如X86指令集)的指令序列如下:
IDIV A
SUB B, EDX
该指令序列包含两条指令,该指令序列表述的含义是:将X86寄存器EDX和EAX这两个32位数值拼接在一起,形成一个64位数,将该64位数与A相除,其结果放入EAX中,余数放入EDX中;再将B和EDX的值相减,结果放入EDX中。假设将上述指令序列翻译为第二指令集架构(如LoongArch指令集)的指令序列如下:
DIV EAX, EDX:EAX, A // EDX:EAX / A结果放EAX
MOD EDX, EDX:EAX, A // EDX:EAX / A余数放EDX
SUB EDX, B, EDX // B - EDX结果放EDX
其中,不确定优化指令为“DIV EAX, EDX:EAX, A”,该不确定优化指令的优化条件为“后续基本块覆盖EAX结果”。
需要说明的是,本发明实施例中主要以“CMP+Jcc”指令序列为例进行说明,其他可产生不确定优化指令的指令序列的优化过程相类似,相互参考即可。
后续基本块中的指令如果会覆盖前序基本块中的不确定优化指令的计算结果,说明后续基本块不会使用到前序基本块中的不确定优化指令的计算结果(如“CMP EFLAGS”指令计算出的EFLAGS信息),也即,对于后续基本块来说,前序基本块中的不确定优化指令是冗余指令,该不确定优化指令的优化条件被满足,可以进行优化。
在本发明的一种可选实施例中,所述对所述前序基本块中的所述不确定优化指令进行优化,可以包括:将所述前序基本块中的所述不确定优化指令设置为空指令。
后续基本块中的指令如果会覆盖前序基本块中的不确定优化指令的计算结果,说明该不确定优化指令是冗余指令,因此可以消除该不确定优化指令,如将该不确定优化指令可以设置为空指令(如nop指令)。nop指令就是空操作,这条指令不会进行任何动作,以提高翻译后程序的效率。
在本发明的一种可选实施例中,所述对所述前序基本块中的所述不确定优化指令进行优化,可以包括:在重新翻译的开销满足预设条件时,对所述前序基本块中的所述不确定优化指令及其后续指令进行重新翻译。
在具体实施中,重新翻译的优化方式可以用在需要优化的指令数量较多的情况下,例如,对于标志位(EFLAGS)计算指令进行优化时,如果此处EFLAGS计算指令的数量较少(如少于预设数量),优选采用修改为nop指令的优化方式;如果此处EFLAGS计算指令的数量较多(如多于预设数量),则优选采用重新翻译的优化方式。进一步地,在重新翻译的开销满足预设条件,如重新翻译带来的开销小于重新翻译带来的收益时,优选采用重新翻译的优化方式。
本发明实施例对计算重新翻译的开销和收益的方法不做限制。示例性地,本发明实施例可以提供如下计算方式:假设需要重新翻译的指令数量为M,其翻译一条指令的开销为T,优化指令数目为N,优化一条指令的收益为O,则重新翻译带来的开销为MT,重新翻译带来的收益为NO。其中M和N的数量在翻译和优化过程中可以获取,T和O可以采用预设的方式设置,或者,T和O可以在翻译器启动时刻通过探测的方式完成设置。
进一步地,通过探测的方式设置T和O可以包括:在翻译器启动时刻,通过计时的方式,计算出翻译多条指令的时间,取平均后即可获得单指令翻译的开销T;同时可以运行翻译后指令并计时,与优化后的时间相比较,获得优化后的收益,再通过取平均后得出优化一条指令的收益O。
在本发明实施例中,重新翻译的优化方式可以包括重新翻译所述不确定优化指令及其后续指令。进一步地,重新翻译的优化方式还可以包括重新翻译所述不确定优化指令所在的整个基本块。可以理解的是,重新翻译指的是对原指令(优化前的指令)进行重新翻译,如对所述不确定优化指令及其后续指令的原指令进行重新翻译,或者,对整个基本块的原指令进行重新翻译。
在重新翻译整个基本块的开销小于重新翻译所述不确定优化指令及其后续指令的情况下,可以选择重新翻译整个基本块。重新翻译的优化方式可以根据实际需求确定。
在具体实施中,大多数情况下可采用重新翻译所述不确定优化指令及其后续指令的方式。但有些时候重新翻译整个基本块带来的开销更小,因为重新翻译后续指令需要对原指令的位置进行搜索,并寻找需要修改的翻译后指令的位置,这些会带来额外的开销。所以当需要重新翻译的指令数目超过预设比例时,如超过该基本块指令数量的3/4时,优选采用重新翻译整个基本块的方式。所述预设比例可以根据实际需求设置。
示例三,假设前序基本块(如基本块1)中包括第一指令集架构(如X86指令集)的指令序列如下:
COMISS A, B
Jcc C
该指令序列包含两条指令,为便于描述,以下将上述两条指令简称为“COMISS+Jcc”指令序列。其中,其中,COMISS指令用于比较两个浮点操作数的大小,设置EFLAGS信息;Jcc指令根据EFLAGS信息进行跳转。但COMISS指令的EFLAGS计算需要产生大量的运算指令,因此,上述“COMISS+Jcc”指令序列会翻译为第二指令集架构(如LoongArch指令集)的指令序列如下:
Bcc A, B, C
COMISS_ZF A, B // 计算COMISS指令ZF位
COMISS_PF A, B // 计算COMISS指令PF位
COMISS_CF A, B // 计算COMISS指令CF位
其中,“COMISS_ZF A, B”、“COMISS_PF A, B”和“COMISS_CF A, B”均为不确定优化指令,假设这三条不确定优化指令的优化条件均被满足,则可以将“COMISS_ZF A, B”、“COMISS_PF A, B”和“COMISS_CF A, B”这三条指令都设置为nop指令(空操作)。但是,这样将会产生大量无用的nop指令,因此,此时可以选择重新翻译的优化方式。如将该基本块进行重新翻译得到如下一条指令:Bcc C, A, B。
在本发明的一种可选实施例中,所述方法还可以包括:在翻译后续基本块的过程中,若确定所述优化条件不被满足,则保留所述前序基本块中的所述不确定优化指令。
在翻译后续基本块的过程中,如果后续基本块中的指令需要使用(也即依赖于)前序基本块中的不确定优化指令的计算结果,说明该不确定优化指令的优化条件不被满足,则需要保留所述前序基本块中的所述不确定优化指令,而不能进行优化。
参照图3,示出了本发明实施例中示例一的翻译及优化过程示意图。如图3所示,对于前序基本块(如基本块1),翻译前的指令序列为“CMP+Jcc”,翻译后的指令序列为“Bcc+EFLAGS”,将“CMP+Jcc”翻译为Bcc指令产生的标志位计算指令“CMP EFLAGS”为不确定优化指令,此处可以记录该不确定优化指令的相关信息(步骤①)。在翻译后续基本块并进行基本块链接时,完成相应的优化。Bcc指令对应两个出口(如出口1和出口2),每个出口分别对应一个EFLAGS计算指令。
需要说明的是,本发明实施例对前序基本块的优化操作可以是在链接时完成的。在翻译后续基本块并进行基本块链接时,可以对已记录的前序基本块的不确定优化指令的相关信息进行分析,判断是否存在不确定优化指令的优化条件被满足,如果存在,则查询到该不确定优化指令所在的位置,并选择此处的优化方式,如设置为空指令(nop指令),还是对该不确定优化指令及其后续指令进行重新翻译,还是对整个基本块进行重新翻译,根据选择的优化方式进行优化,得到优化后的指令序列。
如图3所示,出口1指向满足跳转条件时对应的跳转位置,出口2指向不满足跳转条件时对应的跳转位置。出口1指向基本块2中的第一条指令(如or指令),出口2指向基本块3中的第一条指令(如sbb指令)。
在翻译基本块2的过程中,基本块2的第一条指令(or指令)是对给出的两个操作数进行或运算,根据结果产生EFLAGS信息,因此,该or指令自身会计算出所有的EFLAGS信息(步骤③),所述所有的EFLAGS信息包括CF、PF、AF、ZF、SF和OF这六种。因此,该or指令自身计算的EFLAGS信息会覆盖前序基本块(基本块1)中出口1处的不确定优化指令(EFLAGS计算指令)计算的EFLAGS信息,可以确定基本块1中的出口1处的不确定优化指令的优化条件被满足,可以将该处的不确定优化指令进行消除,如设置为nop指令(步骤③)。对于基本块3,其第一条指令为sbb指令,该sbb指令是“借位减法”指令,其需要根据指令中的两个操作数以及CF位进行运算,并根据运算结果产生EFLAGS信息,因此,该sbb指令需要使用基本块1中的出口2处的不确定优化指令(EFLAGS计算指令)计算的EFLAGS信息的CF位(步骤④),因此,基本块1中的出口2处的不确定优化指令的优化条件不被满足,需要保留该处的不确定优化指令(步骤⑤)。
需要说明的是,图3中基本块结尾处的“退出部分”的代码,用于解决在没有基本块链接情况下,能够正确的退出到翻译器,进行下一个基本块的查找。
此外,图3所示的示例中,基本块2中的第一条指令为or指令,基本块3中的第一条指令为sbb指令,均为示例性说明。
综上,本发明实施例提供的二进制翻译方法,通过跨基本块的优化算法,对单一基本块内暂时不能确定是否可进行优化的指令(不确定优化指令)的相关信息进行记录,并在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化。本发明实施例在二进制翻译过程中只需记录前序基本块中的不确定优化指令的相关信息,不用对后续基本块提前进行翻译,而是在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化,如果可以优化,则执行对应的优化动作,完成对前序基本块的优化。本发明实施例既降低了翻译器的开销,又可以准确识别并完成可以实施的跨基本块的指令优化。进一步地,本发明通过跨基本块优化算法,可以识别并实施更多更深层次的优化,可以减少二进制翻译过程中冗余指令(语义)的产生,可以提高翻译后程序的运行效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种二进制翻译装置实施例的结构框图,所述装置包括:
翻译确定模块401,用于翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
信息记录模块402,用于记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
翻译优化模块403,用于在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
可选地,所述不确定优化指令为翻译包含条件跳转指令的指令序列时产生的标志位计算指令,所述条件跳转指令对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置,所述两个不同的出口分别对应各自的标志位计算指令。
可选地,所述优化条件包括:后续基本块中的指令覆盖所述不确定优化指令的计算结果。
可选地,所述翻译确定模块,包括:
模板匹配子模块,用于对所述前序基本块中的指令序列与翻译模板库中的翻译模板进行匹配,以获取相匹配的翻译模板;若所述翻译模板包含不确定优化指令,则所述翻译模板包括预置域,所述预置域用于记录所述翻译模板包含的不确定优化指令及相关信息;
模板翻译子模块,用于基于所述相匹配的翻译模板对所述前序基本块中的指令序列进行翻译;
信息确定子模块,用于若所述相匹配的翻译模板包括预置域,则通过所述预置域确定基于所述相匹配的翻译模板翻译后的前序基本块包含的不确定优化指令及相关信息。
可选地,所述翻译优化模块,具体用于:将所述前序基本块中的所述不确定优化指令设置为空指令。
可选地,所述翻译优化模块,具体用于:在重新翻译的开销满足预设条件时,对所述前序基本块中的所述不确定优化指令及其后续指令进行重新翻译。
可选地,所述装置还包括:
指令保留模块,用于在翻译后续基本块的过程中,若确定所述优化条件不被满足,则保留所述前序基本块中的所述不确定优化指令。
本发明实施例提供的二进制翻译装置,通过跨基本块的优化算法,对单一基本块内暂时不能确定是否可进行优化的指令(不确定优化指令)的相关信息进行记录,并在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化。本发明实施例在二进制翻译过程中只需记录前序基本块中的不确定优化指令的相关信息,不用对后续基本块提前进行翻译,而是在后续的翻译过程中动态确认这些不确定优化指令是否可以进行优化,如果可以优化,则执行对应的优化动作,完成对前序基本块的优化。本发明实施例既降低了翻译器的开销,又可以准确识别并完成可以实施的跨基本块的指令优化。进一步地,本发明通过跨基本块优化算法,可以识别并实施更多更深层次的优化,可以减少二进制翻译过程中冗余指令(语义)的产生,可以提高翻译后程序的运行效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图5,是本发明实施例提供的电子设备的结构示意图。如图5所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行前述实施例的二进制翻译方法的步骤。
本发明实施例提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的程序或处理器执行时,使得终端能够执行前述实施例的二进制翻译方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种二进制翻译方法,其特征在于,所述方法包括:
翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
2.根据权利要求1所述的方法,其特征在于,所述不确定优化指令为翻译包含条件跳转指令的指令序列时产生的标志位计算指令,所述条件跳转指令对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置,所述两个不同的出口分别对应各自的标志位计算指令。
3.根据权利要求1所述的方法,其特征在于,所述优化条件包括:后续基本块中的指令覆盖所述不确定优化指令的计算结果。
4.根据权利要求1所述的方法,其特征在于,所述翻译前序基本块,包括:
对所述前序基本块中的指令序列与翻译模板库中的翻译模板进行匹配,以获取相匹配的翻译模板;若所述翻译模板包含不确定优化指令,则所述翻译模板包括预置域,所述预置域用于记录所述翻译模板包含的不确定优化指令及相关信息;
基于所述相匹配的翻译模板对所述前序基本块中的指令序列进行翻译;
所述确定翻译后的前序基本块中存在的不确定优化指令,包括:
若所述相匹配的翻译模板包括预置域,则通过所述预置域确定基于所述相匹配的翻译模板翻译后的前序基本块包含的不确定优化指令及相关信息。
5.根据权利要求1所述的方法,其特征在于,所述对所述前序基本块中的所述不确定优化指令进行优化,包括:
将所述前序基本块中的所述不确定优化指令设置为空指令。
6.根据权利要求1所述的方法,其特征在于,所述对所述前序基本块中的所述不确定优化指令进行优化,包括:
在重新翻译的开销满足预设条件时,对所述前序基本块中的所述不确定优化指令及其后续指令进行重新翻译。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在翻译后续基本块的过程中,若确定所述优化条件不被满足,则保留所述前序基本块中的所述不确定优化指令。
8.一种二进制翻译装置,其特征在于,所述装置包括:
翻译确定模块,用于翻译前序基本块并确定翻译后的前序基本块中存在的不确定优化指令;所述不确定优化指令表示该指令的优化条件在翻译后续基本块的过程中才能确定是否可被满足;
信息记录模块,用于记录所述不确定优化指令的相关信息;所述相关信息包括所述不确定优化指令的优化条件;
翻译优化模块,用于在翻译后续基本块的过程中,若确定所述优化条件被满足,则对所述前序基本块中的所述不确定优化指令进行优化。
9.根据权利要求8所述的装置,其特征在于,所述不确定优化指令为翻译包含条件跳转指令的指令序列时产生的标志位计算指令,所述条件跳转指令对应两个不同的出口,一个出口指向满足跳转条件时对应的跳转位置,另一个出口指向不满足跳转条件时对应的跳转位置,所述两个不同的出口分别对应各自的标志位计算指令。
10.根据权利要求8所述的装置,其特征在于,所述优化条件包括:后续基本块中的指令覆盖所述不确定优化指令的计算结果。
11.根据权利要求8所述的装置,其特征在于,所述翻译确定模块,包括:
模板匹配子模块,用于对所述前序基本块中的指令序列与翻译模板库中的翻译模板进行匹配,以获取相匹配的翻译模板;若所述翻译模板包含不确定优化指令,则所述翻译模板包括预置域,所述预置域用于记录所述翻译模板包含的不确定优化指令及相关信息;
模板翻译子模块,用于基于所述相匹配的翻译模板对所述前序基本块中的指令序列进行翻译;
信息确定子模块,用于若所述相匹配的翻译模板包括预置域,则通过所述预置域确定基于所述相匹配的翻译模板翻译后的前序基本块包含的不确定优化指令及相关信息。
12.根据权利要求8所述的装置,其特征在于,所述翻译优化模块,具体用于:将所述前序基本块中的所述不确定优化指令设置为空指令。
13.根据权利要求8所述的装置,其特征在于,所述翻译优化模块,具体用于:在重新翻译的开销满足预设条件时,对所述前序基本块中的所述不确定优化指令及其后续指令进行重新翻译。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
指令保留模块,用于在翻译后续基本块的过程中,若确定所述优化条件不被满足,则保留所述前序基本块中的所述不确定优化指令。
15.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1至7任一所述的二进制翻译方法的步骤。
16.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至7任一所述的二进制翻译方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310925338.7A CN116661808B (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、装置、电子设备及存储介质 |
CN202311302584.3A CN117369830A (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310925338.7A CN116661808B (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、装置、电子设备及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311302584.3A Division CN117369830A (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116661808A true CN116661808A (zh) | 2023-08-29 |
CN116661808B CN116661808B (zh) | 2023-11-10 |
Family
ID=87724480
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310925338.7A Active CN116661808B (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、装置、电子设备及存储介质 |
CN202311302584.3A Pending CN117369830A (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、电子设备和可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311302584.3A Pending CN117369830A (zh) | 2023-07-26 | 2023-07-26 | 二进制翻译方法、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN116661808B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555555B (zh) * | 2024-01-11 | 2024-04-12 | 龙芯中科技术股份有限公司 | 例外处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187460A (ja) * | 1996-10-28 | 1998-07-21 | Fujitsu Ltd | バイナリ・プログラム変換装置および方法 |
CN1529229A (zh) * | 2003-10-21 | 2004-09-15 | 中国科学院计算技术研究所 | 二进制翻译中标志位的优化处理方法 |
US20040221278A1 (en) * | 2003-04-22 | 2004-11-04 | Gisle Dankel | Method and apparatus for performing interpreter optimizations during program code conversion |
CN112540764A (zh) * | 2019-09-23 | 2021-03-23 | 无锡江南计算技术研究所 | 条件转移预测方向变换的编译优化方法 |
CN114610325A (zh) * | 2022-02-24 | 2022-06-10 | 复旦大学 | 一种基于翻译规则的全系统动态二进制翻译方法 |
-
2023
- 2023-07-26 CN CN202310925338.7A patent/CN116661808B/zh active Active
- 2023-07-26 CN CN202311302584.3A patent/CN117369830A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187460A (ja) * | 1996-10-28 | 1998-07-21 | Fujitsu Ltd | バイナリ・プログラム変換装置および方法 |
US20040221278A1 (en) * | 2003-04-22 | 2004-11-04 | Gisle Dankel | Method and apparatus for performing interpreter optimizations during program code conversion |
CN1529229A (zh) * | 2003-10-21 | 2004-09-15 | 中国科学院计算技术研究所 | 二进制翻译中标志位的优化处理方法 |
CN112540764A (zh) * | 2019-09-23 | 2021-03-23 | 无锡江南计算技术研究所 | 条件转移预测方向变换的编译优化方法 |
CN114610325A (zh) * | 2022-02-24 | 2022-06-10 | 复旦大学 | 一种基于翻译规则的全系统动态二进制翻译方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117369830A (zh) | 2024-01-09 |
CN116661808B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8832669B2 (en) | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
US8612959B2 (en) | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization | |
US10860300B2 (en) | Direct function call substitution using preprocessor | |
CN116661808B (zh) | 二进制翻译方法、装置、电子设备及存储介质 | |
US20180165079A1 (en) | Instruction-set simulator and its simulator generation method | |
CN105446725A (zh) | 用于模型驱动开发的方法和系统 | |
US20230315416A1 (en) | Code translation method and apparatus, and device | |
CN111813670B (zh) | 一种非侵入式mc/dc覆盖率统计分析方法 | |
US20180196669A1 (en) | Reduced save and restore instructions for call-clobbered registers | |
US20090235054A1 (en) | Disassembling an executable binary | |
US20090106764A1 (en) | Support for globalization in test automation | |
US11068246B2 (en) | Control flow graph analysis | |
CN111475148A (zh) | 第三方依赖库隔离方法及装置、电子设备、存储介质 | |
US10671397B2 (en) | Reduced save and restore instructions for call-clobbered registers | |
CN116610325B (zh) | 二进制翻译方法、装置、电子设备及存储介质 | |
US20240111843A1 (en) | Software license-based code suggestions | |
WO2022249256A1 (ja) | Api検出装置、api検出方法及びプログラム | |
CN116974656A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
CN114327497A (zh) | 一种代码处理方法、装置及设备 | |
CN117075913A (zh) | 二进制翻译方法、装置、电子设备及存储介质 | |
CN118092938A (zh) | 二进制翻译方法、装置、电子设备及计算机程序产品 | |
CN114327469A (zh) | 一种代码解析方法、装置、设备及介质 | |
CN116627510A (zh) | 应用程序的引导方法及设备 | |
CN113296833A (zh) | 一种二进制文件中合法指令的识别方法及装置 | |
CN117093281A (zh) | 一种函数调用方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |