2thumb匯編指令和arm工作模式實(shí)驗(yàn)報(bào)告_第1頁
2thumb匯編指令和arm工作模式實(shí)驗(yàn)報(bào)告_第2頁
2thumb匯編指令和arm工作模式實(shí)驗(yàn)報(bào)告_第3頁
2thumb匯編指令和arm工作模式實(shí)驗(yàn)報(bào)告_第4頁
2thumb匯編指令和arm工作模式實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式華東師范大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系上機(jī)實(shí)踐報(bào)告課程名稱:指導(dǎo)教師:系統(tǒng)實(shí)踐年級(jí):08 級(jí)姓名:學(xué)號(hào):上機(jī)實(shí)踐成績: 創(chuàng)新實(shí)踐成績:上機(jī)實(shí)踐日期:2011/3/18上機(jī)實(shí)踐名稱:Thumb匯編指令和ARM工作模式上機(jī)實(shí)踐編號(hào):No.2組號(hào):1上機(jī)實(shí)踐時(shí)間:2 學(xué)時(shí)一、實(shí)驗(yàn)?zāi)康?.掌握ARM處理器的Thumb指令使用;2.學(xué)會(huì)使用msr/mrs指令實(shí)現(xiàn)ARM處理器工作模式的切換;3.掌握ld中如何使用命令行指定代碼段起始地址;二、實(shí)驗(yàn)1.硬件:Embest EDUKIT-III(實(shí)驗(yàn)平臺(tái)) PC機(jī)2.:Embest IDE for ARM 集成開發(fā)環(huán)

2、境 GNU Assembler 匯編語言三、實(shí)驗(yàn)內(nèi)容使用THUMB 匯編語言,完成基本reg/mem,以及簡單的算術(shù)/邏輯運(yùn)算。1.使用THUMB 匯編語言,完成較為復(fù)雜的程序分支,push/pop,領(lǐng)會(huì)立即數(shù)大小的限制,2.并體會(huì)ARM 與THUMB 的區(qū)別。3.編寫程序從ARM狀態(tài)切換到Thumb,在ARM狀態(tài)下把R2賦值為0x12345678,在Thumb狀態(tài)下把R2賦值為0x87654321,分別觀察兩個(gè)狀態(tài)下的CPSR、SPSR的值和各個(gè)標(biāo)志位。4.通過ARM匯編指令,在各種處理器模式下切換并觀察各種模式下寄存器的區(qū)別;掌握ARM不同模式的進(jìn)入與推出。四、實(shí)驗(yàn)原理1. ARM 處理器

3、工作狀態(tài)ARM 處理器共有兩種工作狀態(tài):ARM:32 位,這種狀態(tài)下執(zhí)行字對(duì)準(zhǔn)的ARM 指令;第 1 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式Thumb:16 位,這種狀態(tài)下執(zhí)行半字對(duì)準(zhǔn)的Thumb 指令在 Thumb 狀態(tài)下,程序計(jì)數(shù)器PC 使用位1 選擇另一個(gè)半字。注意: ARM 和Thumb 之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。ARM 處理器在兩種工作狀態(tài)之間可以切換。1) 進(jìn)入Thumb 狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位0 為1 時(shí),執(zhí)行BX 指令進(jìn)入Thumb 狀態(tài)。如果處理器在Thumb 狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ,F(xiàn)IQ,Undef,

4、Abort 和SWI)返回時(shí),自動(dòng)切換到Thumb 狀態(tài)。2) 進(jìn)入ARM 狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位0 為0 時(shí),執(zhí)行BX 指令進(jìn)入ARM 狀態(tài)。處理器進(jìn)行異常處理(IRQ,F(xiàn)IQ,Undef,Abort 和SWI)。在此情況下,把PC 放入異常模式鏈接寄存器中。從異常向量地址開始執(zhí)行也可以進(jìn)入ARM 狀態(tài)。2 Thumb 狀態(tài)的寄存器集Thumb 狀態(tài)下的寄存器集是ARM 狀態(tài)下寄存器集的子集。程序員可以直接8個(gè)通用的寄存器(R0R7),PC,SP,LR 和CPSP。每一種模式一組SP,LR 和SPSR。Thumb狀態(tài)的R0R7 與ARM 狀態(tài)的R0R7 是一致的。Thumb狀態(tài)的CPS

5、R和SPSR 與ARM 狀態(tài)的CPSR和SPSR是一致的。Thumb狀態(tài)的SP到ARM 狀態(tài)的R13。Thumb狀態(tài)的LR到ARM 狀態(tài)的R14。Thumb 狀態(tài)的PC到ARM 狀態(tài)的PC(R15)。Thumb 寄存器與ARM 寄存器的如圖3-7 所示。第 2 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式圖 3-7 寄存器狀態(tài)圖3 本實(shí)驗(yàn)涉及到的as 偽操作.code 16|32code 偽操作用于選擇當(dāng)前匯編指令的指令集。參數(shù)16選擇Thumb 指令集,參數(shù)32選擇ARM指令集。語法格式.code 16|32.thumb同 .code 16。.arm同 .code

6、32。.align對(duì)齊方式:第 3 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式通過添加填充字節(jié)使當(dāng)前位置滿足一定的對(duì)齊方式。語法格式.align alignment , fill , max其中alignment 用于指定對(duì)齊方式,可能的取值為2 的次冪,缺省為4。fill 是填充內(nèi)容,缺省用0 填充。max 是填充字節(jié)數(shù)最大值,如果填充字節(jié)超過max,就不進(jìn)行對(duì)齊。示例.align4. ARM 處理器模式ARM體系結(jié)構(gòu)支持下表3-2所列的7 種處理器模式。表 3-2處理器模式在下可以改變模式,外部中斷或異常處理也可以引起模式發(fā)生改變。大多數(shù)應(yīng)用程序在用戶模式下執(zhí)行

7、。當(dāng)處理器工作在用戶模式時(shí),正在執(zhí)行的程序不能某些被保護(hù)的系統(tǒng)資源,也不能改變模式,除非異常(exception)發(fā)生。這適當(dāng)編寫操作系統(tǒng)來系統(tǒng)資源的使用。第 4 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式的系統(tǒng)資源和改變模式。其中的5 種除用戶模式外的其他模式稱為模式。它們可以稱為異常模式,即FIQ(Fast Interrupt request);IRQ(Interrupt ReQuest);管理(Supervisor);中止(Abort) ;未定義(Undefined) 。當(dāng)特定的異常出現(xiàn)時(shí),進(jìn)入相應(yīng)的模式。每種模式某些附加的寄存器,以避免異常出現(xiàn)時(shí)用戶模式的狀

8、態(tài)不可靠。剩下的模式是系統(tǒng)模式。僅ARM 體系結(jié)構(gòu)V4 以及以上的版本有該模式。不能由于任何異常而進(jìn)入該模式。它與用戶模式有完全相同的寄存器,它是模式,不受用戶模式的限制。它供需要系統(tǒng)資源的操作系統(tǒng)任務(wù)使用,但希望避免使用與異常模式有關(guān)的附加寄存器。避免使用附加寄存器保證了當(dāng)任何異常出現(xiàn)時(shí),都使任務(wù)的狀態(tài)不可靠。5. 程序狀態(tài)寄存器提到的程序狀態(tài)寄存器CPSR 和SPSR 包含了條件碼標(biāo)志,中斷位,當(dāng)前處理器模式。每種異常模式一個(gè)程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時(shí),SPSR以及其他狀態(tài)和用于保留CPSR 的狀態(tài)。CPSR 和SPSR 的格式如下:1) 條件碼標(biāo)志:N,Z,C,V 大多數(shù)指

9、令可以檢測這些條件碼標(biāo)志以決定程序指令如何執(zhí)行2)位:最低 8 位 I,F(xiàn),T 和M 位用作位。當(dāng)異常出現(xiàn)時(shí)改變位。當(dāng)處理器在模式下也可以由改變。中斷位:I 置1 則IRQ 中斷;F 置1 則FIQ 中斷。T 位:T=0 指示ARM 執(zhí)行;T=1 指示Thumb 執(zhí)行。在這些體系結(jié)構(gòu)的系統(tǒng)中,可的第 5 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式使用能在ARM 和Thumb 狀態(tài)之間切換的指令。模式位:M0, M1, M2, M3和M4 (M4:0) 是模式位.這些位決定處理器的工作模式.如表3-3 所示。表 3-3 ARM 工作模式M4:03) 其他位程序狀態(tài)寄存

10、器的其他位保留,用作以后的擴(kuò)展。本實(shí)驗(yàn)涉及到的ld 命令行參數(shù)-Ttext org使用org 作為輸出文件的text 段的起始地址。Org 必須是一個(gè)十六進(jìn)制的數(shù)。五、實(shí)驗(yàn)步驟1.實(shí)驗(yàn)A1)參考3.1.5 小節(jié)實(shí)驗(yàn)實(shí)驗(yàn)A 步驟1 建立一個(gè)新的工程,命名為ThumbCode;2)參考3.1.5 小節(jié)實(shí)驗(yàn)實(shí)驗(yàn)A 步驟2 和實(shí)驗(yàn)參考程序編輯輸入源代碼,編輯完畢后,保存文件為ThumbCode.s;3) 選擇Project 菜單中Add To Project Files 命令,或單擊工程管理窗口中的相應(yīng)右鍵菜單命令,彈出文件選擇框,在工程目錄下選擇剛才建立的源文件ThumbCode.s;第 6 頁 共

11、 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式4)參考3.1.5小節(jié)實(shí)驗(yàn)A的步驟4進(jìn)行相應(yīng)設(shè)置;5)參考3.1.5小節(jié)實(shí)驗(yàn)A的步驟5生成目標(biāo)代碼;6)參考3.1.5小節(jié)實(shí)驗(yàn)A的步驟6進(jìn)行相應(yīng)的設(shè)置,需要注意的是:Debug 設(shè)置框Symbol file 設(shè)置應(yīng)該修改為和工程名對(duì)應(yīng)的ThumbCode.elf;7) 選擇Debug 菜單Remote Connect 進(jìn)行連接器,執(zhí)行Download 命令程序,并打開寄存器窗口;8)代碼執(zhí)行區(qū)中每條指令的地址,注意指令最后尾數(shù)的區(qū)別;9) 注意觀察寄存器R0 和R1 的值的變化;10) 結(jié)合實(shí)驗(yàn)內(nèi)容和相關(guān)資料,觀察程序運(yùn)行,通過實(shí)

12、驗(yàn)加深理解ARM 指令和Thumb 指令的不同;11) 理解和掌握實(shí)驗(yàn)后,完成實(shí)驗(yàn)練習(xí)題。2. 實(shí)驗(yàn)B1) 在工作區(qū)窗口工作區(qū)右鍵菜單,點(diǎn)擊“Add New Project to Workspace”;參考實(shí)驗(yàn)A的和實(shí)驗(yàn)參考程序,建立工程ThumbCode2;2) 參照實(shí)驗(yàn)A 的步驟完成目標(biāo)代碼的生成與調(diào)試;注意并ARM 指令下和Thumb 指令狀態(tài)下stmfd,ldmfd,ldmia 和stmia 指令執(zhí)行的結(jié)果,指令的空間地址數(shù)值,數(shù)據(jù)存儲(chǔ)的空間大小等等3)理解和掌握實(shí)驗(yàn)后,完成實(shí)驗(yàn)練習(xí)題。3.實(shí)驗(yàn)3.41)參考3.1.5小節(jié)實(shí)驗(yàn)A 的步驟1 建立一個(gè)新的工程,命名為ARMMode;2)參

