本發(fā)明涉及計(jì)算機(jī),特別是涉及一種二進(jìn)制翻譯方法、裝置、電子設(shè)備以及可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
1、二進(jìn)制翻譯指通過二進(jìn)制翻譯技術(shù),將某isa(instruction?set?architecture,指令集架構(gòu))的應(yīng)用程序(如x86的應(yīng)用程序)通過二進(jìn)制翻譯的方式運(yùn)行在另一isa上(如loongarch),以實(shí)現(xiàn)跨架構(gòu)跨指令集程序兼容。
2、指令指針(instruction?pointer),又稱為程序計(jì)數(shù)器(program?counter,簡稱pc),是一種特殊的寄存器,用于存儲(chǔ)正在執(zhí)行的程序中下一條要執(zhí)行的指令的地址。在多數(shù)計(jì)算機(jī)體系結(jié)構(gòu)中,指令指針是一個(gè)關(guān)鍵的寄存器,它幫助控制程序的流程,指導(dǎo)處理器執(zhí)行正確的指令序列。
3、在x86指令集架構(gòu)中,為了獲取指令指針,需要使用函數(shù)調(diào)用指令。但是對大量用于獲取指令指針的函數(shù)調(diào)用指令進(jìn)行二進(jìn)制翻譯,會(huì)產(chǎn)生大量的冗余指令,進(jìn)而影響翻譯效率以及影響翻譯后程序的運(yùn)行效率。
技術(shù)實(shí)現(xiàn)思路
1、鑒于上述問題,提出了本發(fā)明實(shí)施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種二進(jìn)制翻譯方法,可以減少因語義翻譯產(chǎn)生的冗余指令,以及減少對tb的切分次數(shù),進(jìn)而提高動(dòng)態(tài)翻譯器的翻譯效率以及提高翻譯后程序的運(yùn)行效率。
2、相應(yīng)的,本發(fā)明實(shí)施例還提供了一種二進(jìn)制翻譯裝置、電子設(shè)備、以及一種計(jì)算機(jī)程序產(chǎn)品,用以保證上述方法的實(shí)現(xiàn)及應(yīng)用。
3、第一方面,本發(fā)明實(shí)施例公開了一種二進(jìn)制翻譯方法,所述方法包括:
4、在二進(jìn)制翻譯過程中,識別當(dāng)前指令是否為目標(biāo)調(diào)用指令;所述目標(biāo)調(diào)用指令用于調(diào)用目標(biāo)函數(shù),所述目標(biāo)函數(shù)用于獲取指令指針;
5、若識別當(dāng)前指令是目標(biāo)調(diào)用指令,則對所述目標(biāo)調(diào)用指令進(jìn)行優(yōu)化翻譯;所述優(yōu)化翻譯用于將所述目標(biāo)調(diào)用指令翻譯為立即數(shù)加載指令,所述立即數(shù)加載指令用于將當(dāng)前指令的下一條指令的地址作為立即數(shù)加載至指定寄存器。
6、第二方面,本發(fā)明實(shí)施例公開了一種二進(jìn)制翻譯裝置,所述裝置包括:
7、指令識別模塊,用于在二進(jìn)制翻譯過程中,識別當(dāng)前指令是否為目標(biāo)調(diào)用指令;所述目標(biāo)調(diào)用指令用于調(diào)用目標(biāo)函數(shù),所述目標(biāo)函數(shù)用于獲取指令指針;
8、優(yōu)化翻譯模塊,用于若識別當(dāng)前指令是目標(biāo)調(diào)用指令,則對所述目標(biāo)調(diào)用指令進(jìn)行優(yōu)化翻譯;所述優(yōu)化翻譯用于將所述目標(biāo)調(diào)用指令翻譯為立即數(shù)加載指令,所述立即數(shù)加載指令用于將當(dāng)前指令的下一條指令的地址作為立即數(shù)加載至指定寄存器。
9、第三方面,本發(fā)明實(shí)施例公開了一種電子設(shè)備,包括:處理器、存儲(chǔ)器、通信接口和通信總線,所述處理器、所述存儲(chǔ)器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲(chǔ)器用于存放至少一可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行如前述中任一所述的二進(jìn)制翻譯方法的步驟。
10、第四方面,本發(fā)明實(shí)施例公開了一種可讀存儲(chǔ)介質(zhì),所述可讀存儲(chǔ)介質(zhì)上存儲(chǔ)程序或指令,所述程序或指令被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)如前述中任一所述的二進(jìn)制翻譯方法。
11、第五方面,本發(fā)明實(shí)施例公開了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)如前述中任一所述的二進(jìn)制翻譯方法的步驟。
12、本發(fā)明實(shí)施例包括以下優(yōu)點(diǎn):
13、本發(fā)明實(shí)施例在二進(jìn)制翻譯過程中,識別當(dāng)前指令是否為目標(biāo)調(diào)用指令,目標(biāo)調(diào)用指令用于調(diào)用獲取指令指針的目標(biāo)函數(shù)。在識別到目標(biāo)調(diào)用指令的情況下,對所述目標(biāo)調(diào)用指令進(jìn)行優(yōu)化翻譯,直接翻譯為裝載下一條指令的地址(即指令指針)的立即數(shù)加載指令,而不是對目標(biāo)調(diào)用指令基于語義進(jìn)行逐步翻譯?;谡Z義進(jìn)行逐步翻譯的傳統(tǒng)方式需要將這條目標(biāo)調(diào)用指令以及這條目標(biāo)調(diào)用指令調(diào)用的目標(biāo)函數(shù)中包含的各指令分別進(jìn)行翻譯,不僅會(huì)產(chǎn)生冗余指令,而且由于函數(shù)調(diào)用指令需作為tb結(jié)尾,還會(huì)增加tb的切分次數(shù),進(jìn)而影響翻譯效率以及影響翻譯后程序的運(yùn)行效率。通過本發(fā)明實(shí)施例的優(yōu)化翻譯,只需要將這條目標(biāo)調(diào)用指令直接翻譯成立即數(shù)加載指令,即可實(shí)現(xiàn)獲取指令指針的效果,不僅可以減少因語義翻譯產(chǎn)生的冗余指令,而且由于立即數(shù)加載指令不用作為tb的結(jié)尾,可以減少對tb的切分次數(shù),進(jìn)而提高翻譯效率以及提高翻譯后程序的運(yùn)行效率。
1.一種二進(jìn)制翻譯方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對所述目標(biāo)調(diào)用指令進(jìn)行優(yōu)化翻譯之前,所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述識別當(dāng)前指令是否為目標(biāo)調(diào)用指令,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對所述目標(biāo)調(diào)用指令進(jìn)行優(yōu)化翻譯,包括:
6.根據(jù)權(quán)利要求1至5中任一所述的方法,其特征在于,所述目標(biāo)函數(shù)為x86指令集架構(gòu)中用于獲取指令指針的系列函數(shù)中的任意一個(gè),所述系列函數(shù)用于獲取指令指針并寫入不同的指定寄存器。
7.一種二進(jìn)制翻譯裝置,其特征在于,所述裝置包括:
8.一種電子設(shè)備,其特征在于,包括:處理器、存儲(chǔ)器、通信接口和通信總線,所述處理器、所述存儲(chǔ)器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲(chǔ)器用于存放至少一可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行如權(quán)利要求1至6任一所述的二進(jìn)制翻譯方法的步驟。
9.一種可讀存儲(chǔ)介質(zhì),其特征在于,所述可讀存儲(chǔ)介質(zhì)上存儲(chǔ)程序或指令,所述程序或指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一所述的二進(jìn)制翻譯方法的步驟。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一所述的二進(jìn)制翻譯方法的步驟。
11.一種電子設(shè)備,包括:
12.根據(jù)權(quán)利要求11所述的電子設(shè)備,其中,所述二進(jìn)制翻譯器按基本塊進(jìn)行翻譯,并且在劃分基本塊時(shí),不將預(yù)置哈希表中查詢到的函數(shù)調(diào)用指令作為基本塊的結(jié)尾。
13.一種二進(jìn)制翻譯程序產(chǎn)品,包含宿主機(jī)可執(zhí)行指令,當(dāng)由宿主機(jī)處理器執(zhí)行時(shí),使得所述處理器執(zhí)行以下操作: