<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于X86平臺的ARM指令集模擬器的設(shè)計

          基于X86平臺的ARM指令集模擬器的設(shè)計

          作者: 時間:2016-10-10 來源:網(wǎng)絡(luò) 收藏

          2.2 指令集的流程設(shè)計
          是按照解釋型的模擬策略設(shè)計的。解釋型指令集模擬器基本上是以軟件實現(xiàn)的虛擬機,它以解釋的形式在宿主機上執(zhí)行加載的目標(biāo)代碼,它的主體是一個具有3步過程的循環(huán)體,分別對應(yīng)取指令、指令譯碼、指令執(zhí)行3步操作。因此本指令集模擬器的核心流程就是加載程序,之后進(jìn)入讀取指令、指令譯碼和指令執(zhí)行的循環(huán)體中,當(dāng)所有目標(biāo)代碼都執(zhí)行之后結(jié)束并顯示運行結(jié)果。整個流程如圖4指令模擬器的工作流程所示。

          本文引用地址:http://www.ex-cimer.com/article/201610/306034.htm

          b.JPG


          2.3 指令集模擬器的主要功能模塊設(shè)計
          2.3.1 指令譯碼模塊
          指令譯碼模塊的功能就是根據(jù)ARM指令集編碼,將要執(zhí)行的二進(jìn)制指令譯碼成操作碼、操作數(shù)、條件碼等指令模擬需要的信息。指令集模擬器的每一模擬步模擬一條指令的取指令、譯碼、執(zhí)行等各個階段,因此指令集模擬器中的指令譯碼與實際ARM處理器的譯碼并不是完全對應(yīng),同時也不會影響模擬的正確性。
          在指令譯碼模塊中,本文采用分類的思想,將指令集按照一定的規(guī)律進(jìn)行分類解析,逐步解析,找到最終指令所對應(yīng)的解析函數(shù)。這樣做的目的是為了減少判斷指令時的條件判斷次數(shù),采用分治的思想提高指令譯碼的效率。不過要想對指令譯碼效率有顯著性的提高,還是要采用改進(jìn)型的工作流程,主要原因是在指令譯碼的過程中,會出現(xiàn)大量的重復(fù)譯碼,所以改進(jìn)型的工作流程中提出的指令緩存技術(shù)會很好的提高譯碼效率,減少重復(fù)的譯碼工作。
          2.3.2 指令模擬與調(diào)度模塊
          指令模擬與調(diào)度功能模塊是指令集模擬器的核心部分,也是實現(xiàn)代碼量最大的部分,主要包括與虛擬指令集定義對應(yīng)的一系列指令模擬函數(shù)、指令執(zhí)行控制函數(shù)、指令翻譯調(diào)度函數(shù)、中斷處理函數(shù)以及一些公用函數(shù)。指令執(zhí)行控制函數(shù)負(fù)責(zé)控制整個模擬過程,反匯編結(jié)果文件加載完畢后,程序就進(jìn)入核心部分的模擬循環(huán);指令翻譯調(diào)度函數(shù)負(fù)責(zé)將目標(biāo)指令轉(zhuǎn)化為虛擬指令形式,然后指令模擬函數(shù)按照相應(yīng)指令的功能定義完成指令的模擬,模擬結(jié)果是修改存儲器、寄存器值:公用函數(shù)主要包括尋址方式判別、指令操作數(shù)分析、指令條件碼判別、移位操作、ALU操作以及寄存器訪問等。指令模擬與調(diào)度的循環(huán)過程如下:
          1)取指令
          該模擬器的輸入是二進(jìn)制可執(zhí)行文件,因此取指令時,根據(jù)PC值取得的當(dāng)前的指令,進(jìn)行譯碼。
          2)翻譯
          調(diào)用指令翻譯函數(shù)獲得虛擬指令。
          3)調(diào)度
          根據(jù)指令類型,調(diào)用相應(yīng)的指令模擬函數(shù)。
          4)執(zhí)行
          指令模擬函數(shù)對指令進(jìn)行模擬。
          5)中斷檢測與調(diào)度
          為了對中斷系統(tǒng)進(jìn)行模擬,本文定義了對應(yīng)于FIQ、IRQ的標(biāo)志變量,可以改變他們來模擬外部中斷輸入,每條指令模擬結(jié)束后,必須檢測上述兩個標(biāo)志,如果檢測到中斷發(fā)生,則調(diào)用相應(yīng)的異常進(jìn)入函數(shù),PC被設(shè)定為中斷服務(wù)程序入口地址。
          6)更新PC值
          如果本次循環(huán)沒有發(fā)生指令跳轉(zhuǎn)、加載PC及中斷,PC順序移向下一條指令。



          關(guān)鍵詞: X86 ARM 模擬器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();