13、考3.1.5小節(jié)實(shí)驗(yàn)A 的步驟2 和實(shí)驗(yàn)參考程序編輯輸入源代碼,編輯完畢后,保存文件為ARMMode.s;3) 選擇ProjectAdd To Project tFiles 命令,或單擊工程管理窗口中的相應(yīng)右鍵菜單命令,彈出文件選擇框,在工程目錄下選擇剛才建立的源文件ARMMode.s;4) 參考3.1.5 小節(jié)實(shí)驗(yàn)A 的步驟4 進(jìn)行相應(yīng)設(shè)置。第 7 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式注意:在鏈接器設(shè)置頁面的Link Options 框內(nèi),手動(dòng)加上-Ttext 0x0,即指定代碼段起始地址為0x0,如圖3-8;5) 參考3.1.5 小節(jié)實(shí)驗(yàn)A 的步驟5 生成

14、目標(biāo)代碼;6) 在Download address 框內(nèi),輸入地址應(yīng)該與鏈接器設(shè)置中,指定的代碼段起始地址相同,以保證程序能夠正常執(zhí)行;第 8 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式7) 選擇Debug Remote Connect 連接器,執(zhí)行Download命令程序,并打開寄存器窗口;8) 單步執(zhí)行,觀察并寄存器R0 和CPSR 的值的變化和每次變化后執(zhí)行寄存器賦值后的36 個(gè)寄存器的值的變化情況,尤其注意各個(gè)模式下R13 和R14 的值;9) 結(jié)合實(shí)驗(yàn)內(nèi)容和相關(guān)資料,觀察程序運(yùn)行,通過實(shí)驗(yàn)加深理解ARM 各種狀態(tài)下寄存器的使用;10) 理解和掌握實(shí)驗(yàn)后,完

15、成實(shí)驗(yàn)練習(xí)題。六、 調(diào)試過程、結(jié)果和分析1、3.3.6中的A首先編寫ThumbCode.s并生成目標(biāo)代碼第 9 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式進(jìn)行相應(yīng)設(shè)置,觀察R0和R1的變化第 10 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式2、3.3.6中的B編寫 ThumbCode2.s 并生成目標(biāo)代碼調(diào)試并注意指令執(zhí)行結(jié)果第 11 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式本數(shù)字總數(shù)被 4 整除,一次4 個(gè)數(shù)3、習(xí)題 3.3.7» 注意:考慮用 ldr 偽指令,以防 mov 不夠用如果直接用mov

16、指令會(huì)導(dǎo)致數(shù)據(jù)不能存取,發(fā)生溢出錯(cuò)誤,Thumb指令不能直接0x12345678這樣的大數(shù)字,故使用ldr偽指令進(jìn)行數(shù)據(jù)的存取。4、3.4.6例程編寫ARMMode第 12 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式進(jìn)行相應(yīng)設(shè)置,觀察并理解 ARM 各種狀態(tài)下寄存器的使用七、總結(jié)通過本次實(shí)驗(yàn)進(jìn)一步熟悉了操作步驟,并了解了ARM和Thumb指令間相互轉(zhuǎn)換的方式,在過程中體會(huì)到了兩種指令存取方式的不同點(diǎn)。同時(shí)更有效地理解了ldr和mov的應(yīng)用區(qū)別,在數(shù)據(jù)較大或者為16進(jìn)制時(shí)采用ldr比較合適。八、附件1、.global _start.text_start:.armhea

17、der:adr r0, Tstart + 1bx r0nop.thumbTstart:mov r0, #10mov r1, #3bl doaddstop:b stopdoadd:add r0, r0, r1mov pc, lr.end第 13 頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式2. .global _start.text.equ num, 20 /* Set number of words to be copied */_start:.armmov sp, #0x400adr r0, Tstart + 1bx r0.thumbTstart:ldr r0, =

18、srcldr r1, =dstmov r2, #numblockcopy:lsr r3,r2, #2beq copywordspush r4-r7quadcopy:ldmia r0!, r4-r7stmia r1!, r4-r7sub r3, #1bne quadcopypop r4-r7copywords:mov r3, #3and r2, r3第 14頁 共 17 頁第 2 次實(shí)驗(yàn) Thumb 匯編指令和ARM 工作模式beq stopwordcopy:ldmia r0!, r3stmia r1!, r3sub r2, #1bne wordcopystop:b stop.alignsrc:.long 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dst:.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.end3. .global _sta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論