[發(fā)明專利]一種指令跳轉(zhuǎn)方法、裝置、電子設(shè)備及可讀存儲介質(zhì)有效
| 申請?zhí)枺?/td> | 202310724144.0 | 申請日: | 2023-06-16 |
| 公開(公告)號: | CN116501387B | 公開(公告)日: | 2023-09-12 |
| 發(fā)明(設(shè)計)人: | 蘭彥志;曾露 | 申請(專利權(quán))人: | 龍芯中科技術(shù)股份有限公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30;G06F9/448 |
| 代理公司: | 北京潤澤恒知識產(chǎn)權(quán)代理有限公司 11319 | 代理人: | 劉冬亮 |
| 地址: | 100095 北京市*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 指令 跳轉(zhuǎn) 方法 裝置 電子設(shè)備 可讀 存儲 介質(zhì) | ||
本發(fā)明實施例提供一種指令跳轉(zhuǎn)方法、裝置、電子設(shè)備及可讀存儲介質(zhì),應(yīng)用于二進(jìn)制翻譯系統(tǒng),該方法包括:在執(zhí)行目標(biāo)跳轉(zhuǎn)指令時,從程序棧中獲取所述目標(biāo)跳轉(zhuǎn)指令對應(yīng)的函數(shù)返回指令的返回地址;從預(yù)設(shè)寄存器中讀取客戶機(jī)地址和宿主機(jī)地址;將所述返回地址與所述客戶機(jī)地址進(jìn)行比對;若所述返回地址與所述客戶機(jī)地址相同,則將所述宿主機(jī)地址確定為所述目標(biāo)跳轉(zhuǎn)指令的目標(biāo)跳轉(zhuǎn)地址;執(zhí)行所述目標(biāo)跳轉(zhuǎn)指令,以跳轉(zhuǎn)至所述目標(biāo)跳轉(zhuǎn)地址。本發(fā)明實施例無需在每次執(zhí)行過程中都查找全局哈希表,降低了因查找全局哈希表造成的性能損失,從而提升了二進(jìn)制翻譯系統(tǒng)的系統(tǒng)性能。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種指令跳轉(zhuǎn)方法、裝置、電子設(shè)備及可讀存儲介質(zhì)。
背景技術(shù)
中央處理器(Central?Processing?Unit,CPU)指令集從指令的復(fù)雜程度角度劃分,可以分為復(fù)雜指令集計算機(jī)(Complex?Instruction?Set?Computer,CISC)指令和精簡指令集計算機(jī)(Reduced?Instruction?Set?Computer?RISC,RISC)指令。其中,CISC指令數(shù)量多、適用頻率差別大,指令長度不一;RISC指令數(shù)量少、適用頻率相近、指令長度固定。更簡化的RISC指令集使得設(shè)計多級流水線以及多級處理器緩存更為容易,從而提高了微處理器的性能。
隨著微處理器工藝的不斷發(fā)展,微處理器的性能已經(jīng)變得越來越強(qiáng),為了使得計算機(jī)可以同時處理不同CPU指令集,提高處理效率,二進(jìn)制翻譯技術(shù)應(yīng)運(yùn)而生。該技術(shù)能夠使一種CPU體系架構(gòu)的源程序運(yùn)行在另一種CPU體系架構(gòu)上,例如,可以將成熟的CPU體系架構(gòu)的軟件生態(tài)快速遷移至新生的CPU體系架構(gòu)上。
二進(jìn)制翻譯系統(tǒng)是以翻譯單元為基本單位工作的,對于以間接跳轉(zhuǎn)指令結(jié)尾的翻譯單元,在每次執(zhí)行該翻譯單元之前,都需要查找全局哈希表,以獲取該間接跳轉(zhuǎn)指令待返回的宿主機(jī)地址,這個查找過程會導(dǎo)致二進(jìn)制翻譯系統(tǒng)的性能損失。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種指令跳轉(zhuǎn)方法、裝置、電子設(shè)備及可讀存儲介質(zhì),可以提升二進(jìn)制翻譯系統(tǒng)的系統(tǒng)性能。
第一方面,本發(fā)明實施例公開了一種指令跳轉(zhuǎn)方法,所述方法應(yīng)用于二進(jìn)制翻譯系統(tǒng),所述二進(jìn)制翻譯系統(tǒng)用于將客戶機(jī)中的源程序翻譯為宿主機(jī)中的目標(biāo)程序,所述方法包括:
在執(zhí)行目標(biāo)跳轉(zhuǎn)指令時,從程序棧中獲取所述目標(biāo)跳轉(zhuǎn)指令對應(yīng)的函數(shù)返回指令的返回地址;所述目標(biāo)跳轉(zhuǎn)指令是由所述二進(jìn)制翻譯系統(tǒng)對所述源程序中的所述函數(shù)返回指令進(jìn)行翻譯得到的;所述返回地址為所述函數(shù)返回指令在所述客戶機(jī)中的跳轉(zhuǎn)地址;
從預(yù)設(shè)寄存器中讀取客戶機(jī)地址和宿主機(jī)地址;所述預(yù)設(shè)寄存器用于記錄二進(jìn)制翻譯過程中,所述函數(shù)返回指令待返回的客戶機(jī)地址和宿主機(jī)地址,每翻譯一次函數(shù)返回指令,所述預(yù)設(shè)寄存器被覆蓋一次;
將所述返回地址與所述客戶機(jī)地址進(jìn)行比對;
若所述返回地址與所述客戶機(jī)地址相同,則將所述宿主機(jī)地址確定為所述目標(biāo)跳轉(zhuǎn)指令的目標(biāo)跳轉(zhuǎn)地址;
執(zhí)行所述目標(biāo)跳轉(zhuǎn)指令,以跳轉(zhuǎn)至所述目標(biāo)跳轉(zhuǎn)地址。
可選地,所述執(zhí)行所述目標(biāo)跳轉(zhuǎn)指令,以跳轉(zhuǎn)至所述目標(biāo)跳轉(zhuǎn)地址之前,所述方法還包括:
若所述返回地址與所述客戶機(jī)地址不相同,則在全局哈希表中查詢所述返回地址對應(yīng)的宿主機(jī)地址,并將所述返回地址對應(yīng)的宿主機(jī)地址確定為所述目標(biāo)跳轉(zhuǎn)指令的目標(biāo)跳轉(zhuǎn)地址;
若所述全局哈希表中不存在所述返回地址對應(yīng)的宿主機(jī)地址,則對所述客戶機(jī)地址中存儲的指令所屬的翻譯單元進(jìn)行翻譯處理,得到目標(biāo)程序,并根據(jù)所述目標(biāo)程序的存儲地址確定所述目標(biāo)跳轉(zhuǎn)指令的目標(biāo)跳轉(zhuǎn)地址。
可選地,所述從程序棧中獲取所述目標(biāo)跳轉(zhuǎn)指令對應(yīng)的函數(shù)返回指令的返回地址之前,所述方法還包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于龍芯中科技術(shù)股份有限公司,未經(jīng)龍芯中科技術(shù)股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310724144.0/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





