有效
二进制翻译方法、装置、电子设备及存储介质
胡起、兰彦志、曾露
龙芯中科技术股份有限公司
胡
胡起机构 暂无
技术领域 暂无
兰
兰彦志机构 暂无
技术领域 暂无
曾
曾露机构 暂无
技术领域 暂无
摘要
本发明实施例提供了一种二进制翻译方法、装置、电子设备及存储介质,其中的方法包括:对于待翻译的基本块,根据所述基本块中各指令之间的依赖关系,构建依赖关系链;所述依赖关系链中的每条包含具有依赖关系的至少两条指令;基于所述依赖关系链和翻译模板库中的翻译模板,确定所述基本块包含的待优化指令序列;所述待优化指令序列来自所述依赖关系链中具有相匹配的翻译模板的指令序列;基于所述待优化指令序列对应的翻译模板,翻译所述待优化指令序列,得到优化后的指令序列。本发明实施例可以减少冗余指令的产生,提高翻译后程序的效率。
1.一种二进制翻译方法,其特征在于,所述方法包括:对于待翻译的基本块,根据所述基本块中各指令之间的依赖关系,构建依赖关系链;所述依赖关系链中的每条包含具有依赖关系的至少两条指令;基于所述依赖关系链和翻译模板库中的翻译模板,确定所述基本块包含的待优化指令序列;所述待优化指令序列来自所述依赖关系链中具有相匹配的翻译模板的指令序列;基于所述待优化指令序列对应的翻译模板,翻译所述待优化指令序列,得到优化后的指令序列;所述基于所述依赖关系链和翻译模板库中的翻译模板,确定所述基本块包含的待优化指令序列,包括:对所述基本块中的每条依赖关系链,将该依赖关系链中每个指令序列分别与翻译模板库中的翻译模板进行匹配,得到该依赖关系链对应的匹配成功记录,每条匹配成功记录对应该依赖关系链中的一个指令序列并且记录与该指令序列匹配成功的翻译模板;基于所述基本块中每条依赖关系链对应的匹配成功记录,确定所述每条依赖关系链包含的待优化指令序列;基于所述基本块中的依赖关系链包含的待优化指令序列,获取所述基本块包含的待优化指令序列;通过如下步骤获取某条依赖关系链对应的匹配成功记录:对于所述基本块的某条依赖关系链,从该依赖关系链的第一条指令到最后一条指令,分别依次选取为头指令;以及从头指令开始到该依赖关系链的最后一条指令,逐一选取为尾指令;对于从头指令到尾指令的一个指令序列,与翻译模板库中的翻译模板进行匹配,如果匹配成功则保存匹配成功记录;在该依赖关系链的所有指令序列完成匹配后,得到该依赖关系链对应的匹配成功记录。
2.根据权利要求1所述的方法,其特征在于,所述根据所述基本块中各指令之间的依赖关系,构建依赖关系链,包括:按照指令流顺序扫描所述基本块中的指令,并记录所述基本块中每条指令的使用资源和结果存放资源;若所述基本块中存在第一指令和第二指令,所述第一指令的使用资源与所述第二指令的结果存放资源相同,则确定所述第一指令和所述第二指令具有依赖关系;将所述第一指令加入所述第二指令的依赖关系链中。
3.根据权利要求1所述的方法,其特征在于,所述基于所述基本块中每条依赖关系链对应的匹配成功记录,确定所述每条依赖关系链包含的待优化指令序列,包括:对不存在相互重叠的匹配成功记录的依赖关系链,将该依赖关系链中每个匹配成功的指令序列确定为该依赖关系链的待优化指令序列。
4.根据权利要求1所述的方法,其特征在于,所述基于所述基本块中每条依赖关系链对应的匹配成功记录,确定所述每条依赖关系链包含的待优化指令序列,包括:对存在相互重叠的匹配成功记录的依赖关系链,将所述相互重叠的匹配成功记录中翻译模板的优化收益最大的指令序列确定为该依赖关系链的待优化指令序列。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:对所述待优化指令序列进行标记,以指示所述待优化指令序列相匹配的翻译模板;所述基于所述待优化指令序列对应的翻译模板,翻译所述待优化指令序列,包括:扫描已标记的待优化指令序列,将已标记的待优化指令序列按照标记的翻译模板进行翻译。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述优化后的指令序列进行汇编,得到目标平台的二进制代码;或者,将所述优化后的指令序列进行汇编后存入代码缓存中,以被翻译器调用运行。
7.一种二进制翻译装置,其特征在于,所述装置包括:依赖分析模块,用于对于待翻译的基本块,根据所述基本块中各指令之间的依赖关系,构建依赖关系链;所述依赖关系链中的每条包含具有依赖关系的至少两条指令;优化确定模块,用于基于所述依赖关系链和翻译模板库中的翻译模板,确定所述基本块包含的待优化指令序列;所述待优化指令序列来自所述依赖关系链中具有相匹配的翻译模板的指令序列;优化翻译模块,用于基于所述待优化指令序列对应的翻译模板,翻译所述待优化指令序列,得到优化后的指令序列;所述优化确定模块,包括:匹配记录子模块,用于对所述基本块中的每条依赖关系链,将该依赖关系链中每个指令序列分别与翻译模板库中的翻译模板进行匹配,得到该依赖关系链对应的匹配成功记录,每条匹配成功记录对应该依赖关系链中的一个指令序列并且记录与该指令序列匹配成功的翻译模板;第一确定子模块,用于基于所述基本块中每条依赖关系链对应的匹配成功记录,确定所述每条依赖关系链包含的待优化指令序列;第二确定子模块,用于基于所述基本块中的依赖关系链包含的待优化指令序列,获取所述基本块包含的待优化指令序列;所述匹配记录子模块,具体用于:对于所述基本块的某条依赖关系链,从该依赖关系链的第一条指令到最后一条指令,分别依次选取为头指令;以及从头指令开始到该依赖关系链的最后一条指令,逐一选取为尾指令;对于从头指令到尾指令的一个指令序列,与翻译模板库中的翻译模板进行匹配,如果匹配成功则保存匹配成功记录;在该依赖关系链的所有指令序列完成匹配后,得到该依赖关系链对应的匹配成功记录。
8.根据权利要求7所述的装置,其特征在于,所述依赖分析模块,包括:扫描分析子模块,用于按照指令流顺序扫描所述基本块中的指令,并记录所述基本块中每条指令的使用资源和结果存放资源;依赖确定子模块,用于若所述基本块中存在第一指令和第二指令,所述第一指令的使用资源与所述第二指令的结果存放资源相同,则确定所述第一指令和所述第二指令具有依赖关系;关系加入子模块,用于将所述第一指令加入所述第二指令的依赖关系链中。
9.根据权利要求7所述的装置,其特征在于,所述第一确定子模块,具体用于:对不存在相互重叠的匹配成功记录的依赖关系链,将该依赖关系链中每个匹配成功的指令序列确定为该依赖关系链的待优化指令序列。
10.根据权利要求7所述的装置,其特征在于,所述第一确定子模块,具体用于:对存在相互重叠的匹配成功记录的依赖关系链,将所述相互重叠的匹配成功记录中翻译模板的优化收益最大的指令序列确定为该依赖关系链的待优化指令序列。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:标记模块,用于对所述待优化指令序列进行标记,以指示所述待优化指令序列相匹配的翻译模板;所述优化翻译模块,具体用于扫描已标记的待优化指令序列,将已标记的待优化指令序列按照标记的翻译模板进行翻译。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括汇编模块,用于将所述优化后的指令序列进行汇编,得到目标平台的二进制代码;或者,将所述优化后的指令序列进行汇编后存入代码缓存中,以被翻译器调用运行。
13.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1至6任一所述的二进制翻译方法的步骤。
14.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至6任一所述的二进制翻译方法的步骤。



