

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ARM指令集的模擬文檔控制級(jí)別:內(nèi)部1陳杰alt_20056523指令模擬執(zhí)行流程和其它體系結(jié)構(gòu)類似,ARM 的指令執(zhí)行流程包括取指,譯碼,執(zhí)行,保存結(jié)果, 每條指令執(zhí)行后還有一個(gè)可選的改寫狀態(tài)寄存器過程??梢钥吹?,在指令模擬執(zhí)行 過程中,要訪問寄存器或是內(nèi)存的值的時(shí)候,并不是直接訪問的,而是通過處理器 來取得的,這樣做的目的可以防止在指令執(zhí)行中進(jìn)行非法的操作,同時(shí)也和真實(shí)硬 件的工作機(jī)制更加相似。在上面的執(zhí)行流程圖中,并未涉及到異常的處理。具體指令的模擬執(zhí)行版本 作者Email時(shí)間AUBUX ttCHfPSR KON曲有ImfiflruclunmdlmclMiiiuvwvoav i #SQw
2、rARM7TEM1IHSTRUCTIOH SETXfw M otenUWl- *ecssrepris tuESLffliirV/CMP 指令Data Process In structio n:CMPARM:lnstruction這個(gè)類為各種 ARM 指令的基類,它包含了各類指令的最基本操作,比如寄存器移 位操作,得到 CPU 的指針等等。其它指令都由此繼承而來,重載虛函數(shù)execute 來具體模擬各自的執(zhí)行流程。ARM:Instruction Set這個(gè)類為各種指令類的集合,每一類的指令對象必須被注冊到這個(gè)類之中去。此類 做的主要工作有二:1條件碼的判斷;由于 ARM 指令是條件執(zhí)行的,當(dāng)條
3、件不滿足是便不執(zhí)行,判斷每條指令是否滿足條件是這個(gè)類的主要工作之一,通過函數(shù)test_c ond 來實(shí)現(xiàn)。2指令的初步譯碼分類;ARM 指令格式比較復(fù)雜,統(tǒng)一譯碼難度較大,可讀性也 較差,我們用 2 步譯碼的方式。第一步在這個(gè)類中初步譯碼,判斷即將要執(zhí)行的是 哪種類型的指令,這個(gè)是 in struction_set 的任務(wù)。第二此譯碼則交給各種指令具體 執(zhí)行時(shí)在進(jìn)行第二輪譯碼。ARM:Data Process Instruction這個(gè)類主要模擬數(shù)據(jù)處理指令的執(zhí)行流程,它的尋址方式比較復(fù)雜,有十一種之 多,具體可參照 ARM:Instruction 的 immediate_generator
4、函數(shù)和 shift_imm_generator函數(shù)。具體指令類型更是有 22 種,每一種指令執(zhí)行流程對應(yīng) 一個(gè)成員函數(shù)。具體見下表。MOV 指令Data Process Instruction:MOVMVN 指令Data Process Instruction:MVNCMN 指令Data Process In structio n:CMNCMP 指令Data Process In structio n:CMPUMULL 指令Data Process Instruction:UMULLTST 指令TEQ 指令ORR 指令EOR 指令BIC 指令A(yù)ND 指令A(yù)DD 指令A(yù)DC 指令SUB 指令SB
5、C 指令RSB 指令RSC 指令MUL 指令MLA 指令Data_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessData_ProcessIn struction:TSTIn struction:TEQIn struction:ORRIn struction:EORIn struction:BICIn struction:ANDIn struc
6、tion:ADDIn struction:ADCIn struction:SUBIn struction:SBCIn struction:RSBIn struction:RSCIn struction:MULIn struction:MLAARM:SWInstructionUMLAL 指令Data_Process_lnstruction:UMLALSMULL 指令Data_Process_lnstruction:SMULLSMLAL 指令Data_Process_Instruction:SMLALARM:LS Instruction這個(gè)類主要模擬內(nèi)存訪問指令的執(zhí)行流程,但是有2 大類的目標(biāo)地址
7、計(jì)算方式。每一類又有很多目標(biāo)地址的計(jì)算方式,視指令內(nèi)容而定。字和字節(jié)訪問有自己的目標(biāo) 地址計(jì)算方法,在函數(shù) get_addresS 實(shí)現(xiàn),其中帶 T 的指令采取 get_usermode_adres 函數(shù)來計(jì)算目標(biāo)地址。半字訪問和帶符號(hào)字節(jié)訪問采取另一 種的目標(biāo)地址計(jì)算方法,在函數(shù)get_sh_addres 實(shí)現(xiàn)。每一種指令模擬函數(shù)及對應(yīng) 的尋址方式如下表。LDRLS n struction:LDRLS n struction:get_addressLDRBLS n struction:LDRBLS n struction:get_addressLDRTLS n struction:LDRTL
8、S n struction:get_usermode_adressLDRBTLS n struction:LDRBTLS n struction:get_usermode_adressLDRHLS n struction:LDRHLS n struction:get_sh_addressLDRSHLS n struction:LDRSHLS n struction:get_sh_addressLDRSBLS n struction:LDRSBLS n struction:get_sh_addressSTRLS n struction:STRLS n struction:get_addressS
9、TRBLS_In struction:STRBLS_In struction:get_addressSTRHLS_In struction:STRHLS_In struction:get_sh_addressSTRBTLS_In struction:STRBTLS_In struction:get_usermode_adressARM:MLS_lnstruction這個(gè)類主要模擬內(nèi)存批訪問指令的執(zhí)行流程,這類指令有 2 種,一種是批存儲(chǔ),一 種是批裝載,為了使代碼更于閱讀,我們又把批存儲(chǔ)細(xì)分成2 類,批裝載細(xì)分成 3類。這類指令的目標(biāo)地址包括首地址和末地址,具體來講有四種計(jì)算方法:IA(in
10、creme nt after)、IB ( i ncreme nt before、DA ( decreme nt afte)、DB(decreme nt before,在成員函數(shù) multiaddress 中具體實(shí)現(xiàn)。其余和數(shù)據(jù)存儲(chǔ)指 令的操作類似,代碼可見成員函數(shù)。ARM:Jump_Instruction這個(gè)類主要模擬跳轉(zhuǎn)指令的執(zhí)行流程,有兩種跳轉(zhuǎn)指令,B 和 BL,他們的偏移量范圍為前后 32MB,存放在指令的后 24 位,通過移位帶符號(hào)擴(kuò)展而成。ARM:CPSR_Instruction這個(gè)類模擬訪問狀態(tài)寄存器指令的執(zhí)行流程,根據(jù)指令內(nèi)容修改CPSR 某些域的值,某些域在用戶模式下不可更改,
11、所以在模擬執(zhí)行時(shí)還需判斷當(dāng)前處理器的執(zhí)行 模式。具體模擬操作可見成員函數(shù) MRS,MSR1,MSR2。這個(gè)類模擬軟中斷產(chǎn)生指令的執(zhí)行流程,切換模擬處理器的狀態(tài),跳轉(zhuǎn)到相應(yīng)的處 理函數(shù),在模擬中,指令中的后 24 位值被忽略。STRTLS_ILS_I nstruct ion:get_usermode_adressARM:SWInstruction異常及中斷處理的模擬在模擬擬處理器發(fā)生異?;蛑袛鄷r(shí),比如,譯碼失敗碰到未定義的指令。必須有一 個(gè)機(jī)制來進(jìn)行異常的處理。ARM 處理器在這種情況下能自動(dòng)做好保存現(xiàn)場及跳轉(zhuǎn) 中斷向量,因此我們的模擬處理器也必須做好這些異常處理的模擬。ARM 體系中各異常中斷處理程序的中斷向量存儲(chǔ)地址及進(jìn)處理函數(shù)后相應(yīng)的執(zhí)行 模如下。AtidnFSlExcafationMwlv m mryReadSup&rvtwLbdJOOOOCCMUndefnied朋Uhdelird0 x0)000006Softwn% rtenuptSupervtsorMXnOOQOCAtKHlAocn(bdX)00001DAtorl (tj PAbort(MnOOOQMRrsevwJ(MXKnOOWmoIRQanoroowicFIQFIQ我們所作的異常模擬處理就是在異常發(fā)生時(shí),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應(yīng)材料解除合同范本
- 化妝合同范本
- 代理雨鞋采購合同范本
- 獸藥委托加工合同范本
- 公租房出售合同范本
- 代理工程合同范本
- 買新房認(rèn)購合同范例
- 2024年洛陽市新安縣龍?zhí)洞髰{谷荊紫仙山景區(qū)招聘考試真題
- 農(nóng)業(yè)技術(shù)人員服務(wù)合同范本
- 2024年菏澤市勞信就業(yè)服務(wù)有限公司招聘制醫(yī)院人員考試真題
- 老年病科重點(diǎn)專科建設(shè)
- 歌劇卡門課件教學(xué)課件
- 工程投標(biāo)文件范本完整版
- 小學(xué)二年級(jí)開學(xué)家長會(huì)課件2024-2025學(xué)年
- 光伏發(fā)電績效考核管理
- 低空經(jīng)濟(jì)無人機(jī)行業(yè)市場趨勢與競爭分析
- 信息論與編碼理論-全
- 正是橙黃橘綠時(shí)讀書分享好書推介感悟教學(xué)課件
- 舌尖上的美食中國美食文化北京小吃介紹
- 南方全站儀NTS-332R說明書
- 2024年航空職業(yè)技能鑒定考試-航空乘務(wù)員考試近5年真題附答案
評(píng)論
0/150
提交評(píng)論