版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、自動化工程學(xué)院自動化工程學(xué)院測試技術(shù)及儀器研究所測試技術(shù)及儀器研究所肖肖 寅寅 東東E-mail: TELE:八章第八章ARMARM匯編指令匯編指令A(yù)RM機器指令編碼格式機器指令編碼格式 ARMARM采用三地址指令格式:采用三地址指令格式:ARM匯編指令書寫格式匯編指令書寫格式 S , 其中號內(nèi)的項是必須的,號內(nèi)的項可選。opcode:指令助記符;:指令助記符;cond:執(zhí)行條件;執(zhí)行條件;S:是否影響:是否影響CPSRCPSR寄存器的值;寄存器的值;Rd:目標寄存器;:目標寄存器;Rn:第:第1 1個操作數(shù)的寄存器;個操作數(shù)的寄存器;operand2:第:第2 2
2、個操作數(shù)(個操作數(shù)(#immed_8r#immed_8r、RmRm、Rm,shiftRm,shift););指令語法指令語法目標寄存器目標寄存器(Rd)源寄存器源寄存器1(Rn )源寄存器源寄存器2(Rm)ADD r3,r1,r2r3r1r2*3/95操作碼操作碼條件助記符條件助記符標志標志含義含義0000EQZ=1相等相等0001NEZ=0不相等不相等0010CS/HSC=1無符號數(shù)大于或等于無符號數(shù)大于或等于0011CC/LOC=0無符號數(shù)小于無符號數(shù)小于0100MIN=1負數(shù)負數(shù)0101PLN=0正數(shù)或零正數(shù)或零0110VSV=1溢出溢出0111VCV=0沒有溢出沒有溢出1000HIC=
3、1,Z=0無符號數(shù)大于無符號數(shù)大于1001LSC=0,Z=1無符號數(shù)小于或等于無符號數(shù)小于或等于1010GEN=V有符號數(shù)大于或等于有符號數(shù)大于或等于 1011LTN!=V有符號數(shù)小于有符號數(shù)小于 1100GTZ=0,N=V有符號數(shù)大于有符號數(shù)大于 1101LEZ=1,N!=V有符號數(shù)小于或等于有符號數(shù)小于或等于 1110AL任何任何無條件執(zhí)行無條件執(zhí)行 (指令默認條件指令默認條件) 1111NV任何任何從不執(zhí)行從不執(zhí)行(不要使用不要使用) 1. 1.所有的所有的ARMARM指令都可以條指令都可以條件執(zhí)行,而件執(zhí)行,而ThumbThumb指令只指令只有有B B(跳轉(zhuǎn))(跳轉(zhuǎn))指令具有條件指令具
4、有條件執(zhí)行執(zhí)行 功能。功能。2.2.如果指令不如果指令不標明條件代碼標明條件代碼,將默認為無,將默認為無條件(條件(ALAL)執(zhí))執(zhí)行行ARM指令條件碼指令條件碼cond4/95ARM指令中的第指令中的第2操作數(shù)操作數(shù)0 x120 0 0 1 0 0 1 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x000 0 0 0 0 0 0 00 x801 0 0 0 0 0 0 00 x040 0 0 0 0 1 0 08位常數(shù)循環(huán)右移位常數(shù)循環(huán)右移10位位常數(shù)常數(shù)#immed_8
5、r#immed_8r由一個由一個8位常數(shù)通過位常數(shù)通過循環(huán)右移偶數(shù)位循環(huán)右移偶數(shù)位得到:得到:Rm,shiftRm,shift由由RmRm移位得到。移位不消耗額外時間,且移位得到。移位不消耗額外時間,且RmRm值不變。值不變。結(jié)果結(jié)果NALU桶形移位器桶形移位器Rd預(yù)預(yù)處處理理未未預(yù)預(yù)處處理理RmRnLSL0LSR0ASRRORRRXC*桶形移位器的操作桶形移位器的操作助記助記符符功能功能表達式表達式操操 作作Y值值LSL邏輯左邏輯左移移x LSL yX y#132 or RsASR算術(shù)右算術(shù)右移移x ASR y(signed)x Y#132 or RsROR循環(huán)邏循環(huán)邏輯右移輯右移x ROR
6、 y(unsigned)x y|( x 32-y)#131 or Rs擴展循擴展循環(huán)右移環(huán)右移(c flag 1)ADDR1,R1,R1,LSL #3;R1=R1+R1R3*6/95ARM處理器尋址方式處理器尋址方式 尋址方式是根據(jù)指令中給出的地址碼尋址方式是根據(jù)指令中給出的地址碼字段來實現(xiàn)尋找真實操作數(shù)地址的方式。字段來實現(xiàn)尋找真實操作數(shù)地址的方式。 ARM ARM處理器具有幾種基本尋址方式:處理器具有幾種基本尋址方式:1. 1.寄存器尋址寄存器尋址 2.2.立即尋址立即尋址 3.3.寄存器間接尋址寄存器間接尋址移位尋址移位尋址、間接尋址間接尋址、基址變址尋址基址變址尋址、多寄存器尋址(塊尋
7、址)多寄存器尋址(塊尋址) 4.4.堆棧尋址堆棧尋址 5.5.相對尋址相對尋址7/951. 1. 操作數(shù)存放在寄存器中操作數(shù)存放在寄存器中; ;2.2.指令地址碼字段給出寄存器編號(名)指令地址碼字段給出寄存器編號(名); ;3.3.指令執(zhí)行時直接取出寄存器值來操作指令執(zhí)行時直接取出寄存器值來操作; ;MOV MOV R1, R2R1, R2; ; R1 = R2 R1 = R2 SUB SUB R0, R1, R2 ; R0 = R1-R2 R0, R1, R2 ; R0 = R1-R2 寄存器尋址寄存器尋址0 xAA0 x55R2R10 xAA*8/951. 1. 操作數(shù)包含在指令當(dāng)中操作
8、數(shù)包含在指令當(dāng)中; ;2. 2. 指令地址碼部分就是數(shù)據(jù)本身;指令地址碼部分就是數(shù)據(jù)本身;3.3. 取指時就取出了可立即使用的操作數(shù);取指時就取出了可立即使用的操作數(shù);MOV MOV R0,#0 xFF00 ; R0 = #0 xFF00 R0,#0 xFF00 ; R0 = #0 xFF00 SUBSSUBS R0,R0,#1 ; R0 =R0-1 R0,R0,#1 ; R0 =R0-1立即尋址立即尋址0 x55R0MOV R0,#0 xFF000 xFF00從代碼中獲得數(shù)據(jù)從代碼中獲得數(shù)據(jù)10進制數(shù):進制數(shù):#21,#0d572進制數(shù):進制數(shù): #0b0110016進制數(shù):進制數(shù):#0 x
9、3a001影響標志位影響標志位寄存器尋址寄存器尋址*9/951. 1. 操作數(shù)存放在寄存器中操作數(shù)存放在寄存器中; ;2.2.指令地址碼字段給出寄存器編號(名)及移位表達式指令地址碼字段給出寄存器編號(名)及移位表達式; ;3.3.指令執(zhí)行時取出寄存器值并移位,再將結(jié)果作為源操指令執(zhí)行時取出寄存器值并移位,再將結(jié)果作為源操作數(shù)作數(shù); ;MOVMOV R0, R2, LSL #3 R0, R2, LSL #3 ; R0=R2; R0=R28 8 ANDS R1, R1, R2, LSL R3 ANDS R1, R1, R2, LSL R3 ; R1 = R1 and (R2R3) ; R1 =
10、R1 and (R2R3)寄存器移位尋址寄存器移位尋址0 x55R0R20 x010 x080 x08邏輯左移邏輯左移3位位寄存器尋址寄存器尋址影響標志位影響標志位LSL、LSRASRROR、RRX寄存器間接尋址寄存器間接尋址1. 1. 操作數(shù)存放在內(nèi)存單元中操作數(shù)存放在內(nèi)存單元中; ;2.2.指令地址碼字段給出指令地址碼字段給出 寄存器編號(名)寄存器編號(名); ;3.3.指令執(zhí)行時根據(jù)寄存器值(指針)找到相應(yīng)的存儲單指令執(zhí)行時根據(jù)寄存器值(指針)找到相應(yīng)的存儲單元元; ;LDRLDRR1,R2R1,R2; R1= R2; R1= R2SWPSWPR1,R1,R2R1,R1,R2; R1;
11、 R1 R2 R20 x55R0R20 x400000000 xAA0 x400000000 xAA內(nèi)存單元內(nèi)存單元*11/95基址變址尋址基址變址尋址1. 1. 操作數(shù)存放在內(nèi)存單元中操作數(shù)存放在內(nèi)存單元中; ;2.2.指令地址碼字段給出指令地址碼字段給出 寄存器編號(名)寄存器編號(名) 和偏移量和偏移量; ;3.3.指令執(zhí)行時將基址寄存器的內(nèi)容與偏移量(指令執(zhí)行時將基址寄存器的內(nèi)容與偏移量(4K4K)相)相加加/ /減,形成操作數(shù)的有效地址。減,形成操作數(shù)的有效地址。4.4. 常用于查表、數(shù)組操作、功能部件寄存器訪問等。常用于查表、數(shù)組操作、功能部件寄存器訪問等。LDR LDR R2,R
12、3,#0 x0CR2,R3,#0 x0C ;R2=R3+0 x0C ;R2=R3+0 x0CLDR LDR R1,R0,#-4!R1,R0,#-4! ;R1=R0-4, R0=R0-4 ;R1=R0-4, R0=R0-4LDR R0,R1 ,#4 LDR R0,R1 ,#4 ;R0=R1 ;R0=R1,R1R1R1R14 4LDR LDR R0,R1,R2 R0,R1,R2 ;R0=R1+R2 ;R0=R1+R2前索引前索引后索引后索引0 x55R2R30 x400000000 xAA0 x4000000C0 xAA內(nèi)存單元內(nèi)存單元12/95多寄存器尋址多寄存器尋址/塊復(fù)制尋址塊復(fù)制尋址1.
13、1. 操作數(shù)存放在內(nèi)存單元中操作數(shù)存放在內(nèi)存單元中; ;2.2.指令地址碼字段給出指令地址碼字段給出 寄存器編號(名)列表寄存器編號(名)列表; ;3.3.編號高的寄存器總是對應(yīng)內(nèi)存中的高地址單元編號高的寄存器總是對應(yīng)內(nèi)存中的高地址單元;4.4. 可完成存儲塊和可完成存儲塊和1616個寄存器或其子集之間的數(shù)據(jù)傳送。個寄存器或其子集之間的數(shù)據(jù)傳送。 LDMIALDMIA R1!,R2-R4,R6 R1!,R2-R4,R6 ; R2= R1 , R3= R1+4; R2= R1 , R3= R1+4; R4= R1+8 , R6= R1+C, R1=R1+10; R4= R1+8 , R6= R1
14、+C, R1=R1+10 STMDB STMDB R1,R2-R4,R6 R1,R2-R4,R6 ; R1-4= R6 , R1-8=R4; R1-4= R6 , R1-8=R4 ; R1-C =R3, R1-10=R2; R1-C =R3, R1-10=R20 x40000000R1R20 x?0 x010 x400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C0 x010 x020 x030 x040 x40000010內(nèi)存單元內(nèi)存單元Increase AfterDecrease BeforeA
15、RM支持的四種堆棧類型支持的四種堆棧類型1. 1.滿遞增(滿遞增(FAFA):堆棧向上增長,堆棧指):堆棧向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最高地址。針指向內(nèi)含有效數(shù)據(jù)項的最高地址。2.2.空遞增(空遞增(EAEA) :堆棧向上增長,堆棧指:堆棧向上增長,堆棧指針指向堆棧上的第一個空位置。針指向堆棧上的第一個空位置。3.3.滿遞減(滿遞減(FDFD) :堆棧向下增長,堆棧指:堆棧向下增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項的最低地址。針指向內(nèi)含有效數(shù)據(jù)項的最低地址。4.4.空遞減(空遞減(EDED) :堆棧向下增長,堆棧指:堆棧向下增長,堆棧指針向堆棧下的第一個空位置。針向堆棧下的第一個空位置。*
16、14/95棧頂棧頂SP棧頂棧頂SP棧底棧底棧底棧底堆棧的空與滿堆棧的空與滿1. 1.空堆棧:堆棧指針空堆棧:堆棧指針SPSP指向下一個待指向下一個待壓入數(shù)據(jù)的空位置壓入數(shù)據(jù)的空位置2.2.滿堆棧:堆棧指針滿堆棧:堆棧指針SPSP指向最后壓入指向最后壓入的堆棧的有效數(shù)據(jù)項的堆棧的有效數(shù)據(jù)項0 x123456780 x12345678棧頂棧頂SP0 x12345678棧頂棧頂SP滿堆棧壓棧滿堆棧壓??斩褩簵?斩褩簵?15/95堆棧的遞增與遞減堆棧的遞增與遞減1. 1.遞增堆棧:向高地址方向生長,即向上生長遞增堆棧:向高地址方向生長,即向上生長2.2.遞減堆棧:向低地址方向生長,即向下生長遞減堆
17、棧:向低地址方向生長,即向下生長棧底棧底棧頂棧頂棧區(qū)棧區(qū)SP堆棧存儲區(qū)棧頂棧頂棧底棧底棧區(qū)棧區(qū)SP地址減少地址增加0 x123456780 x12345678遞增堆棧壓棧遞減堆棧壓棧*16/95堆堆 棧棧 尋尋 址址1. 1. 操作數(shù)存放在內(nèi)存棧頂單元中操作數(shù)存放在內(nèi)存棧頂單元中; ;2.2.指令地址碼字段固定使用棧頂指針指令地址碼字段固定使用棧頂指針SP;SP;3.3.指令執(zhí)行時同多寄存器指令執(zhí)行時同多寄存器/ /塊尋址,可完成多個數(shù)據(jù)的塊尋址,可完成多個數(shù)據(jù)的入棧和出棧;入棧和出棧; LDMEALDMEA SP!,R2-R4,R6 SP!,R2-R4,R6 ; R6= SP-4 , R4=
18、 SP-8; R6= SP-4 , R4= SP-8; R3= SP-C , R2= SP-10,SP=SP-10; R3= SP-C , R2= SP-10,SP=SP-10 STMFD STMFD SP!,R2-R4,R6 SP!,R2-R4,R6 ; SP-4= R6 , SP-8=R4; SP-4= R6 , SP-8=R4; SP-C =R3, SP-10=R2, SP=SP-10; SP-C =R3, SP-10=R2, SP b)a+; Elseb+;對應(yīng)的匯編代碼:對應(yīng)的匯編代碼:CMPR0,R1 ;比較比較R0(a)與)與R1(b)ADDHIR0,R0,#1 ;若若R0R1,
19、則,則R0=R0+1ADDLSR1,R1,#1 ;若若R01,則,則R1=R1+1*19/95數(shù)據(jù)處理指令的編碼格式數(shù)據(jù)處理指令的編碼格式指令條件碼I=1I=1:立即數(shù);:立即數(shù); I=0I=0:寄存器移位:寄存器移位第二操作數(shù)RdRd目標寄存器目標寄存器RnRn第一操作數(shù)寄存器第一操作數(shù)寄存器S=1S=1:根據(jù)結(jié)果設(shè)置:根據(jù)結(jié)果設(shè)置CPRSCPRS中的條件碼中的條件碼S=0S=0:不設(shè)置:不設(shè)置CPRSCPRS中的條件碼中的條件碼帶進位加法帶進位加法ADCADC01010101帶進位減法指令帶進位減法指令SBCSBC01100110帶進位逆向減法指令帶進位逆向減法指令RSCRSC011101
20、11位測試指令位測試指令TSTTST10001000相等測試指令相等測試指令TEQTEQ10011001比較指令比較指令CMPCMP10101010負數(shù)比較指令負數(shù)比較指令CMNCMN10111011邏輯或操作指令邏輯或操作指令ORRORR11001100數(shù)據(jù)傳送數(shù)據(jù)傳送MOVMOV11011101位清除指令位清除指令BICBIC11101110數(shù)據(jù)非傳送數(shù)據(jù)非傳送MVNMVN11111111加法運算指令加法運算指令A(yù)DDADD01000100逆向減法指令逆向減法指令RSBRSB00110011減法運算指令減法運算指令SUBSUB00100010邏輯異或操作指令邏輯異或操作指令EOREOR00
21、010001邏輯與操作指令邏輯與操作指令A(yù)NDAND00000000說明說明指令助記符指令助記符操作碼操作碼20/95乘法指令的編碼格式乘法指令的編碼格式RmRm被乘數(shù)寄存器被乘數(shù)寄存器Rn: MLARn: MLA指令相加的寄存器指令相加的寄存器RdLo: 64RdLo: 64位乘法指令目標寄位乘法指令目標寄存器的低存器的低3232位位Rd: Rd: 目標寄存器目標寄存器RdHi: 64RdHi: 64位乘法指令目標寄存器的高位乘法指令目標寄存器的高3232位位RsRs為乘數(shù)寄存器為乘數(shù)寄存器64位有符號乘加指令位有符號乘加指令SMLAL11164位有符號乘法指令位有符號乘法指令SMULL11
22、064位無符號乘加指令位無符號乘加指令UMLAL10164位無符號乘法指令位無符號乘法指令UMULL10032位乘加指令位乘加指令MLA00132位乘法指令位乘法指令MUL000說明說明指令助記符指令助記符操作碼操作碼*21/95單數(shù)據(jù)存取指令的編碼格式單數(shù)據(jù)存取指令的編碼格式字和無符號字節(jié)存取指令字和無符號字節(jié)存取指令LDR/STRLDR/STRP P表示前表示前/ /后變址后變址U=1:U=1:加加 U=0: U=0: 減減B=0B=0:字節(jié):字節(jié) B=1B=1:字:字 W=1W=1:回寫基址寄存器,對:回寫基址寄存器,對應(yīng)指令中的應(yīng)指令中的“!” ” W=0W=0:不回寫:不回寫存儲單元
23、尋址方式存儲單元尋址方式L=1L=1:加載:加載 L=0L=0:存儲:存儲RdRd為源為源/ /目標寄存器目標寄存器RnRn為基址寄存器為基址寄存器S=1:S=1:有符號數(shù),有符號數(shù), S=0: S=0: 無符號數(shù)無符號數(shù)H=1H=1:半字,:半字,H=0H=0:字節(jié):字節(jié)存儲單元尋址方式存儲單元尋址方式半字和有符號字節(jié)存取指令半字和有符號字節(jié)存取指令LDR/STRLDR/STRI=1I=1立即數(shù)立即數(shù) I=0I=0寄存器移位寄存器移位22/95數(shù)據(jù)塊數(shù)據(jù)塊(多寄存器多寄存器)存取指令的編碼格式存取指令的編碼格式數(shù)據(jù)塊(多寄存器)存取指令編碼數(shù)據(jù)塊(多寄存器)存取指令編碼LDM/STMLDM/
24、STMS S 對 應(yīng) 于 指 令 中 的對 應(yīng) 于 指 令 中 的”符號:在恢復(fù)符號:在恢復(fù)PCPC時也同時恢復(fù)時也同時恢復(fù)SPSRSPSRP P表示前表示前/ /后變址后變址U U表示加表示加/ /減減WW表示回寫表示回寫(!)(!)寄存器列表寄存器列表RnRn為基址寄存器為基址寄存器L=1:L=1:加載加載 L=0:L=0:存儲存儲*23/95寄存器寄存器/存儲器交換指令的編碼格式存儲器交換指令的編碼格式B B用于區(qū)別無符號字節(jié)用于區(qū)別無符號字節(jié)(B B為為1 1)或字()或字(B B為為0 0)Rm源寄存器Rd目標寄存器Rn為基址寄存器SWPR1,R1,R0; ; R1R1R0R0SWP
25、B R1,R2,R0; ;將將R0R0指向的存儲單元低字節(jié)指向的存儲單元低字節(jié)數(shù)據(jù)讀數(shù)據(jù)讀; ;取到取到R1R1中中( (高高2424位清零位清零) ),并將,并將R2R2的的; ;內(nèi)容寫入到該內(nèi)存單元中的最低字節(jié)內(nèi)容寫入到該內(nèi)存單元中的最低字節(jié)*24/95分支指令的編碼格式分支指令的編碼格式分支指令分支指令B/BLB/BL指令編碼格式指令編碼格式L=0L=0:B B指令,跳轉(zhuǎn)指令,跳轉(zhuǎn)L=1L=1: BLBL指令,保存指令,保存PCPC并跳轉(zhuǎn),可返回并跳轉(zhuǎn),可返回2424位有符號立即數(shù)(位有符號立即數(shù)(偏移量)偏移量)分支指令分支指令BXBX指令編碼格式指令編碼格式RmRm目標地址寄存器,該
26、寄存器裝載目標地址寄存器,該寄存器裝載3131位跳位跳轉(zhuǎn)地址,最低位為轉(zhuǎn)地址,最低位為1 1時切換到時切換到ThumbThumb狀態(tài)狀態(tài)*25/95狀態(tài)寄存器訪問指令的編碼格式狀態(tài)寄存器訪問指令的編碼格式指定傳送的區(qū)域,可以為以下字母指定傳送的區(qū)域,可以為以下字母(必須小寫)的一個或者組合:(必須小寫)的一個或者組合:c c 控制域屏蔽字節(jié)控制域屏蔽字節(jié)(psr7.0)(psr7.0)x x 擴展域屏蔽字節(jié)擴展域屏蔽字節(jié)(psr15.8)(psr15.8)s s 狀態(tài)域屏蔽字節(jié)狀態(tài)域屏蔽字節(jié)(psr23.16)(psr23.16)f f 標志域屏蔽字節(jié)標志域屏蔽字節(jié)(psr31.24)(psr
27、31.24)要傳送到狀態(tài)寄存要傳送到狀態(tài)寄存器指定域的立即數(shù)器指定域的立即數(shù)MSRMSR指令編碼指令編碼1 1MSRMSR指令編碼指令編碼2 28 8位立即數(shù)位立即數(shù)目標寄存器,不能為目標寄存器,不能為R15R15R R 0 0:CPSR CPSR R R 1 1:SPSRSPSRMRSMRS指令編碼指令編碼立即數(shù)立即數(shù)移位次數(shù)移位次數(shù)*軟中斷指令的編碼格式軟中斷指令的編碼格式SWIcond immed_24指令執(zhí)行的條件碼指令傳遞的參數(shù)(指令傳遞的參數(shù)(2424位立即數(shù),其值位立即數(shù),其值為為0 02 224241 1););執(zhí)行時執(zhí)行時CPUCPU忽略該參數(shù),交忽略該參數(shù),交OSOS處理。
28、處理。*27/95數(shù)據(jù)處理指令數(shù)據(jù)處理指令 ARMARM的數(shù)據(jù)處理指令大致可分為以下幾類:的數(shù)據(jù)處理指令大致可分為以下幾類: 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令:MOVMOV、MVNMVN 算術(shù)運算指令算術(shù)運算指令: :ADDADD、SUBSUB、RSBRSB、ADCADC、SBCSBC、RSCRSC、MULMUL、MLAMLA、UMULLUMULL、UMLALUMLAL、SMULLSMULL、SMLALSMLAL 邏輯運算指令邏輯運算指令 :ANDAND、ORRORR、EOREOR、BICBIC 比較指令比較指令:CMPCMP、CMNCMN、TSTTST、TEQTEQv 數(shù)據(jù)處理指令只能對數(shù)據(jù)處理指令
29、只能對寄存器寄存器的內(nèi)容進行操作,而不的內(nèi)容進行操作,而不能對內(nèi)存中的數(shù)據(jù)進行操作。能對內(nèi)存中的數(shù)據(jù)進行操作。v 所有所有ARMARM數(shù)據(jù)處理指令均可選擇使用數(shù)據(jù)處理指令均可選擇使用S S后綴,以使指后綴,以使指令影響狀態(tài)標志。令影響狀態(tài)標志。 28/95數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令MOV R11,#0 xF000000B;R1= 0 xF000000B MOV R0,R1;R0=R1 MOVS R3,R1,LSL #2;R3=R12,并影響標志位,并影響標志位 MOV PC,LR;PC=LR,子程序返回,子程序返回 MVN R1,#0 xFF;R1=0 xFFMVN R1,R2;將將R2按位取反
30、,結(jié)果存到按位取反,結(jié)果存到R1指指 令令 格格 式式說說 明明操操 作作MOVcondS Rd,operand2數(shù)據(jù)傳送數(shù)據(jù)傳送Rdoperand2 MVNcondS Rd,operand2數(shù)據(jù)非傳數(shù)據(jù)非傳送送Rd(operand2)v 當(dāng)有后綴當(dāng)有后綴S S時指令將根據(jù)結(jié)果更新標志時指令將根據(jù)結(jié)果更新標志NN和和Z Z,在計算,在計算operand2operand2( 8 8位立即數(shù)或寄存器位立即數(shù)或寄存器)時更新標志時更新標志C C,不影響標志,不影響標志V V。 v MVN MVN指令具有取反功能,所以可以裝載范圍更廣的立即數(shù)。指令具有取反功能,所以可以裝載范圍更廣的立即數(shù)。29/95
31、算術(shù)運算指令算術(shù)運算指令指指 令令 格格 式式說說 明明操操 作作ADDcondS Rd,Rn,operand2加法加法RdRn+operand2SUBcondS Rd,Rn,operand2減法減法RdRn-operand2RSBcondS Rd,Rn,operand2逆向減法逆向減法Rdoperand2-RnADCcondS Rd,Rn,operand2帶進位加法帶進位加法RdRn+operand2+CSBCcondS Rd,Rn,operand2帶進位減法帶進位減法RdRn-operand2-CRSCcondS Rd,Rn,operand2帶進位逆向減法帶進位逆向減法Rdoperand2
32、-Rn-C可影可影響響NN,Z Z,C C和和V V標標志位志位。ADDSR1,R1,#1020;R1=R1+1020,并影響標志位,并影響標志位ADDR1,R1,R2,LSL #2;R1=R1+R210,則比較則比較R1與與R2,并設(shè)置相關(guān)標志位,并設(shè)置相關(guān)標志位CMNR0,#1 ;比較比較R0與與-1,判斷,判斷R0是否為是否為1的補碼的補碼-1,是則設(shè)置,是則設(shè)置Z標志標志TSTR1,#0 x0F;判斷判斷R1的低的低4位是否為位是否為0 TEQR0,R1;較較R0與與R1是否相等是否相等 (不影響不影響V位和位和C位位) TST指令的下一條指令常與指令的下一條指令常與EQ、NE條件碼配
33、合使用:當(dāng)所條件碼配合使用:當(dāng)所有測試位均為有測試位均為0時,時,EQ有效(有效(Z=1),否則),否則NE有效(有效(Z=0););計算計算R0+1 TEQ指令的下一條指令常與指令的下一條指令常與EQ、NE條件碼配合使用:當(dāng)兩條件碼配合使用:當(dāng)兩個數(shù)據(jù)相等時,個數(shù)據(jù)相等時,EQ有效(有效(Z=1),否則),否則NE有效(有效(Z=0););*33/95存儲器訪問指令存儲器訪問指令 ARMARM處理器是典型的處理器是典型的RISCRISC處理器,對存儲器的訪問處理器,對存儲器的訪問只能使用加載只能使用加載/ /存儲指令存儲指令 實現(xiàn)。實現(xiàn)。 ARM ARM的存儲空間及的存儲空間及I/OI/O空
34、間統(tǒng)一編址,因此對外圍空間統(tǒng)一編址,因此對外圍I/OI/O及程序數(shù)據(jù)的訪問均需通過加載及程序數(shù)據(jù)的訪問均需通過加載/ /存儲指令進行。存儲指令進行。一、單寄存器操作指令一、單寄存器操作指令LDR/STR 用于對訪問內(nèi)存變量、內(nèi)存緩沖區(qū)數(shù)據(jù)、查表、控制用于對訪問內(nèi)存變量、內(nèi)存緩沖區(qū)數(shù)據(jù)、查表、控制外圍部件等。若使用外圍部件等。若使用LDRLDR指令加載數(shù)據(jù)到指令加載數(shù)據(jù)到PCPC寄存器,則寄存器,則實現(xiàn)程序?qū)崿F(xiàn)程序跳轉(zhuǎn)跳轉(zhuǎn)。 又分為又分為“字和無符號字節(jié)加載存儲指令字和無符號字節(jié)加載存儲指令”及及“半字和半字和有符號字節(jié)加載存儲指令有符號字節(jié)加載存儲指令”兩類。兩類。二、多寄存器操作指令二、多寄
35、存器操作指令LDM/STM 主要用于現(xiàn)場保護、數(shù)據(jù)復(fù)制、常數(shù)傳遞等。主要用于現(xiàn)場保護、數(shù)據(jù)復(fù)制、常數(shù)傳遞等。三、數(shù)據(jù)交換指令三、數(shù)據(jù)交換指令SWPSWP34/95單寄存器存取指令單寄存器存取指令指指 令令 格格 式式說說 明明操操 作作LDR cond Rd,addressing 加載字數(shù)據(jù)加載字數(shù)據(jù)Rdaddressing 注意注意addressing的尋的尋址方式及索引方式址方式及索引方式LDRcondT Rd,addressing以用戶模式加載字數(shù)據(jù)以用戶模式加載字數(shù)據(jù)LDRcondBT Rd, addressing 以用戶模式加載無符號字節(jié)以用戶模式加載無符號字節(jié)LDRcondB Rd
36、,addressing 加載無符號字節(jié)數(shù)據(jù)加載無符號字節(jié)數(shù)據(jù)LDRcondH Rd, addressing 加載無符號半字數(shù)據(jù)加載無符號半字數(shù)據(jù)LDRcondSB Rd, addressing 加載有符號字節(jié)數(shù)據(jù)加載有符號字節(jié)數(shù)據(jù)LDRcondSH Rd, addressing加載有符號半字數(shù)據(jù)加載有符號半字數(shù)據(jù)LDRcondD Rd, addressing加載雙字數(shù)據(jù)加載雙字數(shù)據(jù)STRcond Rd, addressing 存儲字數(shù)據(jù)存儲字數(shù)據(jù)addressingRd注意注意addressing的尋址的尋址方式及索引方式方式及索引方式STRcondT Rd,addressing 以用戶模式存
37、儲字數(shù)據(jù)以用戶模式存儲字數(shù)據(jù)STRcondB Rd,addressing 存儲字節(jié)數(shù)據(jù)存儲字節(jié)數(shù)據(jù)STRcondBT Rd,addressing 以用戶模式存儲字節(jié)數(shù)據(jù)以用戶模式存儲字節(jié)數(shù)據(jù)STRcondH Rd,addressing 存儲半字數(shù)據(jù)存儲半字數(shù)據(jù)STRcondD Rd,addressing 存儲雙字數(shù)據(jù)存儲雙字數(shù)據(jù)符號數(shù)加載時用符號擴展到符號數(shù)加載時用符號擴展到3232位,否則用零擴展到位,否則用零擴展到3232位;位;半字讀寫的指定地址必須為偶數(shù),否則將產(chǎn)生不可靠的結(jié)果;半字讀寫的指定地址必須為偶數(shù),否則將產(chǎn)生不可靠的結(jié)果;單寄存器存取指令的尋址方式單寄存器存取指令的尋址方式基
38、址寄存器(任一通用寄存器)基址寄存器(任一通用寄存器)+ +地址偏移量地址偏移量立即數(shù)立即數(shù):LDR R1,R0,#0 x12 ;R1-R0+0 x12寄存器寄存器:LDR R1,R0,-R2 ; R1-R0-R2寄存器移位寄存器移位:LDR R1,R0,R2,LSL #2 ;R1R3-R8/4;將將R0+R3指向的字節(jié)存入指向的字節(jié)存入R1,高,高24位符號擴展位符號擴展; 將將 R 2 指 向 的 半 字 存 入指 向 的 半 字 存 入 R 6 , 高, 高 1 6 位位 0 擴 展擴 展;R2=R2+2;雙字裝載,;雙字裝載,R6R11,R7R11+4 ;雙字存儲,雙字存儲,R4R9+
39、24,R5R9+2837/95多寄存器存取指令多寄存器存取指令指指 令令 格格 式式說說 明明操操 作作LDMcond mode Rn!,reglist 多寄存器加載多寄存器加載reglistRn.STMcond mode Rn!,reglist 多寄存器存儲多寄存器存儲Rn.reglistu reglistreglist表示寄存器列表(由小到大),如表示寄存器列表(由小到大),如R1,R2,R6-R9R1,R2,R6-R9;u ! ! 表示在操作結(jié)束后,將最后的地址寫回表示在操作結(jié)束后,將最后的地址寫回RnRn中;中;u允許在允許在用戶模式或系統(tǒng)模式用戶模式或系統(tǒng)模式下使用。它有以下兩個功能
40、:下使用。它有以下兩個功能:1 1)異常模式下)異常模式下LDMLDM指令中寄存器列表包含指令中寄存器列表包含R15R15時,除正常多寄存時,除正常多寄存器傳送外,還將器傳送外,還將SPSRSPSR也復(fù)制到也復(fù)制到CPSRCPSR中。常用于中。常用于異常處理返回異常處理返回。2 2)使用)使用用戶模式下的寄存器用戶模式下的寄存器,而不是當(dāng)前模式的寄存器。,而不是當(dāng)前模式的寄存器。地址增長模式地址增長模式數(shù)據(jù)塊傳送操作說明數(shù)據(jù)塊傳送操作說明地址增長模式地址增長模式堆棧操作說明堆棧操作說明IA傳送后地址加傳送后地址加4FD滿遞減堆棧滿遞減堆棧IB傳送前地址加傳送前地址加4ED空遞減堆棧空遞減堆棧D
41、A傳送后地址減傳送后地址減4FA滿遞增堆棧滿遞增堆棧DB傳送前地址減傳送前地址減4EA空遞增堆棧空遞增堆棧38/95多寄存器存取指令應(yīng)用示例多寄存器存取指令應(yīng)用示例R1R1:指令指令執(zhí)行執(zhí)行前前的的基址寄存基址寄存器器R1R1:指令指令執(zhí)行執(zhí)行后后的的基址寄存基址寄存器器R1 R1 指令指令STMIA R1!,R5-R74008H4004H4000H4014H4010H400CHR1 R1 指令指令STMDA R1!,R5-R74008H4004H4000H4014H4010H400CHR1 R1 指令指令STMIB R1!,R5-R74008H4004H4000H4014H4010H400C
42、HR1 R1 指令指令STMDB R1!,R5-R74008H4004H4000H4014H4010H400CHR5R6R7R5R6R7R5R6R7R5R6R739/95堆堆 棧棧 操操 作作數(shù)據(jù)塊傳送數(shù)據(jù)塊傳送存儲存儲堆棧操作堆棧操作壓棧壓棧說明說明數(shù)據(jù)塊傳送數(shù)據(jù)塊傳送加載加載堆棧操作堆棧操作出棧出棧說明說明STMDASTMED空遞減空遞減LDMDALDMFA滿遞減滿遞減STMIASTMEA空遞增空遞增LDMIALDMFD滿遞增滿遞增STMDBSTMFD滿遞減滿遞減LDMDBLDMEA空遞減空遞減STMIBSTMFA滿遞增滿遞增LDMIBLDMED空遞增空遞增;使用數(shù)據(jù)塊傳送指令進行堆棧操作
43、使用數(shù)據(jù)塊傳送指令進行堆棧操作STMDAR0!,R5-R6. . .LDMIBR0!,R5-R6;使用堆棧指令進行堆棧操作使用堆棧指令進行堆棧操作STMEDR13!,R5-R6. . .LDMEDR13!,R5-R6 兩段代碼的執(zhí)行結(jié)果是一樣的,但是使用堆棧指令的壓棧和兩段代碼的執(zhí)行結(jié)果是一樣的,但是使用堆棧指令的壓棧和出棧操作編程很簡單(只要前后一致即可),而使用數(shù)據(jù)塊指令出棧操作編程很簡單(只要前后一致即可),而使用數(shù)據(jù)塊指令進行壓棧和出棧操作則需要考慮空與滿、加與減對應(yīng)的問題。進行壓棧和出棧操作則需要考慮空與滿、加與減對應(yīng)的問題。堆棧操作和數(shù)據(jù)塊傳送指令之間的關(guān)系如下表所示:堆棧操作和數(shù)
44、據(jù)塊傳送指令之間的關(guān)系如下表所示:寄存器和存儲器交換指令寄存器和存儲器交換指令指指 令令 格格 式式說說 明明操操 作作SWPcond Rd, Rm, Rn 字數(shù)據(jù)交換字數(shù)據(jù)交換RdRn,RnRm (RnRd或或Rm)SWP cond B Rd, Rm, Rn 字節(jié)數(shù)據(jù)交換字節(jié)數(shù)據(jù)交換u 若若RmRm與與RdRd相同,則為寄存器與存儲器內(nèi)容相同,則為寄存器與存儲器內(nèi)容進行互換;進行互換;u Rn Rn為要進行數(shù)據(jù)交換的存儲器地址,為要進行數(shù)據(jù)交換的存儲器地址,RnRn不不能與能與RdRd和和RmRm相同。相同。 *41/95分分 支支 指指 令令 在在ARMARM中有兩種方式可以實現(xiàn)程序的跳轉(zhuǎn)
45、,一中有兩種方式可以實現(xiàn)程序的跳轉(zhuǎn),一種則是直接種則是直接向向PCPC寄存器賦值寄存器賦值實現(xiàn)跳轉(zhuǎn),另一種是使實現(xiàn)跳轉(zhuǎn),另一種是使用用分支指令分支指令直接跳轉(zhuǎn)。直接跳轉(zhuǎn)。 以下三種分支指令跳轉(zhuǎn)范圍限制在當(dāng)前指令的以下三種分支指令跳轉(zhuǎn)范圍限制在當(dāng)前指令的32M32M字節(jié)地址內(nèi),且字節(jié)地址內(nèi),且ARM指令為字對齊,因此指令為字對齊,因此最最低低2位地址固定為位地址固定為0。指指 令令 格格 式式說說 明明操操 作作B cond label分支指令分支指令PClabelBLcond label帶鏈接的分支指令帶鏈接的分支指令LRPC-4,PClabel適用于子程序調(diào)用適用于子程序調(diào)用BXcond R
46、m帶狀態(tài)切換的分支指令帶狀態(tài)切換的分支指令PCRm根據(jù)跳轉(zhuǎn)地址(根據(jù)跳轉(zhuǎn)地址(Rm)的最低位)的最低位來切換處理器狀態(tài)來切換處理器狀態(tài)*42/95BL LabelxxxxxxLabelxxxMOV PC,LRAddr1Addr2xxxxxxLRPC分支指令應(yīng)用示例分支指令應(yīng)用示例Addr1LabelAddr2Addr21. 1.當(dāng)程序執(zhí)行到當(dāng)程序執(zhí)行到BLBL跳轉(zhuǎn)指跳轉(zhuǎn)指令時,硬件將下一條指令時,硬件將下一條指令的地址令的地址Addr2Addr2裝入裝入LRLR寄存器,并把跳轉(zhuǎn)地址寄存器,并把跳轉(zhuǎn)地址裝入程序計數(shù)器(裝入程序計數(shù)器(PCPC)2. 2. 程序跳轉(zhuǎn)到目標地址程序跳轉(zhuǎn)到目標地址La
47、belLabel繼續(xù)執(zhí)行,當(dāng)子程繼續(xù)執(zhí)行,當(dāng)子程序執(zhí)行結(jié)束后,將序執(zhí)行結(jié)束后,將LRLR寄寄存器內(nèi)容存入存器內(nèi)容存入PCPC,返回,返回調(diào)用函數(shù)繼續(xù)執(zhí)行調(diào)用函數(shù)繼續(xù)執(zhí)行B WAITA; ; 跳轉(zhuǎn)到跳轉(zhuǎn)到WAITAWAITA標號處標號處 B0 x1234; ; 跳轉(zhuǎn)到絕對地址跳轉(zhuǎn)到絕對地址0 x12340 x1234處處BL Label;調(diào)用子程序;調(diào)用子程序ADRL R0,ThumbFun+1 ; ;將將ThumbThumb程序的入口地址加程序的入口地址加1 1存入存入R0R0BX R0 ; ; 跳轉(zhuǎn)到指定地址并切換到跳轉(zhuǎn)到指定地址并切換到ThumbThumb狀態(tài)狀態(tài) 43/95*PSR訪問指
48、令訪問指令指指 令令 格格 式式說說 明明操操 作作MRScond Rd, psr讀讀PSRRdpsrMSRcond psr_fields,Rd/#immed_8r寫寫PSRpsr_fieldsRd/#immed_8ru 讀讀CPSRCPSR可了解當(dāng)前工作狀態(tài)可了解當(dāng)前工作狀態(tài); ; 讀讀SPSRSPSR可以了解進入異常前的狀態(tài)可以了解進入異常前的狀態(tài); ; uMSRMSR與與MRSMRS配合使用,可以切換處理器模式或允許配合使用,可以切換處理器模式或允許/ /禁止中斷等。禁止中斷等。(1)(2)(3)(4) 應(yīng)用示例應(yīng)用示例1 1:; ;子程序:使能子程序:使能IRQIRQ中斷中斷ENABL
49、E_IRQ MRS R0, CPSR BIC R0, R0,#0 x80 MSR CPSR_c,R0 MOV PC,LR 應(yīng)用示例應(yīng)用示例2 2:; ;子程序:禁能子程序:禁能IRQIRQ中斷中斷DISABLE_IRQ MRS R0, CPSR ORR R0, R0,#0 x80 MSR CPSR_c,R0 MOV PC,LR 1. 1.將將CPSRCPSR寄存器內(nèi)容讀出到寄存器內(nèi)容讀出到R0R0;2.2.修改對應(yīng)于修改對應(yīng)于CPSRCPSR中的中的I I控制位;控制位;3.3.將修改后的值寫回將修改后的值寫回 CPSRCPSR寄存器寄存器的對應(yīng)控制域;的對應(yīng)控制域;4.4.返回上一層函數(shù);返
50、回上一層函數(shù);*44/9545軟中斷指令軟中斷指令 主要用于用戶程序主要用于用戶程序調(diào)用操作系統(tǒng)的系統(tǒng)服務(wù)調(diào)用操作系統(tǒng)的系統(tǒng)服務(wù): :切換到管切換到管理模式理模式, ,并將并將CPSRCPSR保存到管理模式的保存到管理模式的SPSRSPSR中,然后程序跳中,然后程序跳轉(zhuǎn)到轉(zhuǎn)到SWISWI異常入口。不影響條件碼標志。異常入口。不影響條件碼標志。 根據(jù)根據(jù)SWISWI指令傳遞的參數(shù)指令傳遞的參數(shù)SWISWI異常處理程序可以作出相應(yīng)異常處理程序可以作出相應(yīng)的處理。的處理。SWISWI指令指令傳遞參數(shù)傳遞參數(shù)有以下兩種方法有以下兩種方法: 1. 1. 指令中的指令中的2424位立即數(shù)指定服務(wù)類型,參數(shù)
51、通過通用寄存器傳遞。位立即數(shù)指定服務(wù)類型,參數(shù)通過通用寄存器傳遞。 MOV R0,#34; ;設(shè)置子功能號為設(shè)置子功能號為34 34 SWI 12; ;調(diào)用調(diào)用1212號軟中斷號軟中斷 2.2.指令中的指令中的2424位立即數(shù)被忽略,服務(wù)類型由位立即數(shù)被忽略,服務(wù)類型由R0R0的值決定,參數(shù)通過其它的的值決定,參數(shù)通過其它的通用寄存器傳遞。通用寄存器傳遞。 MOV R0,#12; ;調(diào)用調(diào)用1212號軟中斷號軟中斷 MOV R1,#34; ;設(shè)置子功能號為設(shè)置子功能號為34 34 SWI 0 *45/95在在SWISWI異常中斷處理程序中,取出異常中斷處理程序中,取出SWISWI指令中立即數(shù)的
52、步驟為:指令中立即數(shù)的步驟為:首先確定引起軟中斷的首先確定引起軟中斷的SWISWI指令是指令是ARMARM指令還是指令還是ThumbThumb指令,這可通過對指令,這可通過對SPSRSPSR訪問得到;訪問得到;然后取得該然后取得該SWISWI指令的地址,這可通過訪問指令的地址,這可通過訪問LRLR寄存器得到;寄存器得到;接著讀出該接著讀出該SWISWI指令,分解出立即數(shù)。指令,分解出立即數(shù)。 SWI_Handler STMFD SP!, R0-R3, R12, LR; 現(xiàn)場保護現(xiàn)場保護 MRS R0, SPSR ; 讀取讀取SPSR STMFD SP!, R0 ; 保存保存SPSR TST R
53、0, #0 x20 ; 測試測試T標志位標志位 LDRNEH R0, LR,#-2 ; 若是若是Thumb指令,讀取指令碼指令,讀取指令碼(16位位) BICNE R0, R0, #0 xFF00; 取得取得Thumb指令的指令的8位立即數(shù)(低位立即數(shù)(低8位)位) LDREQ R0, LR,#-4 ; 若是若是ARM指令,讀取指令碼指令,讀取指令碼(32位位) BICEQ R0, R0, #0 xFF000000 ; 取得取得ARM指令的指令的24位立即數(shù)(低位立即數(shù)(低23位)位) . LDMFD SP!, R0-R3, R12, PC; SWI異常中斷返回異常中斷返回 *46/95偽指令
54、偽指令在在ARM匯編指令中,有一類特殊的指令沒有對應(yīng)的匯編指令中,有一類特殊的指令沒有對應(yīng)的指令編碼。在匯編時根據(jù)情況會解釋為相應(yīng)的指令編碼。在匯編時根據(jù)情況會解釋為相應(yīng)的ARM、Thumb-2或或Thumb-2之前的之前的Thumb指令的組合。這指令的組合。這類指令被類指令被ARM公司稱為公司稱為“偽指令偽指令”。 需要特別注意的是,這幾條指令和第需要特別注意的是,這幾條指令和第9章中介紹的偽章中介紹的偽指令雖然形式上類似,但作用卻大不相同。第指令雖然形式上類似,但作用卻大不相同。第9章中章中介紹的偽指令用于指導(dǎo)匯編器完成相應(yīng)的匯編工作,介紹的偽指令用于指導(dǎo)匯編器完成相應(yīng)的匯編工作,符合通常
55、意義上對偽指令的定義,而本節(jié)所介紹的這符合通常意義上對偽指令的定義,而本節(jié)所介紹的這幾條偽指令的作用和正常的幾條偽指令的作用和正常的ARM匯編指令類似,設(shè)匯編指令類似,設(shè)計這幾條偽指令的目的主要是計這幾條偽指令的目的主要是使用一條指令替代多條使用一條指令替代多條指令的組合指令的組合,方便程序員完成匯編程序設(shè)計工作,其,方便程序員完成匯編程序設(shè)計工作,其作用類似于作用類似于80 x86處理器的宏指令。處理器的宏指令。 偽指令偽指令A(yù)DR/ADRL 將相對于程序或相對于寄存器的地址載入寄存器中將相對于程序或相對于寄存器的地址載入寄存器中(中等范圍,中等范圍,與位置無關(guān)與位置無關(guān))。 指令書寫格式:
56、指令書寫格式:ADR(ADRL) , MOV R0, #0 x18 ; 給給R0賦值用于查表賦值用于查表ADR R3, JumpTable ; 裝載跳轉(zhuǎn)表的首地址裝載跳轉(zhuǎn)表的首地址LDR PC, R3,R0,LSL#2 ; 查表,將查到的地址賦給查表,將查到的地址賦給PCJumpTableADR R3 JumpTableLDR PC,R3,R0,LSL#2xxxJumpTablexxxxxxJumpTable+72xxxPCR3JumpTablePCxxx偽指令偽指令LDR 將將32位常數(shù)或地址載入寄存器位常數(shù)或地址載入寄存器(無范圍限制,但與位置相關(guān)無范圍限制,但與位置相關(guān)) 指令書寫格式:
57、指令書寫格式:LDR , / expr取值為一個數(shù)值常數(shù)取值為一個數(shù)值常數(shù) 如果如果expr的值位于范圍內(nèi),則匯編器將會生成一個的值位于范圍內(nèi),則匯編器將會生成一個MOV或或MVN指令指令 如果如果expr的值不在的值不在MOV或或MVN指令的范圍內(nèi),則匯編器會將指令的范圍內(nèi),則匯編器會將常數(shù)放入文字池中,并會生成一個相對于程序的常數(shù)放入文字池中,并會生成一個相對于程序的LDR指令,該指令,該指令可從文字池中讀取此常數(shù)指令可從文字池中讀取此常數(shù) 指令舉例指令舉例LDR R3,=0 xFFF; 把立即數(shù)把立即數(shù)0 xFFF賦值給賦值給R3LDR R2,=place; 把標號把標號place對應(yīng)的
58、地址賦值給對應(yīng)的地址賦值給R2 50偽指令偽指令MOV32 將將32位常數(shù)或地址載入寄存器位常數(shù)或地址載入寄存器(無范圍限制,但與位無范圍限制,但與位置相關(guān)置相關(guān)) 僅可用于僅可用于ARMv6T2及更高版本及更高版本 指令書寫格式:指令書寫格式:MOV32 , expr可以是可以是symbol(程序區(qū)域中的標號程序區(qū)域中的標號)、constant(任何任何32位常數(shù)位常數(shù))或或symbol+constant(一個一個加上加上32位常數(shù)的標號位常數(shù)的標號)。 51偽指令偽指令UND 生成無體系結(jié)構(gòu)定義的指令生成無體系結(jié)構(gòu)定義的指令 指令書寫格式:指令書寫格式:UND 執(zhí)行未定義指令會引發(fā)未定義指令異常。程序員可以執(zhí)行未定義指令會引發(fā)未定義指令異常。程序員可以利用指令異常完成相應(yīng)的異常處理。利用指令異常完成相應(yīng)的異常處理。 ARM指令系統(tǒng)總結(jié)指令系統(tǒng)總結(jié)ARMARM指令集指令集ARMARM指令:指令:32 bits32 bits(字長),(字長),4 4字節(jié)邊界對齊字節(jié)邊界對齊ThumbThumb指令:指令:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技孵化器在促進經(jīng)濟轉(zhuǎn)型中的作用
- 智慧農(nóng)業(yè)在醫(yī)療健康領(lǐng)域的應(yīng)用案例
- 牡丹江2025年黑龍江穆棱市公安局招聘輔警15人筆試歷年參考題庫附帶答案詳解
- 二零二五年度航空航天特殊材料采購合同2篇
- 二零二五年度智慧城市建設(shè)專業(yè)人才勞動合同3篇
- 昆明云南昆明市盤龍區(qū)社會保險中心公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 二零二五年度車輛掛靠及車輛改裝服務(wù)合同4篇
- 2025年度個人信用貸款擔(dān)保合同范本大全
- 2025年個人快遞運輸服務(wù)標準合同范本4篇
- 二零二五年度房地產(chǎn)項目代建管理合同3篇
- 江蘇省蘇州市2024-2025學(xué)年高三上學(xué)期1月期末生物試題(有答案)
- 銷售與銷售目標管理制度
- 人教版(2025新版)七年級下冊英語:寒假課內(nèi)預(yù)習(xí)重點知識默寫練習(xí)
- 2024年食品行業(yè)員工勞動合同標準文本
- 2025年第一次工地開工會議主要議程開工大吉模板
- 全屋整裝售后保修合同模板
- 壁壘加筑未來可期:2024年短保面包行業(yè)白皮書
- 高中生物學(xué)科學(xué)推理能力測試
- GB/T 44423-2024近紅外腦功能康復(fù)評估設(shè)備通用要求
- 2024-2030年中國減肥行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報告
- 運動技能學(xué)習(xí)
評論
0/150
提交評論