"/>
【技術實現步驟摘要】
一種實現高速CPU指令解釋器的方法
[0001]本專利技術涉及指令解釋器
,尤其涉及一種實現高速CPU指令解釋器的方法。
技術介紹
[0002]在計算機發展的歷史與過程中,解釋器(Interpreter)占有了重要的地位,與編譯器(Compiler)形成一個相對應的概念,相比編譯器編譯出可以直接運行在CPU之上的本地程序,解釋器解釋運行的程序運行相對較慢,但是解釋器也擁有許多編譯器編譯出的本地程序無法比擬的優勢:開發者運行程序時擁有程序的完整控制權,可以在運行中非常方便地檢測包括但不限于內存泄漏,堆棧越界,系統調用記錄等的問題,此外,解釋器不需要編譯,寫完即運行,同時也不會受到程序運行所在系統平臺的安全策略限制,也受到了許多開發者的歡迎,在解釋器的實際使用過程中,其運行速度相對較慢,通常與編譯器編譯的本地程序相比相差了20
?
700倍不等。
技術實現思路
[0003]本專利技術的目的是解決現有技術中存在的缺點,而提出的一種實現高速CPU指令解釋器的方法。
[0004]為了實現上述目的,本專利技術采用了如下技術方案,一種實現高速CPU指令解釋器的方法,包括以下步驟:
[0005]S1:運行CPU指令解析模塊,解析需要解釋執行的二進制文件所有的原始CPU指令得到指令邏輯;
[0006]S2:解釋器指令生成模塊獲取CPU指令解析模塊中解析獲得的指令邏輯,并且根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令;
[0007]S3:自定義 ...
【技術保護點】
【技術特征摘要】
1.一種實現高速CPU指令解釋器的方法,其特征在于,包括以下步驟:S1:運行CPU指令解析模塊,解析需要解釋執行的二進制文件所有的原始CPU指令得到指令邏輯;S2:解釋器指令生成模塊獲取CPU指令解析模塊中解析獲得的指令邏輯,并且根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令;S3:自定義動態鏈接器模塊會把需要解釋執行的二進制文件映射入待執行的進程的內存空間,綁定或者遲綁定該文件與系統模塊的互相調用關系;S4:系統回調入口模塊會為每個可能的回調入口準備一塊可執行的內存,應對從系統模塊回到解釋器內部的情況;S5:自定義動態鏈接器把控制權交給解釋器指令執行模塊,并根據S2中生成的解釋器指令快速執行;S6:當需要解釋執行的二進制文件需要調用系統函數時,ABI轉換模塊負責把該系統函數所需要的所有參數和返回值依照ABI的規范放到指定的內存/寄存器位置。2.根據權利要求1所述的實現高速CPU指令解釋器的方法,其特征在于,所述S1中,解析需要解釋執行的二進制文件是由開源軟件Capstone的核心完成。3.根據權利要求1所述的實現高速CPU指令解釋器的方法,其特征在于,所述S2中,所述根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令具體為假定真實CPU指令集中使用的寄存器集合為S,則定義一個該集合的子集C,實現解釋器指令的真實CPU指令只用到C中的寄存器,使用該子集可有效減少解釋器的解釋指令數量,避免解釋器體積爆炸式的增長消耗大量內存,每一條解釋器指令都被分配到一個數字a。4.根據權利要求1所述的實現高速CPU指令解釋器的方法,其特征在于,所述S2中,所述根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令,包括:S201:在真實CPU指令向解釋器轉換時,保存所有C集合中的寄存器到對應的內存位置;S202:如果當前真實指令中的操作寄存器屬于集合S但不屬于C,則通過賦值指令把當前真實指令中操作寄存器的值從S集合轉移到C集合中任一寄存器;如果當前真實指令中的操作寄存器屬于集合C,則通過內存載入指令把S201中保存的C集合的寄存器對應的內存載入到C集合中任一寄存器;S203:解釋器中含有使用了限于C集合寄存器中的所有指令,使用解釋器執行該指令;S204:如果當前真實指令中的結果寄存器屬于集合S但不屬于C,則把解釋器指令執行的結果寄存器的值,從C集合通過賦值指令轉移回原指令中屬于S集合的寄存器;如果當前真...
【專利技術屬性】
技術研發人員:黃鐘呂,
申請(專利權)人:上海芯竹科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。