[發明專利]利用中間指令集的二進制翻譯方法有效
| 申請號: | 200710047697.8 | 申請日: | 2007-11-01 |
| 公開(公告)號: | CN101145109A | 公開(公告)日: | 2008-03-19 |
| 發明(設計)人: | 管海兵;梁阿磊;包云程 | 申請(專利權)人: | 上海交通大學 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 上海交達專利事務所 | 代理人: | 毛翠瑩 |
| 地址: | 200240*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 利用 中間 指令 二進制 翻譯 方法 | ||
1.一種利用中間指令集的二進制翻譯方法,其特征在于包括如下步驟:
1)映射源機器寄存器到虛擬寄存器:定義中間指令集具有無窮多個32位寄存器,稱虛擬寄存器,記作vn,其中v0永遠代表零值;分析源機器指令中將要使用的源機器寄存器,通過寄存器狀態映射指令GET?s,v、FGETS?s,v和FGETD?s,v,將源機器寄存器映射至虛擬寄存器,將源機器指令對源機器寄存器的狀態改變對應到中間指令對虛擬寄存器的改變,從而建立源機器寄存器到虛擬寄存器的映射關系;
2)將源機器指令翻譯為中間指令:將最常用的源機器指令直接映射到某條中間指令,而對于不常用源機器指令則翻譯成多條中間指令或者用C函數模擬,其中,加載數據至虛擬寄存器時,采用中間指令LD(v,imm),sz,v和FLD(v,imm),sz,fp將源機器指令中包含的內存數據加載至虛擬寄存器,采用中間指令LI?imm,v將源機器指令中包含的立即數imm值賦給虛擬寄存器v,采用中間指令MOV?v1,v2在虛擬寄存器之間移動數據;處理虛擬寄存器中的數據時,分析源機器指令所包含的運算操作,根據源機器指令語義用中間指令中的一條或幾條運算指令將源機器指令的運算準確表達出來,采用算術計算指令完成算術運算,采用邏輯計算指令完成邏輯運算,采用移位運算指令完成移位操作,采用條件比較指令完成條件比較;控制中間指令的執行順序時,分析源機器指令中所包含的跳轉,用中間指令直接跳轉JMP和分支跳轉BRANCH來表示源機器指令的跳轉;將數據運算結果寫回時,分析源機器指令,用中間指令寫回指令執行的結果,采用中間指令MOV?v1,v2在虛擬寄存器之間移動數據,將結果寫回虛擬寄存器,采用中間指令ST?v,sz,(v,imm)和FST?fp,sz,(v,imm)將虛擬寄存器中的數據寫回至內存;采用特殊指令完成一些特定二進制翻譯系統的功能,包括系統調用SYSCALL,中止運行HALT,函數調用CALL?w1,w2,w3…;
3)建立虛擬寄存器與目標機器寄存器的映射關系:定義虛擬寄存器的Next-Use是下一次使用該虛擬寄存器的中間指令在指令流中的位置;當目標機器寄存器數目大于等于源機器寄存器數目時,將所用到的虛擬寄存器一一對應到目標機器寄存器;當目標機器寄存器數目小于源機器寄存器數目且有空閑目標機器寄存器時,則將虛擬寄存器映射到空閑的目標機器寄存器;當目標機器寄存器數目小于源機器寄存器數目且沒有空閑目標機器寄存器時,則將虛擬寄存器映射到具有最大Next-Use值的目標機器寄存器;
4)將中間指令集映射到目標機器指令集:對中間指令進行編碼,生成目標機器二進制代碼,將中間指令集映射到目標機器指令;對于不能直接映射到機器指令的中間指令,用C函數實現;
5)將虛擬寄存器映射回源機器寄存器:用PUT?v,s、FPUTS?v,s、FPUTD?v,s指令將虛擬寄存器映射至源機器寄存器,將中間指令對虛擬寄存器的改變對應到源機器指令對源機器寄存器的狀態改變,從而建立虛擬寄存器到源機器寄存器的映射關系。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海交通大學,未經上海交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710047697.8/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:蠕動式微小管道機器人
- 下一篇:一種數據顯示方法及數據顯示系統以及相關設備





