[發明專利]基于執行樹深度的二進制翻譯方法和裝置在審
| 申請號: | 201410688378.5 | 申請日: | 2014-11-26 |
| 公開(公告)號: | CN104375879A | 公開(公告)日: | 2015-02-25 |
| 發明(設計)人: | 康爍 | 申請(專利權)人: | 康爍 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F9/32 |
| 代理公司: | 北京恒都律師事務所 11395 | 代理人: | 李向東 |
| 地址: | 100084 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 執行 深度 二進制 翻譯 方法 裝置 | ||
技術領域
本發明涉及計算機技術領域,具體而言,特別涉及基于執行樹深度的二進制翻譯方法和裝置。
背景技術
二進制翻譯是指把一種源處理器的二進制程序翻譯為另外一種目標處理器上的機器語言的方法,以使被翻譯的程序能夠在目標處理器上可以執行。在二進制翻譯方法中,把多個基本塊構建為一個超級塊,其中,基本塊是指只有單入口和單出口的一段指令,超級塊是指多個基本塊的集合。
現有方法是把具有先后執行順序的、已經在源處理器上執行過的多個基本塊組成一個超級塊,然后對這個超級塊進行翻譯。因此,現有的翻譯方法沒有把在源處理器上未執行的基本塊翻譯在超級塊中,在目標處理器中執行程序時,執行效率低。
針對現有技術中存在的目標處理器執行二級制翻譯后的超級塊的性能低的問題,目前尚未提出有效的解決方法。
發明內容
本發明的主要目的在于提供一種基于執行樹深度的二進制翻譯方法和裝置,以解決現有技術中的目標處理器執行二級制翻譯后的超級塊的性能低問題。
依據本發明的一個方面,提供了一種基于執行樹深度的二進制翻譯方法。
根據本發明的二進制翻譯方法包括:步驟S0:開始構造超級塊,將執行樹深度初始化為0,并獲取預設的執行樹深度閾值,從預設的起始地址所在的基本塊開始翻譯;步驟S1:翻譯獲取到的基本塊;步驟S2:若翻譯的基本塊的當前指令為直接跳轉指令,則獲取直接跳轉指令進入的基本塊,并返回至步驟S1;步驟S3:若翻譯的基本塊的當前指令為條件跳轉指令,則獲取條件跳轉指令跳轉后的基本塊和條件跳轉指令的下一個基本塊,并且將執行樹深度加1,返回至步驟S1;?步驟S4:若翻譯的基本塊的當前指令為函數調用指令,則獲取函數調用指令對應的函數作為基本塊,并且將執行樹深度加1,返回至步驟S1,其中,在每次執行樹深度加1之后,判斷當前的執行樹深度是否達到執行樹深度閾值,若執行樹深度達到執行樹深度閾值,則翻譯結束,翻譯的所有基本塊構成一個超級塊。
進一步地,該方法還包括:步驟S5:在執行步驟S1之后,存儲基本塊的第一條指令的地址。
進一步地,該方法還包括:步驟S6:在獲取預設的執行樹深度閾值的同時,獲取預設的翻譯時間閾值,并且在開始翻譯時計時,其中,在每次執行樹深度加1之后,判斷當前計時的翻譯時間是否達到翻譯時間閾值,若當前計時的翻譯時間達到翻譯時間閾值,則翻譯結束。
依據本發明的另一個方面,提供了一種基于執行樹深度的二進制翻譯裝置。
根據本發明的二進制翻譯裝置包括:初始化模塊,用于開始構造超級塊時,將執行樹深度初始化為0,并獲取預設的執行樹深度閾值,從預設的起始地址所在的基本塊開始翻譯;翻譯模塊,用于翻譯獲取到的基本塊;第一獲取模塊,用于當翻譯的基本塊的當前指令為直接跳轉指令,獲取直接跳轉指令進入的新基本塊,并由翻譯模塊進行翻譯;第二獲取模塊,用于當翻譯的基本塊的當前指令為條件跳轉指令,獲取條件跳轉指令跳轉后的基本塊和條件跳轉指令的下一個基本塊,由翻譯模塊進行翻譯,并且將執行樹深度加1;?第三獲取模塊,當翻譯的基本塊的當前指令為函數調用指令,則獲取函數調用指令對應的函數作為基本塊,由翻譯模塊進行翻譯,并且將執行樹深度加1;判斷模塊,用于在每次執行樹深度加1之后,判斷當前的執行樹深度是否達到執行樹深度閾值,若執行樹深度達到執行樹深度閾值,則翻譯結束,翻譯的所有基本塊構成一個超級塊。
進一步地,該裝置還包括:存儲模塊,用于在翻譯模塊翻譯一個基本塊之后,存儲該基本塊的第一條指令的地址。
進一步地,初始化模塊還用于在獲取預設的執行樹深度閾值的同時,獲取預設的翻譯時間閾值,并且在開始翻譯時計時;判斷模塊還用于在每次執行樹深度加1之后,判斷當前計時的翻譯時間是否達到翻譯時間閾值,若當前計時的翻譯時間達到翻譯時間閾值,則翻譯結束。
通過本發明,在進行二進制翻譯時,從預設的起始地址所在的基本塊開始翻譯,在翻譯時,若翻譯的基本塊的當前指令為直接跳轉指令,則翻譯直接跳轉指令進入的基本塊;若翻譯的基本塊的當前指令為條件跳轉指令,則翻譯條件跳轉指令跳轉后的基本塊和條件跳轉指令的下一個基本塊,并且將執行樹深度加1;若翻譯的基本塊的當前指令為函數調用指令,則番薯函數調用指令對應的函數,并且將執行樹深度加1,當執行樹深度達到執行樹深度閾值時,翻譯結束,翻譯的所有基本塊構成一個超級塊。通過本發明,能夠提升執行翻譯程序的性能。??
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于康爍,未經康爍許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410688378.5/2.html,轉載請聲明來源鉆瓜專利網。





