




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第 2 次實驗 Thumb 匯編指令和ARM 工作模式華東師范大學計算機科學技術系上機實踐報告課程名稱:指導教師:系統實踐年級:08 級姓名:學號:上機實踐成績: 創新實踐成績:上機實踐日期:2011/3/18上機實踐名稱:Thumb匯編指令和ARM工作模式上機實踐編號:No.2組號:1上機實踐時間:2 學時一、實驗目的1.掌握ARM處理器的Thumb指令使用;2.學會使用msr/mrs指令實現ARM處理器工作模式的切換;3.掌握ld中如何使用命令行指定代碼段起始地址;二、實驗1.硬件:Embest EDUKIT-III(實驗平臺) PC機2.:Embest IDE for ARM 集成開發環
2、境 GNU Assembler 匯編語言三、實驗內容使用THUMB 匯編語言,完成基本reg/mem,以及簡單的算術/邏輯運算。1.使用THUMB 匯編語言,完成較為復雜的程序分支,push/pop,領會立即數大小的限制,2.并體會ARM 與THUMB 的區別。3.編寫程序從ARM狀態切換到Thumb,在ARM狀態下把R2賦值為0x12345678,在Thumb狀態下把R2賦值為0x87654321,分別觀察兩個狀態下的CPSR、SPSR的值和各個標志位。4.通過ARM匯編指令,在各種處理器模式下切換并觀察各種模式下寄存器的區別;掌握ARM不同模式的進入與推出。四、實驗原理1. ARM 處理器
3、工作狀態ARM 處理器共有兩種工作狀態:ARM:32 位,這種狀態下執行字對準的ARM 指令;第 1 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式Thumb:16 位,這種狀態下執行半字對準的Thumb 指令在 Thumb 狀態下,程序計數器PC 使用位1 選擇另一個半字。注意: ARM 和Thumb 之間狀態的切換不影響處理器的模式或寄存器的內容。ARM 處理器在兩種工作狀態之間可以切換。1) 進入Thumb 狀態。當操作數寄存器的狀態位0 為1 時,執行BX 指令進入Thumb 狀態。如果處理器在Thumb 狀態進入異常,則當異常處理(IRQ,FIQ,Undef,
4、Abort 和SWI)返回時,自動切換到Thumb 狀態。2) 進入ARM 狀態。當操作數寄存器的狀態位0 為0 時,執行BX 指令進入ARM 狀態。處理器進行異常處理(IRQ,FIQ,Undef,Abort 和SWI)。在此情況下,把PC 放入異常模式鏈接寄存器中。從異常向量地址開始執行也可以進入ARM 狀態。2 Thumb 狀態的寄存器集Thumb 狀態下的寄存器集是ARM 狀態下寄存器集的子集。程序員可以直接8個通用的寄存器(R0R7),PC,SP,LR 和CPSP。每一種模式一組SP,LR 和SPSR。Thumb狀態的R0R7 與ARM 狀態的R0R7 是一致的。Thumb狀態的CPS
5、R和SPSR 與ARM 狀態的CPSR和SPSR是一致的。Thumb狀態的SP到ARM 狀態的R13。Thumb狀態的LR到ARM 狀態的R14。Thumb 狀態的PC到ARM 狀態的PC(R15)。Thumb 寄存器與ARM 寄存器的如圖3-7 所示。第 2 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式圖 3-7 寄存器狀態圖3 本實驗涉及到的as 偽操作.code 16|32code 偽操作用于選擇當前匯編指令的指令集。參數16選擇Thumb 指令集,參數32選擇ARM指令集。語法格式.code 16|32.thumb同 .code 16。.arm同 .code
6、32。.align對齊方式:第 3 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式通過添加填充字節使當前位置滿足一定的對齊方式。語法格式.align alignment , fill , max其中alignment 用于指定對齊方式,可能的取值為2 的次冪,缺省為4。fill 是填充內容,缺省用0 填充。max 是填充字節數最大值,如果填充字節超過max,就不進行對齊。示例.align4. ARM 處理器模式ARM體系結構支持下表3-2所列的7 種處理器模式。表 3-2處理器模式在下可以改變模式,外部中斷或異常處理也可以引起模式發生改變。大多數應用程序在用戶模式下執行
7、。當處理器工作在用戶模式時,正在執行的程序不能某些被保護的系統資源,也不能改變模式,除非異常(exception)發生。這適當編寫操作系統來系統資源的使用。第 4 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式的系統資源和改變模式。其中的5 種除用戶模式外的其他模式稱為模式。它們可以稱為異常模式,即FIQ(Fast Interrupt request);IRQ(Interrupt ReQuest);管理(Supervisor);中止(Abort) ;未定義(Undefined) 。當特定的異常出現時,進入相應的模式。每種模式某些附加的寄存器,以避免異常出現時用戶模式的狀
8、態不可靠。剩下的模式是系統模式。僅ARM 體系結構V4 以及以上的版本有該模式。不能由于任何異常而進入該模式。它與用戶模式有完全相同的寄存器,它是模式,不受用戶模式的限制。它供需要系統資源的操作系統任務使用,但希望避免使用與異常模式有關的附加寄存器。避免使用附加寄存器保證了當任何異常出現時,都使任務的狀態不可靠。5. 程序狀態寄存器提到的程序狀態寄存器CPSR 和SPSR 包含了條件碼標志,中斷位,當前處理器模式。每種異常模式一個程序狀態保存寄存器SPSR。當異常出現時,SPSR以及其他狀態和用于保留CPSR 的狀態。CPSR 和SPSR 的格式如下:1) 條件碼標志:N,Z,C,V 大多數指
9、令可以檢測這些條件碼標志以決定程序指令如何執行2)位:最低 8 位 I,F,T 和M 位用作位。當異常出現時改變位。當處理器在模式下也可以由改變。中斷位:I 置1 則IRQ 中斷;F 置1 則FIQ 中斷。T 位:T=0 指示ARM 執行;T=1 指示Thumb 執行。在這些體系結構的系統中,可的第 5 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式使用能在ARM 和Thumb 狀態之間切換的指令。模式位:M0, M1, M2, M3和M4 (M4:0) 是模式位.這些位決定處理器的工作模式.如表3-3 所示。表 3-3 ARM 工作模式M4:03) 其他位程序狀態寄存
10、器的其他位保留,用作以后的擴展。本實驗涉及到的ld 命令行參數-Ttext org使用org 作為輸出文件的text 段的起始地址。Org 必須是一個十六進制的數。五、實驗步驟1.實驗A1)參考3.1.5 小節實驗實驗A 步驟1 建立一個新的工程,命名為ThumbCode;2)參考3.1.5 小節實驗實驗A 步驟2 和實驗參考程序編輯輸入源代碼,編輯完畢后,保存文件為ThumbCode.s;3) 選擇Project 菜單中Add To Project Files 命令,或單擊工程管理窗口中的相應右鍵菜單命令,彈出文件選擇框,在工程目錄下選擇剛才建立的源文件ThumbCode.s;第 6 頁 共
11、 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式4)參考3.1.5小節實驗A的步驟4進行相應設置;5)參考3.1.5小節實驗A的步驟5生成目標代碼;6)參考3.1.5小節實驗A的步驟6進行相應的設置,需要注意的是:Debug 設置框Symbol file 設置應該修改為和工程名對應的ThumbCode.elf;7) 選擇Debug 菜單Remote Connect 進行連接器,執行Download 命令程序,并打開寄存器窗口;8)代碼執行區中每條指令的地址,注意指令最后尾數的區別;9) 注意觀察寄存器R0 和R1 的值的變化;10) 結合實驗內容和相關資料,觀察程序運行,通過實
12、驗加深理解ARM 指令和Thumb 指令的不同;11) 理解和掌握實驗后,完成實驗練習題。2. 實驗B1) 在工作區窗口工作區右鍵菜單,點擊“Add New Project to Workspace”;參考實驗A的和實驗參考程序,建立工程ThumbCode2;2) 參照實驗A 的步驟完成目標代碼的生成與調試;注意并ARM 指令下和Thumb 指令狀態下stmfd,ldmfd,ldmia 和stmia 指令執行的結果,指令的空間地址數值,數據存儲的空間大小等等3)理解和掌握實驗后,完成實驗練習題。3.實驗3.41)參考3.1.5小節實驗A 的步驟1 建立一個新的工程,命名為ARMMode;2)參
13、考3.1.5小節實驗A 的步驟2 和實驗參考程序編輯輸入源代碼,編輯完畢后,保存文件為ARMMode.s;3) 選擇ProjectAdd To Project tFiles 命令,或單擊工程管理窗口中的相應右鍵菜單命令,彈出文件選擇框,在工程目錄下選擇剛才建立的源文件ARMMode.s;4) 參考3.1.5 小節實驗A 的步驟4 進行相應設置。第 7 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式注意:在鏈接器設置頁面的Link Options 框內,手動加上-Ttext 0x0,即指定代碼段起始地址為0x0,如圖3-8;5) 參考3.1.5 小節實驗A 的步驟5 生成
14、目標代碼;6) 在Download address 框內,輸入地址應該與鏈接器設置中,指定的代碼段起始地址相同,以保證程序能夠正常執行;第 8 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式7) 選擇Debug Remote Connect 連接器,執行Download命令程序,并打開寄存器窗口;8) 單步執行,觀察并寄存器R0 和CPSR 的值的變化和每次變化后執行寄存器賦值后的36 個寄存器的值的變化情況,尤其注意各個模式下R13 和R14 的值;9) 結合實驗內容和相關資料,觀察程序運行,通過實驗加深理解ARM 各種狀態下寄存器的使用;10) 理解和掌握實驗后,完
15、成實驗練習題。六、 調試過程、結果和分析1、3.3.6中的A首先編寫ThumbCode.s并生成目標代碼第 9 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式進行相應設置,觀察R0和R1的變化第 10 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式2、3.3.6中的B編寫 ThumbCode2.s 并生成目標代碼調試并注意指令執行結果第 11 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式本數字總數被 4 整除,一次4 個數3、習題 3.3.7» 注意:考慮用 ldr 偽指令,以防 mov 不夠用如果直接用mov
16、指令會導致數據不能存取,發生溢出錯誤,Thumb指令不能直接0x12345678這樣的大數字,故使用ldr偽指令進行數據的存取。4、3.4.6例程編寫ARMMode第 12 頁 共 17 頁第 2 次實驗 Thumb 匯編指令和ARM 工作模式進行相應設置,觀察并理解 ARM 各種狀態下寄存器的使用七、總結通過本次實驗進一步熟悉了操作步驟,并了解了ARM和Thumb指令間相互轉換的方式,在過程中體會到了兩種指令存取方式的不同點。同時更有效地理解了ldr和mov的應用區別,在數據較大或者為16進制時采用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 次實驗 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 次實驗 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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶通信與無線電技術考核試卷
- 乳品加工廢棄物的資源化利用技術考核試卷
- 原油加工設備的技術規范與操作標準考核試卷
- 股票期權激勵協議與員工培訓體系
- 抖音火花文化遺產網絡直播內容推廣合同
- 注冊會計師崗位全職聘用與審計質量控制合同
- 婚前共同創業項目商業秘密處理與婚后經營協議
- 氫能項目氫燃料電池性能評估測試員合同
- 離異家庭子女撫養權變更及共同監護協議
- 生物醫藥企業股權轉讓限制與專利許可協議
- 西漢馬王堆T型帛畫
- 非遺傳承人申請范本
- 《隋書刑法志》所見隋初修律
- 社會主義建設道路初步探索的意義和經驗教訓
- 【輔助投籃機器人設計7600字(論文)】
- GB/T 6739-2022色漆和清漆鉛筆法測定漆膜硬度
- 綠水青山就是金山銀山PPT
- 2022年同等學力英語真題
- GB/T 12759-1991雙圓弧圓柱齒輪基本齒廓
- 《法拉第電磁感應定律》設計 省賽一等獎
- 監理工程師通知回復單11
評論
0/150
提交評論