![《嵌入式系統(tǒng)》課件_第3章ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce8/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce81.gif)
![《嵌入式系統(tǒng)》課件_第3章ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce8/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce82.gif)
![《嵌入式系統(tǒng)》課件_第3章ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce8/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce83.gif)
![《嵌入式系統(tǒng)》課件_第3章ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce8/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce84.gif)
![《嵌入式系統(tǒng)》課件_第3章ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce8/ead5a8d5-313a-4b6c-90d5-fe7cd0935ce85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Copyright 2012 楊詞慧楊詞慧. All rights reserved.楊詞慧楊詞慧2015.4嵌入式系統(tǒng)嵌入式系統(tǒng)ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)Copyright 2012 楊詞慧楊詞慧. All rights reserved.第第3章章 ARM指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)指令系統(tǒng)及程序設(shè)計(jì)基礎(chǔ)3.1 ARM尋址方式尋址方式3.2 ARM指令集指令集3.3 Thumb指令集指令集3.4 ARM程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)Copyright 2012 楊詞慧楊詞慧. All rights reserved.1)尋址方式尋址方式處理器根據(jù)指令中給出的地址信息尋找物理地址
2、處理器根據(jù)指令中給出的地址信息尋找物理地址的方式。的方式。尋找操作數(shù)或操作數(shù)地址的方式。尋找操作數(shù)或操作數(shù)地址的方式。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.1)尋址方式(續(xù))尋址方式(續(xù))3.1 ARM尋址方式尋址方式ARM尋址方式尋址方式立即尋址立即尋址寄存器尋址寄存器尋址寄存器間接尋址寄存器間接尋址基址變址尋址基址變址尋址多寄存器尋址多寄存器尋址寄存器移位尋址寄存器移位尋址相對(duì)尋址相對(duì)尋址堆棧尋址堆棧尋址Copyright 2012 楊詞慧楊詞慧. All rights reserved.立即尋址立即尋址也叫立即
3、數(shù)尋址,操作數(shù)本身在指令中給也叫立即數(shù)尋址,操作數(shù)本身在指令中給出,該操作數(shù)被稱為立即數(shù)。出,該操作數(shù)被稱為立即數(shù)。例如:例如:ADDR0, R0, #1; R0 R0+1立即數(shù)須以立即數(shù)須以“#”為前綴,對(duì)于十六進(jìn)制表為前綴,對(duì)于十六進(jìn)制表示的立即數(shù),還需在示的立即數(shù),還需在“#”后加上后加上“0 x”或或“&”。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器尋址寄存器尋址指令地址碼中給出寄存器的編號(hào),操作數(shù)指令地址碼中給出寄存器的編號(hào),操作數(shù)存在寄存器中。例如:存在寄存器中。例如:ADDR0, R1, R2
4、; R0 R1+R2寄存器間接尋址寄存器間接尋址以寄存器的值作為操作數(shù)地址。以寄存器的值作為操作數(shù)地址。例如:例如:ADDR0, R1, R2; R0 R1+R23.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.基址變址尋址基址變址尋址將將寄存器的內(nèi)容與指令中給出的地址偏移量相加,寄存器的內(nèi)容與指令中給出的地址偏移量相加,得到操作數(shù)的地址。得到操作數(shù)的地址。包括包括w基址加偏移量尋址方式基址加偏移量尋址方式w基址加索引尋址方式基址加索引尋址方式3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All r
5、ights reserved.基址變址尋址基址變址尋址(續(xù))續(xù))基址加偏移基址加偏移量量尋址方式尋址方式w將寄存器內(nèi)容與指令中給出的地址偏移量相加,得到操將寄存器內(nèi)容與指令中給出的地址偏移量相加,得到操作數(shù)的有效地址作數(shù)的有效地址。如:如:LDRR0, R1, #4; R0 R1+4w前變址前變址:基址加變址作為操作數(shù)地址。:基址加變址作為操作數(shù)地址。后變址后變址:基址作為操作數(shù)的地址,傳送后自動(dòng)更新基址:基址作為操作數(shù)的地址,傳送后自動(dòng)更新基址寄存器的值。寄存器的值。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.基址變址尋
6、址基址變址尋址(續(xù))續(xù))3.1 ARM尋址方式尋址方式STR R0,R1, #12 ; R1+12R0前變址前變址Copyright 2012 楊詞慧楊詞慧. All rights reserved.基址變址尋址基址變址尋址(續(xù))續(xù))3.1 ARM尋址方式尋址方式STR R0,R1, #12; R1R0, R1R1+12后變址后變址Copyright 2012 楊詞慧楊詞慧. All rights reserved.基址變址尋址基址變址尋址(續(xù))續(xù))基址加基址加索引索引尋址方式尋址方式w將將基址寄存器的值與索引寄存器的值相加基址寄存器的值與索引寄存器的值相加,形成形成操作數(shù)操作數(shù)的有效地址。例
7、如:的有效地址。例如: LDRR0, R1, R2 ; R0 R1+R23.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.多寄存器尋址多寄存器尋址一次完成多個(gè)(最多一次完成多個(gè)(最多16)寄存器值的傳送)寄存器值的傳送例如:例如:LDMIA R0, R1, R2, R4; R1 R0; R2 R0+4; R4 R0+83.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.多寄存器尋址(續(xù))多寄存器尋址(續(xù))3.1 ARM尋址方式尋址方式IAr1地址地址增加增加r4r0
8、r1r4r0r1r4r0r1r4r0r10IBDADBSTMxx r10, r0,r1,r4基址寄存器基址寄存器 (Rn)地址遞減,指針地址遞減,指針最后位置最后位置地址遞增,指地址遞增,指針最后位置針最后位置Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器移位尋址寄存器移位尋址操作數(shù)為寄存器中數(shù)做相應(yīng)的移位而得到操作數(shù)為寄存器中數(shù)做相應(yīng)的移位而得到例如:例如:ADD R0, R1, R2, LSL #3; R0 R1+8R23.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器移位
9、尋址(續(xù))寄存器移位尋址(續(xù))ARM中的移位或循環(huán)移位操作中的移位或循環(huán)移位操作wLSL:邏輯左移(:邏輯左移(Logical Shift Left)wLSR:邏輯右移(:邏輯右移(Logical Shift Right)3.1 ARM尋址方式尋址方式00Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器移位尋址(續(xù))寄存器移位尋址(續(xù))wASR:算術(shù)右移(:算術(shù)右移(Arithmetic Shift Right)。)。移位移位過(guò)程過(guò)程中保持符號(hào)位不變,若源操作數(shù)為正數(shù)中保持符號(hào)位不變,若源操作數(shù)為正數(shù),則字的高端空,則字的高端空出的位補(bǔ)出的位補(bǔ)0。若
10、源操作數(shù)為負(fù)數(shù),則字的高端空出的位。若源操作數(shù)為負(fù)數(shù),則字的高端空出的位補(bǔ)補(bǔ)1。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器移位尋址(續(xù))寄存器移位尋址(續(xù))wROR:循環(huán)右移(:循環(huán)右移(Rotate Right)。)。從字的最低端移出從字的最低端移出的位的位依次填入字的高端空出的位依次填入字的高端空出的位。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.寄存器移位尋址(續(xù))寄存器移位尋址(續(xù))wRRX:擴(kuò)展的循環(huán)右移(:擴(kuò)展的循環(huán)右移(Rotat
11、e Right Extended )。)。操作操作數(shù)向右移數(shù)向右移一位,左側(cè)空位由狀態(tài)寄存器一位,左側(cè)空位由狀態(tài)寄存器C位填充。位填充。w當(dāng)移位的類型為當(dāng)移位的類型為RRX時(shí),無(wú)需指定移位的位數(shù),其它時(shí),無(wú)需指定移位的位數(shù),其它的則須指定移位的位數(shù)。的則須指定移位的位數(shù)。3.1 ARM尋址方式尋址方式CCopyright 2012 楊詞慧楊詞慧. All rights reserved.相對(duì)尋址相對(duì)尋址以以PC當(dāng)前值作為基地址,指令中的地址當(dāng)前值作為基地址,指令中的地址標(biāo)號(hào)作為位移量,兩者相加后得到操作數(shù)標(biāo)號(hào)作為位移量,兩者相加后得到操作數(shù)的有效地址。例如:的有效地址。例如:BLNEXT ;
12、跳轉(zhuǎn)至子程序跳轉(zhuǎn)至子程序 NEXTNEXTMOVPC, LR ; 從子程序返回從子程序返回3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址堆棧尋址堆棧:按先進(jìn)后出堆棧:按先進(jìn)后出(FILO)的方式工作,使用堆棧的方式工作,使用堆棧指針指針(Stack Pointer, SP) 指示當(dāng)前操作位置。指示當(dāng)前操作位置。根據(jù)棧指針的指向位置可將堆棧分為根據(jù)棧指針的指向位置可將堆棧分為w滿堆棧:滿堆棧:SP指向最后壓入堆棧的數(shù)據(jù)。指向最后壓入堆棧的數(shù)據(jù)。w空堆棧:空堆棧:SP指向下個(gè)將放入數(shù)據(jù)空位置指向下個(gè)將放入數(shù)據(jù)空位置3.1
13、 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址堆棧尋址3.1 ARM尋址方式尋址方式12SP滿滿12SP空空來(lái)源:王亮的來(lái)源:王亮的PPTCopyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址(續(xù))堆棧尋址(續(xù))根據(jù)堆棧的生成方式可將堆棧分為根據(jù)堆棧的生成方式可將堆棧分為w遞增堆棧遞增堆棧(Ascending Stack):堆棧由低地址向高地址生:堆棧由低地址向高地址生成。成。w遞減堆棧遞減堆棧(Descending Stack) :由高地址向低地址生成。:由高地址向低地址生成。3.
14、1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址(續(xù))堆棧尋址(續(xù))3.1 ARM尋址方式尋址方式12SPBase,LowHigh遞增堆棧遞增堆棧SP12Base, HighLow遞減堆棧遞減堆棧來(lái)源:王亮的來(lái)源:王亮的PPTCopyright 2012 楊詞慧楊詞慧. All rights reserved.3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址(續(xù))堆棧尋址(續(xù))ARM支持四種類型堆棧工作方式支持四種類型堆棧工作方式w滿遞增堆棧:滿遞
15、增堆棧:SP指向最后壓入的數(shù)據(jù),且由低地址向高指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。地址生成。w滿遞減堆棧:滿遞減堆棧:SP指向最后壓入的數(shù)據(jù),且由高地址向低指向最后壓入的數(shù)據(jù),且由高地址向低地址生產(chǎn)。地址生產(chǎn)。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址(續(xù))堆棧尋址(續(xù))3.1 ARM尋址方式尋址方式12SPBase,LowHigh滿遞增堆棧滿遞增堆棧SP12Base, HighLow滿遞減堆棧滿遞減堆棧來(lái)源:王亮的來(lái)源:王亮的PPTCopyright 2012 楊詞慧楊詞慧. All rights re
16、served.堆棧尋址(續(xù))堆棧尋址(續(xù))堆棧工作方式堆棧工作方式w空遞增堆棧:空遞增堆棧:SP指向下個(gè)將放入數(shù)據(jù)的空位置,且由低指向下個(gè)將放入數(shù)據(jù)的空位置,且由低地址向高地址生成。地址向高地址生成。w空遞減堆棧:空遞減堆棧:SP指向下個(gè)將要放入數(shù)據(jù)的空位置,且由指向下個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。高地址向低地址生成。3.1 ARM尋址方式尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.堆棧尋址(續(xù))堆棧尋址(續(xù))3.1 ARM尋址方式尋址方式來(lái)源:王亮的來(lái)源:王亮的PPT12SPBase,LowHigh空遞增堆??者f增堆棧12S
17、PBase, HighLow空遞減堆??者f減堆棧Copyright 2012 楊詞慧楊詞慧. All rights reserved.1)ARM指令集分類指令集分類加載加載/存儲(chǔ)指令存儲(chǔ)指令數(shù)據(jù)處理指令數(shù)據(jù)處理指令分支指令分支指令狀態(tài)寄存器訪問(wèn)指令狀態(tài)寄存器訪問(wèn)指令異常異常/中斷指令中斷指令協(xié)處理器指令協(xié)處理器指令3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.ARM指令的特點(diǎn)指令的特點(diǎn)所有指令都是所有指令都是32bit;大多數(shù)指令都在大多數(shù)指令都在單周期內(nèi)完成單周期內(nèi)完成;所有指令所有指令都可以條件執(zhí)行都可以條件執(zhí)行;load/
18、store體系結(jié)構(gòu)體系結(jié)構(gòu);指令集指令集可以通過(guò)協(xié)處理器擴(kuò)展可以通過(guò)協(xié)處理器擴(kuò)展。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.ARM指令的格式指令的格式3.2 ARM指令集指令集s , , Cond xxx Opcode SRnRdOperand2011121516192021242527283178條件碼條件碼指令操指令操作碼作碼操作是否影操作是否影響響CPSR第第1操作數(shù)操作數(shù)目標(biāo)寄存器目標(biāo)寄存器第第2操作數(shù)操作數(shù)Copyright 2012 楊詞慧楊詞慧. All rights reserved.3.2 ARM指令集指令
19、集ARM指令指令集集1 Datasheet P39Copyright 2012 楊詞慧楊詞慧. All rights reserved.3.2 ARM指令集指令集ARM指令指令集集2Copyright 2012 楊詞慧楊詞慧. All rights reserved.ARM指令的條件執(zhí)行指令的條件執(zhí)行所有所有ARM指令都可包含一個(gè)可選的條件碼,指令都可包含一個(gè)可選的條件碼,只有當(dāng)只有當(dāng)CPSR中條件標(biāo)志位滿足指定條件時(shí),中條件標(biāo)志位滿足指定條件時(shí),指令才會(huì)被執(zhí)行。否則以指令才會(huì)被執(zhí)行。否則以NOP指令通過(guò)流指令通過(guò)流水線。水線。3.2 ARM指令集指令集;R0, R1, R2, R3, R4
20、: a, b, c, d, eCMPR0, R1CMPEQR2, R3ADDEQR4, R4, #1if (a = b) & (c = d) e+;Copyright 2012 楊詞慧楊詞慧. All rights reserved.3.2 ARM指令集指令集條件碼條件碼助詞符 條件標(biāo)志位值含義0000EQZ置位相等/等于00001NEZ清0不等0010CS/HSC置位進(jìn)位/無(wú)符號(hào)高于或等于0011CC/LOC清0無(wú)進(jìn)位/無(wú)符號(hào)低于0100MIN置位負(fù)數(shù)0101PLN清0非負(fù)數(shù)0110VSV置位溢出0111VCV清0無(wú)溢出Copyright 2012 楊詞慧楊詞慧. All right
21、s reserved.3.2 ARM指令集指令集條件碼條件碼助詞符條件標(biāo)志位值含義1000HIC置位且Z清0無(wú)符號(hào)高于1001LSC清0或Z置位無(wú)符號(hào)低于或等于1010GEN等于V有符號(hào)大于或等于1011LTN不等于V有符號(hào)小于1100GTZ清0且N等于V有符號(hào)大于1101LEZ置位或N不等于V有符號(hào)小于或等于1110AL任何狀態(tài)總是(always)1111NV無(wú)從不(never)Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令存儲(chǔ)指令Load:將內(nèi)存中數(shù)據(jù)裝載到寄存器:將內(nèi)存中數(shù)據(jù)裝載到寄存器Store:將寄存器中的數(shù)據(jù)存入內(nèi)存:將寄存
22、器中的數(shù)據(jù)存入內(nèi)存3.2 ARM指令集指令集內(nèi)存內(nèi)存寄存器寄存器LoadStoreCopyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器傳輸指令單寄存器傳輸指令w B Rd, addressing1w SB | H | SHRd, addressing2w B Rd, LABEL 3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器傳輸指令(續(xù))單寄存器傳輸指令(續(xù))3.2 ARM指令集指令集Rn, # +/-
23、offset_8Rn, +/- Rmaddressing2Rn, # +/- offset_12Rn, +/- RmRn, +/- Rm, #shift_immaddressing1Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器傳輸指令單寄存器傳輸指令wLDR B|SB|H|SH 目的寄存器目的寄存器, wSTR B|SB|H|SH 源寄存器源寄存器, 3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器
24、傳輸指令(續(xù))單寄存器傳輸指令(續(xù))wLDR/STR:讀:讀/寫一個(gè)寫一個(gè)32bit字到字到/從一個(gè)從一個(gè)32位寄存器,要位寄存器,要求讀求讀/寫地址字對(duì)齊。寫地址字對(duì)齊。wLDRB:內(nèi)存:內(nèi)存8bit字節(jié)字節(jié)32bit寄存器;不要求地址對(duì)齊,寄存器;不要求地址對(duì)齊,寄存器高寄存器高24位清零。位清零。wSTRB:寄存器低:寄存器低8位位內(nèi)存的某個(gè)地址;不要求地址內(nèi)存的某個(gè)地址;不要求地址對(duì)齊。對(duì)齊。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器傳輸指令單寄存器傳輸指令wLDRH:1
25、6bit半字半字 32bit寄存器;要求地址半字對(duì)齊,寄存器;要求地址半字對(duì)齊,寄存器的高寄存器的高16bit清零。清零。wSTRH:寄存器低:寄存器低16bit內(nèi)存;要求地址半字對(duì)齊。內(nèi)存;要求地址半字對(duì)齊。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))單寄存器傳輸指令單寄存器傳輸指令wLDRSH:有符號(hào):有符號(hào)16bit半字半字32bit寄存器中;要求地址寄存器中;要求地址半字對(duì)齊,寄存器高半字對(duì)齊,寄存器高16bit根據(jù)符號(hào)位擴(kuò)展。根據(jù)符號(hào)位擴(kuò)展。wLDRSB:有符號(hào):有符號(hào)8bit字
26、節(jié)字節(jié)32bit寄存器中;不要求地寄存器中;不要求地址對(duì)齊,寄存器高址對(duì)齊,寄存器高24bit根據(jù)符號(hào)位擴(kuò)展。根據(jù)符號(hào)位擴(kuò)展。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))3.2 ARM指令集指令集助詞符意義助詞符意義LDR載入字STR存儲(chǔ)字LDRH載入半字STRH存儲(chǔ)半字LDRSH 載入有符號(hào)半字STRSH 存儲(chǔ)有符號(hào)半字LDRB載入字節(jié)STRB存儲(chǔ)字節(jié)單寄存器傳輸指令助詞符單寄存器傳輸指令助詞符Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載
27、/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))3.2 ARM指令集指令集變址模式數(shù)據(jù)基址寄存器指令舉例回寫前變址membase+offset基址寄存器加偏移量LDR R0, R1, #4!前變址membase+offset不變LDR R0, R1, #4后變址membase基址寄存器加偏移量LDR R0, R1, #4LDR/STR指令的變址模式指令的變址模式Copyright 2012 楊詞慧楊詞慧. All rights reserved.3.2 ARM指令集指令集Rn, # +-0 0 0 0 0 0 0 0 0 0Rm03411方式方式2:Rm例子:例子:LDR R0, R1, R2011#immed
28、_12方式方式1:#immed_12(取值范圍(取值范圍0 0 xfff)例子:例子:LDR R0, R1, #+0 xfffshiftRm03411#immed_567方式方式3:Rm LSL #immed_5(取值范圍(取值范圍0-31)例子:例子:LDR R0, R1, R2 LSL #41050/1 : STR/LDR0/1 : 無(wú)無(wú)/有有(!)0/1 : 后變址后變址/前變址前變址0/1 : 字字/無(wú)符號(hào)字節(jié)無(wú)符號(hào)字節(jié)condRnRd第第 2 操作數(shù)操作數(shù)07811121516192022012728312324U B W L2126PI250/1 : 減減/加加(第第2操作數(shù)操作數(shù)
29、)0/1 : 立即數(shù)立即數(shù)(方式方式1)/寄存器寄存器(方式方式2,3) Datasheet P193Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))多寄存器傳輸指令多寄存器傳輸指令w Rn!, wLDM / STM:從由基址寄存器指示的一片連續(xù)存儲(chǔ)器從由基址寄存器指示的一片連續(xù)存儲(chǔ)器到寄存器列表所指示的多個(gè)寄存器之間傳送數(shù)據(jù)到寄存器列表所指示的多個(gè)寄存器之間傳送數(shù)據(jù)。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.w對(duì)于對(duì)于LDM操作,如恢復(fù)的寄存器中含
30、有操作,如恢復(fù)的寄存器中含有PC(R15)寄存器,寄存器,則指令執(zhí)行的同時(shí)則指令執(zhí)行的同時(shí)CPU自動(dòng)將自動(dòng)將SPSR拷貝到拷貝到CPSR中,例:中,例:LDMFD R0-R12, LR, PCw數(shù)據(jù)的傳送發(fā)生在數(shù)據(jù)的傳送發(fā)生在User用戶模式下的寄存器,而非當(dāng)前用戶模式下的寄存器,而非當(dāng)前模式寄存器,例如:模式寄存器,例如:LDMDB SP, R0 - LR3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))多寄存器傳輸指令多寄存器傳輸指令w例如:例如:STMIA R0!, R1-R5;以以R0為
31、地址指針,將為地址指針,將R1-R5保存到內(nèi)存,指針向上移保存到內(nèi)存,指針向上移動(dòng)動(dòng)3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))3.2 ARM指令集指令集IA 每次傳送后地址加每次傳送后地址加1IB 每次傳送前地址加每次傳送前地址加1DA 每次傳送后地址減每次傳送后地址減1DB 每次傳送前地址減每次傳送前地址減1FA 滿遞增堆棧滿遞增堆棧FD 滿遞減堆棧滿遞減堆棧EA 空遞增堆??者f增堆棧ED 空遞減堆??者f減堆棧尋址模式尋址模式Copyright 2012 楊詞慧楊詞慧. All rig
32、hts reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))3.2 ARM指令集指令集尋址模式變址描述起始地址結(jié)束地址選擇!時(shí)Rn值改變方式IA執(zhí)行后增加RnRn+4*N-4Rn+4*NIB執(zhí)行前增加Rn+4Rn+4*NRn+4*NDA執(zhí)行后減少Rn-4*N+4 RnRn-4*NDB執(zhí)行前減少Rn-4*NRn-4Rn-4*N多寄存器傳輸指令多寄存器傳輸指令的尋址模式的尋址模式Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))3.2 ARM指令集指令集棧類型內(nèi)存數(shù)據(jù)傳至寄存器 寄存器數(shù)據(jù)傳至內(nèi)存尋址模式說(shuō)明棧操作彈出塊
33、操作加載棧操作壓入塊操作保存FA滿遞增LDMFALDMDASTMFASTMDAFB滿遞減LDMFDLDMIASTMFDSTMIA棧操作尋址方式棧操作尋址方式Copyright 2012 楊詞慧楊詞慧. All rights reserved.加載加載/存儲(chǔ)指令(續(xù))存儲(chǔ)指令(續(xù))交換指令交換指令wSWP B Rd, Rm, RnwSWP:字交換;:字交換;SWPB:字節(jié)交換:字節(jié)交換wTemp Rn, Rn Rm, Rd Temp, w例如:例如:SWP R1, R2, R3; R1R3,R3 R2SWP R1, R1, R2; R1與與R2內(nèi)容互換內(nèi)容互換3.2 ARM指令集指令集Copyr
34、ight 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令數(shù)據(jù)處理指令3.2 ARM指令集指令集助詞符意義助詞符意義MOV數(shù)據(jù)傳送指令MVN數(shù)據(jù)取反傳送指令CMP比較指令CMN反值比較指令TST位測(cè)試指令TEQ相等測(cè)試指令A(yù)DD加法指令A(yù)DC帶進(jìn)位加法指令SUB減法指令SBC帶借位減法指令RSB逆向減法指令RSC帶借位的逆向減法指令A(yù)ND邏輯與指令ORR邏輯或指令EOR邏輯異或指令BIC位清除指令MUL乘法指令MLA帶累加的乘法UMULL64位無(wú)符號(hào)乘法UMLAL64位無(wú)符號(hào)乘加法SMULL64位有符號(hào)乘法SMLAL64位有符號(hào)乘加指令Copyright 2012
35、 楊詞慧楊詞慧. All rights reserved.3.2 ARM指令集指令集ADD R0, R1, #0 xffADD R0, R1, R2, LSL R3condSRnRdOperand2078111215161920opcode212400X25272831#immed_8#rot078110 0 0 0 0 0 0 0Rm03411方式方式1:#immed方式方式2:Rm0 0 0 0 Rm03411Rs78方式方式3:Rm LSL RsshiftRm03411#immed_567方式方式4:Rm LSL #immed_5(#immed_5取值范圍取值范圍0-31)ADD R0,
36、 R1, R1, LSL #41ADD R0, R1, R2 Datasheet P156Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令w數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令MOV cond SRd, Operand例如:例如:MOVR1, R0MOVEQ PC, R14 ; 將將R14值傳到值傳到PC3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)傳送指令(續(xù))數(shù)據(jù)傳送指令(續(xù))w數(shù)據(jù)取反傳送指令數(shù)據(jù)取
37、反傳送指令MVN cond SRd, Operand例如:例如:MVN R1, #2; 將立即數(shù)將立即數(shù)2取反送至取反送至R1為什么有為什么有MVN?3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令wADD、ADCADD|ADC cond S Rd, Oper1, Oper23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))w例如:例如:ADDSR0, R4, R8; 加低端
38、的字加低端的字ADCSR1, R5, R9; 帶進(jìn)位加第二字帶進(jìn)位加第二字ADCSR2, R6, R10; 帶進(jìn)位加第三字帶進(jìn)位加第三字ADCR3, R7, R11; 帶進(jìn)位加第四字帶進(jìn)位加第四字3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))算術(shù)運(yùn)算指令(續(xù))算術(shù)運(yùn)算指令(續(xù))wSUB:減法指令:減法指令SUB cond SRd, Oper1, Oper2wSBC:帶借位減法指令:帶借位減法指令SBC cond SRd, Oper1, Oper2例:例:SBCS R0, R1, R2 ; R0
39、=R1R2C3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))算術(shù)運(yùn)算指令(續(xù))算術(shù)運(yùn)算指令(續(xù))wRSB:反向減法指令:反向減法指令RSB cond SRd, Oper1, Oper2操作數(shù)操作數(shù)2減去操作數(shù)減去操作數(shù)1,例如:,例如:RSBR0, R1, R2; R0 = R2 R1wRSC:帶借位的逆向減法指令:帶借位的逆向減法指令RSC cond SRd, Oper1, Oper23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved
40、.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))邏輯運(yùn)算指令邏輯運(yùn)算指令wAND:與:與AND cond SRd, Oper1, Oper2wORR:或:或ORR cond SRd, Oper1, Oper2wEOR:異或:異或EOR cond SRd, Oper1, Oper23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))比較指令比較指令wCMPCMP condOperand1, Operand23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserv
41、ed.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))比較指令(續(xù))比較指令(續(xù))wCMN:反值比較:反值比較CMN condOperand1, Operand2將第一個(gè)數(shù)與第二個(gè)數(shù)的反值進(jìn)行比較,相當(dāng)于完成兩將第一個(gè)數(shù)與第二個(gè)數(shù)的反值進(jìn)行比較,相當(dāng)于完成兩個(gè)數(shù)相加。例如:個(gè)數(shù)相加。例如:CMNR1, R0 ; R1+R0,并設(shè)置,并設(shè)置CPSR3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))測(cè)試指令測(cè)試指令wTSTTST condOperand1, Operand2 把兩個(gè)操作數(shù)按位進(jìn)行與運(yùn)算,根據(jù)結(jié)果更
42、新把兩個(gè)操作數(shù)按位進(jìn)行與運(yùn)算,根據(jù)結(jié)果更新CPSR。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))測(cè)試指令(續(xù))測(cè)試指令(續(xù))wTEQTEQ condOperand1, Operand2把兩個(gè)操作數(shù)按位進(jìn)行異或運(yùn)算,根據(jù)結(jié)果更新把兩個(gè)操作數(shù)按位進(jìn)行異或運(yùn)算,根據(jù)結(jié)果更新CPSR3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令乘法指令wMULMUL cond SRd, Oper1, Ope
43、r2RdOperand1Operand2。例如:。例如:MUL R0, R1, R2 ; R0 =R1R2 3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))wMLAMLA cond S Rd,Oper1,Oper2,Oper3 RdOperand1Operand2+Operand3例如:例如:MLA R0, R1, R2, R3; R0 = R1R2+R3 3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.
44、數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))wUMULL:64位無(wú)符號(hào)數(shù)乘法指令位無(wú)符號(hào)數(shù)乘法指令UMULL cond S Rd_L, Rd_H, Operand1, Operand2Rd_H:Rd_L Operand1Operand23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))w例如:例如:UMULLR0, R1, R2, R3; R0 = (R2R3) 的低的低32位位; R1 = (R2R3) 的高的高32位位3.2 ARM指令集指令集C
45、opyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))wUMLAL: 64位無(wú)符號(hào)數(shù)乘加指令位無(wú)符號(hào)數(shù)乘加指令UMLAL cond S Rd_L, Rd_H, Operand1, Operand2Rd_H:Rd_L+= Operand1Operand23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))w例如:例如:UMLAL R0, R1, R2, R3; R0 = (R2R3
46、)的低的低32位位+R0; R1 = (R2R3)的高的高32位位+R13.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù))乘法指令(續(xù))wSMULL:64位有符號(hào)數(shù)乘法指令位有符號(hào)數(shù)乘法指令SMULL cond S Rn_L, Rn_H, Operand1, Operand2Rd_H:Rd_L Operand1Operand23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.數(shù)據(jù)處理指令(續(xù))數(shù)據(jù)處理指令(續(xù))乘法指令(續(xù)
47、)乘法指令(續(xù))wSMLAL: 64位有符號(hào)數(shù)乘加指令位有符號(hào)數(shù)乘加指令SMLAL cond S Rn_L, Rn_H, Operand1, Operand2Rd_H:Rd_L+= Operand1Operand23.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.分支指令分支指令B (分支指令分支指令)和和 BL (帶鏈接分支指令帶鏈接分支指令)wB cond LABELwBL cond LABELw允許向前或向后跳轉(zhuǎn)最高允許向前或向后跳轉(zhuǎn)最高32MB。wBL:帶返回的分支指令,用于調(diào)用一個(gè)將其返回地址存:帶返回的分支指令,用于調(diào)用
48、一個(gè)將其返回地址存入鏈接寄存器的函數(shù)入鏈接寄存器的函數(shù)。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.分支指令分支指令3.2 ARM指令集指令集cond101 LSigned_immed_240232425272831B 和和 BL的指令編碼的指令編碼Copyright 2012 楊詞慧楊詞慧. All rights reserved.分支指令分支指令(續(xù))(續(xù))B 和和 BL (續(xù))(續(xù))3.2 ARM指令集指令集例如:例如:BLSUBPRGSUBPRG; MOVPC, LR; 返回返回Copyright 2012 楊詞慧楊詞
49、慧. All rights reserved.分支指令分支指令(續(xù))(續(xù))BX (分支并可選地交換指令集分支并可選地交換指令集)BLX(帶鏈接分支并可選地交換指令集帶鏈接分支并可選地交換指令集)wBX cond RmwBLX cond LABEL | RmwRm:轉(zhuǎn)移地址,:轉(zhuǎn)移地址,bit0為為0時(shí),目標(biāo)地址處為時(shí),目標(biāo)地址處為ARM指令,指令,否則為否則為Thumb指令。指令。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.分支指令分支指令(續(xù))(續(xù))wBX 和和 BLX指令執(zhí)行與指令執(zhí)行與B和和BL指令相同的分支操作,并指令
50、相同的分支操作,并可從可從ARM指令集切換到指令集切換到THUMB指令集。指令集。3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.分支指令分支指令(續(xù))(續(xù))長(zhǎng)跳轉(zhuǎn)長(zhǎng)跳轉(zhuǎn)w通過(guò)向通過(guò)向PC寄存器中寫目標(biāo)地址值,可實(shí)現(xiàn)在寄存器中寫目標(biāo)地址值,可實(shí)現(xiàn)在4GB地址空地址空間中進(jìn)行任意跳轉(zhuǎn)。間中進(jìn)行任意跳轉(zhuǎn)。w例如:例如:MOVLR, PC; 保存返回地址保存返回地址MOVR15, #0 x00110000 ; 無(wú)條件轉(zhuǎn)向無(wú)條件轉(zhuǎn)向0 x1100003.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All right
51、s reserved.狀態(tài)寄存器訪問(wèn)指令狀態(tài)寄存器訪問(wèn)指令MRSwMRS Rd, w將狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。例如:將狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。例如:MRSR3, CPSR; CPSRR33.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.狀態(tài)寄存器訪問(wèn)指令狀態(tài)寄存器訪問(wèn)指令(續(xù)續(xù))MSRwMSR _, RmwMSR _,#3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.狀態(tài)寄存器訪問(wèn)指令狀態(tài)寄存器訪問(wèn)指令(續(xù)續(xù))w表示下列情況之一:表示下列情況之一
52、:c:控制域,即:控制域,即PSR7:0 x:擴(kuò)展域,即:擴(kuò)展域,即PSR15:8 s:狀態(tài)域,即狀態(tài)域,即PSR23:16 f:標(biāo)志域,即:標(biāo)志域,即PSR32:24wCPSR|SPSR 通用寄存器。例如:通用寄存器。例如:MSR CPSR_F, #&F00000000;設(shè)置所有標(biāo)志位設(shè)置所有標(biāo)志位3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.異常異常/中斷指令中斷指令(續(xù))(續(xù))SWIwSWI w產(chǎn)生產(chǎn)生SWI異常中斷,以實(shí)現(xiàn)在用戶模式下調(diào)用操作系統(tǒng)異常中斷,以實(shí)現(xiàn)在用戶模式下調(diào)用操作系統(tǒng)的監(jiān)控功能程序的監(jiān)控功能程序
53、 。它將處理器置于管理。它將處理器置于管理 (SVC) 模式。模式。例如:例如:SWI 0 x01 ;調(diào)用編號(hào)為調(diào)用編號(hào)為01的系統(tǒng)例程的系統(tǒng)例程3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.異常異常/中斷指令中斷指令(續(xù))(續(xù))BKPTwBKPT w產(chǎn)生軟件斷點(diǎn)中斷,可用于程序調(diào)試。產(chǎn)生軟件斷點(diǎn)中斷,可用于程序調(diào)試。w例如例如BKPT0 xF0103.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令CDPwCDP , , CRd, CRn, C
54、Rm ,w編號(hào)為編號(hào)為CP#的協(xié)處理器接受指令并執(zhí)行。具體操作由的協(xié)處理器接受指令并執(zhí)行。具體操作由Cop1和和Cop2定義,定義,CRn和和CRm為源操作數(shù),結(jié)果為源操作數(shù),結(jié)果CRd3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))CDP (續(xù))(續(xù))w例如:例如:CDP P6, 2, C5, C10, C3, 16; 激活協(xié)處理器激活協(xié)處理器P6的操作,操作碼的操作,操作碼1和操作碼和操作碼2值分別為值分別為2和和16,目標(biāo)寄存器為,目標(biāo)寄存器為C5,源操作數(shù)寄存器為,源操作數(shù)寄存器為C10
55、和和C33.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))MRC和和MCRwMRC | MCR , , CRd, CRn, CRm ,w在在ARM與協(xié)處理器寄存器間傳數(shù)據(jù)。與協(xié)處理器寄存器間傳數(shù)據(jù)。wMRC:ARM寄存器寄存器協(xié)處理器寄存器協(xié)處理器寄存器MCR:協(xié)處理器寄存器:協(xié)處理器寄存器ARM寄存器寄存器3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))MRC和和MCRw例如:例如:MCRP3,
56、3, R0, C4, C5, 6; ARM處理器處理器R0協(xié)處理器協(xié)處理器P3的寄存器的寄存器C4和和C53.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))LDC和和STCw在協(xié)處理器寄存器與存儲(chǔ)器間傳送數(shù)據(jù)在協(xié)處理器寄存器與存儲(chǔ)器間傳送數(shù)據(jù)wLDC:協(xié)處理器寄存器:協(xié)處理器寄存器存儲(chǔ)器存儲(chǔ)器 STC:存儲(chǔ)器存儲(chǔ)器協(xié)處理器寄存器協(xié)處理器寄存器3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))LDC和和
57、STCw前變址格式前變址格式LDC | STC L , CRd, Rn, !w后變址格式后變址格式LDC | STC L , CRd, Rn, 3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.協(xié)處理器指令協(xié)處理器指令(續(xù))(續(xù))LDC和和STCwLDCP3, C4, R0;將將ARM處理器的寄存器處理器的寄存器R0所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器P3的寄的寄存器存器C4中中wSTC P3, C4, R0 ;將將P3的的C4 中的字?jǐn)?shù)據(jù)傳至中的字?jǐn)?shù)據(jù)傳至ARM的的R0所指向的存儲(chǔ)器所指向的
58、存儲(chǔ)器3.2 ARM指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.1)Thumb指令集的特點(diǎn)指令集的特點(diǎn)是是ARM指令集壓縮形式的子集,所有指令集壓縮形式的子集,所有Thumb指令均有對(duì)應(yīng)的指令均有對(duì)應(yīng)的ARM指令。指令。采用采用16位二進(jìn)制編碼,代碼密度小。位二進(jìn)制編碼,代碼密度小。執(zhí)行執(zhí)行Thumb指令時(shí),指令時(shí),先動(dòng)態(tài)解壓縮,然后先動(dòng)態(tài)解壓縮,然后作為標(biāo)準(zhǔn)的作為標(biāo)準(zhǔn)的ARM指令執(zhí)行。指令執(zhí)行。如何區(qū)分指令流取決于如何區(qū)分指令流取決于CPSR的位的位T。3.3 Thumb指令集指令集Copyright 2012 楊詞慧楊詞慧. All r
59、ights reserved.1)Thumb指令集的特點(diǎn)(續(xù))指令集的特點(diǎn)(續(xù))大多大多Thumb數(shù)據(jù)處理指令采用數(shù)據(jù)處理指令采用2地址格式。地址格式。移位操作變成單獨(dú)指令。移位操作變成單獨(dú)指令。沒(méi)有協(xié)處理器指令、單寄存器交換指令、沒(méi)有協(xié)處理器指令、單寄存器交換指令、乘加指令、乘加指令、64位乘法指令及程序寄存器處位乘法指令及程序寄存器處理指令。理指令。僅分支指令僅分支指令B有條件執(zhí)行功能有條件執(zhí)行功能。3.3 Thumb指令集指令集Copyright 2012 楊詞慧楊詞慧. All rights reserved.1)Thumb指令集的特點(diǎn)(續(xù))指令集的特點(diǎn)(續(xù))3.3 Thumb指令集指
60、令集015310ADDS r2,r2,#1ADD r2,#132-bit ARM 指令指令16-bit Thumb 指令指令Copyright 2012 楊詞慧楊詞慧. All rights reserved.Thumb狀態(tài)切換狀態(tài)切換ARM狀態(tài)進(jìn)入狀態(tài)進(jìn)入Thumb狀態(tài)狀態(tài)w執(zhí)行帶狀態(tài)切換的轉(zhuǎn)移指令執(zhí)行帶狀態(tài)切換的轉(zhuǎn)移指令BX。例如:。例如:BX R0 ; 若若R0最低位為最低位為1,則轉(zhuǎn),則轉(zhuǎn)Thumb狀態(tài)狀態(tài)3.3 Thumb指令集指令集Rn3101ARM / Thumb 選擇選擇0 - ARM 狀態(tài)狀態(tài)1 - Thumb 狀態(tài)狀態(tài)Copyright 2012 楊詞慧楊詞慧. All rights reser
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)復(fù)合棒型支柱絕緣子數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)雙顯式兆歐表數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)化學(xué)試劑瓶數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)三人釣魚(yú)充氣船數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)PP-R環(huán)保健康飲水管數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)鋼筋混凝土單扇防護(hù)密閉門市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)轉(zhuǎn)子銅排滾擠機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 第七章第三節(jié)-乙酸乙酯制備實(shí)驗(yàn)的改進(jìn)設(shè)計(jì) 教學(xué)設(shè)計(jì) 2023-2024學(xué)年高一下學(xué)期化學(xué)人教版(2019)必修第二冊(cè)
- 人教版七年級(jí)歷史與社會(huì)下冊(cè)7.1.1規(guī)則之源教學(xué)設(shè)計(jì)
- 第二單元第二節(jié)水分子的變化教學(xué)設(shè)計(jì)-2023-2024學(xué)年九年級(jí)化學(xué)魯教版上冊(cè)
- 高壓氧科工作總結(jié)高壓氧科個(gè)人年終總結(jié).doc
- 電子電路基礎(chǔ)習(xí)題解答
- 《政治學(xué)概論》教學(xué)大綱
- 食品生物化學(xué)習(xí)題謝達(dá)平(動(dòng)態(tài))
- 保安員工入職登記表
- 斷路器控制回路超詳細(xì)講解
- 簽證戶口本完整翻譯模板
- 睿達(dá)RDCAM激光雕刻切割軟件V5.0操作說(shuō)明書(shū)
- 變電設(shè)備運(yùn)行與維護(hù)培訓(xùn)課件(共102頁(yè)).ppt
- 機(jī)械設(shè)計(jì)基礎(chǔ)平面連桿機(jī)構(gòu)課件
- 寒假學(xué)習(xí)計(jì)劃表-
評(píng)論
0/150
提交評(píng)論