【技術實現步驟摘要】
本專利技術涉及的是計算機領域中二進制翻譯領域,尤其涉及二進制翻譯中間接跳轉指令的翻譯方法及其系統。
技術介紹
二進制翻譯器功能是將一種指令集體系結構(ISA)上的可執行程序翻譯到另一 種ISA上執行。當源機器和目標機器的ISA不同時,可以實現不同機器間的代碼遷移。該 項技術可以用于解決遺產代碼的移植,為某一處理器提供更加豐富的軟件資源等。當ISA 相同時,該項技術可以用于實現動態優化和軟件插樁等。另外在虛擬機系統的實現中,存在 一個關鍵步驟就是二進制翻譯。上述開發過程中,均會面臨的問題為如何高效地處理程序 中存在的間接跳轉指令。 間接跳轉指令不同于普通的跳轉指令,它的跳轉目標地址只有在運行的時刻才能 夠獲得。例如Intel X86體系結構上間接跳轉指令的格式如下所示。 FF/4 JMP r/ml6 Jump near,absolute indirect, address given in r/ml6 FF/4 JMP r/m32 Jump near,absolute indirect, address given in r/m32 FF/5 JMP ml6:16 Jump near, absolute indirect, address given in ml6:16 FF/4 JMP ml6:32 Jump near, absolute indirect, address given in ml6:32 可見,間接跳轉指令的操作數可能是寄存器,也可能是內存,該操作數指示的內存 地址中存放的內容即為要跳轉的目標地址。在二進制翻譯系統中,如何有效地翻譯 ...
【技術保護點】
一種二進制翻譯中間接跳轉指令的翻譯方法,其特征在于,包括: 步驟1,在反匯編到間接跳轉指令時,根據反匯編出的源指令序列判斷所述間接跳轉指令是否為多分支語句或虛函數調用,如果是則進行標記,獲得被標記的間接跳轉指令的源跳轉表; 步驟2,在翻譯時,將被標記的間接跳轉指令翻譯為根據待構建的所述被標記的間接跳轉指令的目標跳轉表的內容進行跳轉的指令,為所述目標跳轉表預留重定位項; 步驟3,翻譯完所述被標記的間接跳轉指令后,根據所述間接跳轉指令的源跳轉表構建所述間接跳轉指令的目標跳轉表; 步驟4,將構建的所述目標跳轉表的地址寫入所述重定位項。
【技術特征摘要】
一種二進制翻譯中間接跳轉指令的翻譯方法,其特征在于,包括步驟1,在反匯編到間接跳轉指令時,根據反匯編出的源指令序列判斷所述間接跳轉指令是否為多分支語句或虛函數調用,如果是則進行標記,獲得被標記的間接跳轉指令的源跳轉表;步驟2,在翻譯時,將被標記的間接跳轉指令翻譯為根據待構建的所述被標記的間接跳轉指令的目標跳轉表的內容進行跳轉的指令,為所述目標跳轉表預留重定位項;步驟3,翻譯完所述被標記的間接跳轉指令后,根據所述間接跳轉指令的源跳轉表構建所述間接跳轉指令的目標跳轉表;步驟4,將構建的所述目標跳轉表的地址寫入所述重定位項。2. 如權利要求1所述的二進制翻譯中間接跳轉指令的翻譯方法,其特征在于, 所述步驟l進一步為,步驟21,在反匯編到間接跳轉指令時,根據反匯編出的源指令序列判斷所述間接跳轉 指令是否為多分支語句或虛函數調用,如果是,則對所述間接跳轉指令進行標記;步驟22,獲得所述被標記的間接跳轉指令的源跳轉表的大小,所述源跳轉表中記載的 各個跳轉目標地址,記錄計算所述源跳轉表索引的指令。3. 如權利要求2所述的二進制翻譯中間接跳轉指令的翻譯方法,其特征在于, 所述步驟2進一步為,步驟31,翻譯所述計算源跳轉表的索引的指令,在索引所述目標跳轉表時使用所述索引;步驟32,將被標記的間接跳轉指令翻譯為根據所述索引從待構建的所述間接跳轉指令 的目標跳轉表中獲得對應表項,并按所述表項的內容進行跳轉的指令; 步驟33,為所述目標跳轉表預留重定位項。4. 如權利要求2所述的二進制翻譯中間接跳轉指令的翻譯方法,其特征在于, 所述步驟3進一步為,步驟41,翻譯完所述被標記的間接跳轉指令后,構建目標跳轉表的大小同源跳轉表的 大小相同;步驟42,判斷源跳轉表的表項中的跳轉地址是否已被翻譯并生成對應的本地碼,如果 是,執行步驟43,否則,執行步驟44 ;步驟43,將所述對應的本地碼的入口地址填入所述目標跳轉表對應的表項中; 步驟44,將所述目標跳轉表對應的表項填為跳轉到翻譯控制器的代碼入口地址。5. 如權利要求2所述的二進制翻譯中間接跳轉指令的翻譯方法,其特征在于, 所述步驟1和所述步驟2之間還包括步驟51,將被標記的間接跳轉指令的翻譯中取源跳轉表表項內容的指令對應生成的本 地碼移到跳轉寄存器指令之后; 所述步驟3進一步為,步驟51,翻譯完所述被標記的間接跳轉指令后,構建目標跳轉表的大小同源跳轉表的 大小相同;步驟52,判斷源跳轉表的表項中的跳轉地址是否已被翻譯并生成對應的本地碼,如果 是,執行步驟53,否則,執行步驟54 ;步驟53,將所述對應的本地碼的入口地址填入所述目標跳轉表對應的表項中;步驟54,將所述目標跳轉表對應的表項填為所述跳轉寄存器指令的下一條指令的地址。6. 如權利要求1所述的二進制翻譯中間接跳轉指令的翻譯方法,其特征在于, 所述步驟2還包括,對于未被標記的間接跳轉指令,按查找哈希表的方法進行翻譯...
【專利技術屬性】
技術研發人員:武成崗,王文文,
申請(專利權)人:中國科學院計算技術研究所,
類型:發明
國別省市:11[中國|北京]
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。