"/>
  • 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種實現高速CPU指令解釋器的方法技術

    技術編號:36089843 閱讀:24 留言:0更新日期:2022-12-24 11:06
    本發明專利技術涉及指令解釋器技術領域,具體為一種實現高速CPU指令解釋器的方法,包括以下步驟,S1:運行CPU指令解析模塊,解析需要解釋執行的二進制文件所有的原始CPU指令得到指令邏輯。本發明專利技術中,提供的解釋器均使用1

    【技術實現步驟摘要】
    一種實現高速CPU指令解釋器的方法


    [0001]本專利技術涉及指令解釋器
    ,尤其涉及一種實現高速CPU指令解釋器的方法。

    技術介紹

    [0002]在計算機發展的歷史與過程中,解釋器(Interpreter)占有了重要的地位,與編譯器(Compiler)形成一個相對應的概念,相比編譯器編譯出可以直接運行在CPU之上的本地程序,解釋器解釋運行的程序運行相對較慢,但是解釋器也擁有許多編譯器編譯出的本地程序無法比擬的優勢:開發者運行程序時擁有程序的完整控制權,可以在運行中非常方便地檢測包括但不限于內存泄漏,堆棧越界,系統調用記錄等的問題,此外,解釋器不需要編譯,寫完即運行,同時也不會受到程序運行所在系統平臺的安全策略限制,也受到了許多開發者的歡迎,在解釋器的實際使用過程中,其運行速度相對較慢,通常與編譯器編譯的本地程序相比相差了20
    ?
    700倍不等。

    技術實現思路

    [0003]本專利技術的目的是解決現有技術中存在的缺點,而提出的一種實現高速CPU指令解釋器的方法。
    [0004]為了實現上述目的,本專利技術采用了如下技術方案,一種實現高速CPU指令解釋器的方法,包括以下步驟:
    [0005]S1:運行CPU指令解析模塊,解析需要解釋執行的二進制文件所有的原始CPU指令得到指令邏輯;
    [0006]S2:解釋器指令生成模塊獲取CPU指令解析模塊中解析獲得的指令邏輯,并且根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令;
    [0007]S3:自定義動態鏈接器模塊會把需要解釋執行的二進制文件映射入待執行的進程的內存空間,綁定或者遲綁定該文件與系統模塊的互相調用關系;
    [0008]S4:系統回調入口模塊會為每個可能的回調入口準備一塊可執行的內存,應對從系統模塊回到解釋器內部的情況;
    [0009]S5:自定義動態鏈接器把控制權交給解釋器指令執行模塊,并根據S2中生成的解釋器指令快速執行;
    [0010]S6:當需要解釋執行的二進制文件需要調用系統函數時,ABI轉換模塊負責把該系統函數所需要的所有參數和返回值依照ABI的規范放到指定的內存/寄存器位置。
    [0011]作為本專利技術的進一步方案,所述S1中,解析需要解釋執行的二進制文件是由開源軟件Capstone的核心完成。
    [0012]作為本專利技術的進一步方案,所述S2中,所述根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令具體為假定真實CPU指令集中使用的寄存器集合為S,則定義一個該集合的子集C,實現解釋器指令的真實CPU指令只用到C中的寄存器,使用該子集可有效減少解釋器的解釋指令數量,避免解釋器體積爆炸式的增長消耗大量內存,每
    一條解釋器指令都被分配到一個數字a。
    [0013]作為本專利技術的進一步方案,所述S2中,所述根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令,包括:
    [0014]S201:在真實CPU指令向解釋器轉換時,保存所有C集合中的寄存器到對應的內存位置;
    [0015]S202:如果當前真實指令中的操作寄存器屬于集合S但不屬于C,則通過賦值指令把當前真實指令中操作寄存器的值從S集合轉移到C集合中任一寄存器;如果當前真實指令中的操作寄存器屬于集合C,則通過內存載入指令把S201中保存的C集合的寄存器對應的內存載入到C集合中任一寄存器;
    [0016]S203:解釋器中含有使用了限于C集合寄存器中的所有指令,使用解釋器執行該指令;
    [0017]S204:如果當前真實指令中的結果寄存器屬于集合S但不屬于C,則把解釋器指令執行的結果寄存器的值,從C集合通過賦值指令轉移回原指令中屬于S集合的寄存器;如果當前真實指令中的結果寄存器屬于集合C,則通過內存存放指令把結果從結果寄存器保存到S201中C集合的寄存器對應的內存位置;
    [0018]S205:在解釋器向真實CPU指令轉換時,從內存中恢復所有C集合中的寄存器;
    [0019]S206:通過以上的S201
    ?
    S205拆分的一條真實CPU指令,變成若干條解釋器中存在的指令,每條解釋器中存在的指令都被一個數字a代表,將原真實CPU指令變成的若干個a保存。
    [0020]作為本專利技術的進一步方案,所述S3中,所述把需要解釋執行的二進制文件映射入待執行的進程的內存空間,綁定或者遲綁定該文件與系統模塊的互相調用關系是由開源的dyld或linker完成。
    [0021]作為本專利技術的進一步方案,所述S2中,所述根據該邏輯分解、重組指令,生成專為解釋器指令執行模塊使用的解釋器指令,包括:
    [0022]S401:在解釋器中編譯一整個內存頁的跳轉指令,每一個跳轉指令都會讀取位于大小為一個內存頁之后的數據來進行跳轉;
    [0023]S402:獲得所有需要回調入需要解釋執行的二進制文件的入口;
    [0024]S403:映射S401中的內存頁為可執行,并在緊接著這頁內存后再映射一頁可讀寫內存,S401中的所有跳轉指令就能讀取后一頁可讀寫內存來攜帶不同的數據;
    [0025]S404:為每一個入口分配到S401中內存頁中的跳轉指令,并且在位于該條跳轉指令大小為一個內存頁之后的地址寫入相關數據,使得該跳轉指令在跳轉入解釋器入口時能攜帶獨特而正確的信息;
    [0026]S405:當需要的入口數多于一個內存頁能承載的跳轉指令數時,使用操作系統的重映射功能,反復映射S401中的內存頁來擴展跳轉指令數。
    [0027]作為本專利技術的進一步方案,S501:在編譯過程中生成一個指令跳轉表,為所有屬于C集合的解釋器指令分配一個數字;
    [0028]S502:讀取S2中生成的由不同數字a組成的輸入,根據數字跳轉到不同的解釋器指令;
    [0029]S503:如果當前解釋器指令為調用系統函數,則交由ABI轉換模塊處理;
    [0030]S504:如果有更多的數字a,則回到S501,否則結束。
    [0031]作為本專利技術的進一步方案,S601:進入真實指令CPU執行前,把屬于集合C中的所有寄存器,通過內存載入指令從保存寄存器的內存位置載入回寄存器;
    [0032]S602:當真實指令CPU執行完畢,通過內存存放指令把屬于集合C中的所有寄存器保存入內存的相應位置。
    [0033]與現有技術相比,本專利技術的優點和積極效果在于:
    [0034]本專利技術中,提供的解釋器均使用1
    ?
    2條真實指令實現解釋器指令,而原始的真實指令平均會被分解為3
    ?
    4條指令,如果增加常用的真實指令到解釋器指令中去,原始真實指令甚至不需要分解,額外開銷極小,是理論上最快的CPU指令解釋器,在解釋器運行前分析需要解釋執行的二進制文件,把真實指令集轉換成解釋器指令集,在運行時就不需要再次分析真實指令,解釋器直接根據運行前的分析結果快速運行,速度很快,把解釋器放在真實CPU指令組成的進程中運行,除了需要解釋執行的二進制文件外本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    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集合的寄存器;如果當前真...

    【專利技術屬性】
    技術研發人員:黃鐘呂
    申請(專利權)人:上海芯竹科技有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 国产免费AV片无码永久免费| 国模无码视频一区二区三区| 精品一区二区无码AV| 亚洲中文字幕久久精品无码喷水 | 特黄熟妇丰满人妻无码| 精品无人区无码乱码大片国产| 色综合久久无码五十路人妻| 国产午夜鲁丝片AV无码| 97人妻无码一区二区精品免费| 精品人妻系列无码人妻免费视频 | 久久精品亚洲AV久久久无码| 人妻系列无码专区久久五月天| 亚洲一区二区三区国产精品无码| 亚洲午夜AV无码专区在线播放| 亚洲日韩一区二区一无码| 国产成人A人亚洲精品无码| 无码综合天天久久综合网| 精品国精品无码自拍自在线| 国产精品无码午夜福利| 免费无码专区毛片高潮喷水| 亚洲人片在线观看天堂无码| 亚洲av中文无码乱人伦在线播放 | 永久免费无码网站在线观看| 亚洲av午夜精品无码专区| 亚洲国产精品无码AAA片| av无码a在线观看| 人妻无码久久精品| 精品人妻中文无码AV在线| 亚洲一区AV无码少妇电影| 少妇无码一区二区三区免费| 亚洲AV无码日韩AV无码导航| 亚洲AV无码一区二区三区系列| 一本色道久久HEZYO无码| 亚洲午夜无码AV毛片久久| 一本大道无码人妻精品专区 | 亚洲日韩中文字幕无码一区| 亚洲中文字幕无码爆乳app| 欧洲精品久久久av无码电影| 无码日韩人妻精品久久蜜桃 | av无码免费一区二区三区| 亚洲中文无码a∨在线观看|