[發明專利]函數調用和返回的處理方法、二進制翻譯方法和系統無效
| 申請號: | 200710094328.4 | 申請日: | 2007-11-28 |
| 公開(公告)號: | CN101452395A | 公開(公告)日: | 2009-06-10 |
| 發明(設計)人: | 唐大國;王麗一;漆鋒濱;文延華;卿鵬;孫俊 | 申請(專利權)人: | 無錫江南計算技術研究所 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京集佳知識產權代理有限公司 | 代理人: | 逯長明 |
| 地址: | 214083江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 函數 調用 返回 處理 方法 二進制 翻譯 系統 | ||
技術領域
本發明涉及二進制翻譯,特別是涉及函數調用和返回的處理方法、二進 制翻譯方法和系統。
背景技術
二進制翻譯是將一種(源)機器上的可執行程序翻譯成另一種(目標) 機器上的可執行程序的過程,二進制翻譯系統使得已有的大量應用程序可以 直接為新的平臺所利用。如圖1所示,源機器11的可執行程序111(以下簡稱 為源程序)通過目標機器12上的二進制翻譯系統121,被轉換成目標機器的可 執行程序122(以下簡稱為目標程序)。
函數調用和返回在程序中十分多見,雖然不同的高級語言調用函數的形 式不同,但本質是類似的,都遵循后進先出(LIFO)的原則,即最后被調用 的函數最先返回。因此可以使用棧來實現,例如,
函數調用的一般形式為:
call?P??????????????;調用以P為起始地址的子函數
R:.......??????????;call后面的指令是從地址R開始的
二進制翻譯系統將函數調用翻譯為:
push?R??????????????;將返回地址R保存(push)到棧中
jmp?P’?????????????;通過二進制翻譯后,子函數的起始地址為P’
函數返回的一般形式為:
ret
二進制翻譯系統將函數返回翻譯為:
save?scratch?registers%eax,%ebx,%flags;保存以下程序用到的寄存器值
pop%eax????????;從棧中彈出(pop)一個元素,即源程序的返回地址R
%eax:=ILtoOLAddress(%eax)????;將源程序的返回地址R映射到目標程
?????????????????????????????????;序的返回地址R’
store(Return?Target),%eax??;保存目標程序的返回地址R’
restore?scratch?registers%eax,%ebx,%flags??;恢復已保存的寄存器值
jmp(Return_Target)????;跳到目標程序的返回地址R’去執行
上述二進制翻譯系統在翻譯返回指令時比較慢,因為不僅要將一條返回 指令翻譯成幾條目標指令,而且還要完成一些將源程序的地址映射到目標程 序的地址的工作。這樣,源程序返回只需要一個時鐘周期,而目標程序返回 則需要很多時鐘周期。子函數調用和返回在程序中十分多見,因此通過二進 制翻譯之后目標程序會明顯變慢。
專利號為US6711672的美國專利公開了一種二進制翻譯系統的函數調用 和返回的處理方法,在該專利中,源程序的指令稱為輸入語言(IL)指令, 目標程序的指令稱為輸出語言(OL)指令,對于每個IL子函數調用,正確的 IL返回地址R被存放到棧中,相應的OL返回地址R’存放到返回目標緩存(RTC, return?target?cache)中,根據R來計算RTC的索引;執行到OL函數返回時,從 棧頂彈出一個值,根據這個值來計算索引,根據這個索引從RTC中獲得一個目 標地址,如果目標地址正確,則從該地址開始執行,否則轉到備份返回地址 恢復模塊來重新構建OL返回地址。RTC其實就是一個哈希表,根據R來計算 RTC的索引就是一個哈希函數,能夠將IL返回地址映射到RTC中。
因此,函數調用:
call?P????????;調用以P為起始地址的子函數
R:.......????;call后面的指令是從地址R開始的
被二進制翻譯系統翻譯為:
push?R?????????????;將IL返回地址R保存到棧中
store(RTC),R’????;將OL返回地址R’保存到RTC中
jmp?P’????????????;跳到子函數的起始地址P’去執行
R’:cmp%eax,R???;判斷是否返回到正確的地址(命中)
jne?Miss/Failure;如果不是正確的地址,則跳到備份返回地址恢復模塊
restore?scatch?registers%eax,%ebx,%flags
函數返回ret被二進制翻譯系統翻譯為:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于無錫江南計算技術研究所,未經無錫江南計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710094328.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:粗、細纖維混紡紗
- 下一篇:瓦楞紙箱的二次壓痕裝置





