[發明專利]一種指令跳轉方法、裝置、電子設備及可讀存儲介質有效
| 申請號: | 202310724144.0 | 申請日: | 2023-06-16 |
| 公開(公告)號: | CN116501387B | 公開(公告)日: | 2023-09-12 |
| 發明(設計)人: | 蘭彥志;曾露 | 申請(專利權)人: | 龍芯中科技術股份有限公司 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30;G06F9/448 |
| 代理公司: | 北京潤澤恒知識產權代理有限公司 11319 | 代理人: | 劉冬亮 |
| 地址: | 100095 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 指令 跳轉 方法 裝置 電子設備 可讀 存儲 介質 | ||
1.一種指令跳轉方法,其特征在于,所述方法應用于二進制翻譯系統,所述二進制翻譯系統用于將客戶機中的源程序翻譯為宿主機中的目標程序,所述方法包括:
獲取所述源程序中的函數調用指令對應的函數返回指令待返回的客戶機地址;
對所述客戶機地址中存儲的指令所屬的翻譯單元進行翻譯處理,得到目標程序;
根據所述目標程序在所述宿主機中的存儲地址確定所述函數返回指令待返回的宿主機地址;
將所述客戶機地址和所述宿主機地址存儲在預設寄存器中;
在執行目標跳轉指令時,從程序棧中獲取所述目標跳轉指令對應的函數返回指令的返回地址;所述目標跳轉指令是由所述二進制翻譯系統對所述源程序中的所述函數返回指令進行翻譯得到的;所述返回地址為所述函數返回指令在所述客戶機中的跳轉地址;
從所述預設寄存器中讀取所述客戶機地址和所述宿主機地址;每翻譯一次函數返回指令,所述預設寄存器被覆蓋一次;
將所述客戶機地址與所述返回地址進行比對;
若所述客戶機地址與所述返回地址相同,則將所述宿主機地址確定為所述目標跳轉指令的目標跳轉地址;
執行所述目標跳轉指令,以跳轉至所述目標跳轉地址;
其中,所述返回地址中存儲的指令,為所述函數返回指令對應的函數調用指令的下一條指令。
2.根據權利要求1所述的方法,其特征在于,所述執行所述目標跳轉指令,以跳轉至所述目標跳轉地址之前,所述方法還包括:
若所述返回地址與所述客戶機地址不相同,則在全局哈希表中查詢所述返回地址對應的宿主機地址,并將所述返回地址對應的宿主機地址確定為所述目標跳轉指令的目標跳轉地址;
若所述全局哈希表中不存在所述返回地址對應的宿主機地址,則對所述客戶機地址中存儲的指令所屬的翻譯單元進行翻譯處理,得到目標程序,并根據所述目標程序的存儲地址確定所述目標跳轉指令的目標跳轉地址。
3.根據權利要求1所述的方法,其特征在于,所述預設寄存器用于記錄至少兩個線程對應的客戶機地址和宿主機地址,一個線程對應一對地址;所述從預設寄存器中讀取客戶機地址和宿主機地址,包括:
從預設結構體中獲取所述目標程序所在的第一線程對應的運行數據;
根據所述運行數據將所述預設寄存器中記錄的地址恢復為所述第一線程對應的地址;
從恢復后的預設寄存器中讀取客戶機地址和宿主機地址。
4.根據權利要求3所述的方法,其特征在于,所述將所述客戶機地址和所述宿主機地址存儲在預設寄存器中之后,所述方法還包括:
觸發例外操作,以對所述預設寄存器的標志位進行標記;所述標志位用于指示所述預設寄存器中記錄的地址是否被修改。
5.根據權利要求4所述的方法,其特征在于,所述方法還包括:
在接收到針對第二線程的調度操作的情況下,若所述預設寄存器的標志位被標記,則將所述預設寄存器中記錄的地址存儲至所述預設結構體中;所述第二線程為除所述第一線程以外的其他線程。
6.根據權利要求1所述的方法,其特征在于,所述函數調用指令的存儲地址與所述客戶機地址連續相鄰,且所述函數調用指令的存儲地址在所述客戶機地址之前。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于龍芯中科技術股份有限公司,未經龍芯中科技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310724144.0/1.html,轉載請聲明來源鉆瓜專利網。





