版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
、ARM微處理器的指令的分類與格式ARM微處理器的指令集是加載/存儲型的,也即指令集僅能處理寄存器中的數(shù)據(jù),且處理結(jié)果都要放回寄存器中,對系統(tǒng)存儲器的訪問則需要通過專門的加載/存儲指令來完成。ARM微處理器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲指令、協(xié)處理器指令和異常產(chǎn)指令六類。下是ARM微處理器的基本指令。助記符指令功能描述ADC帶進(jìn)位加法指令A(yù)DD加法指令A(yù)ND邏輯與指令B 跳轉(zhuǎn)指令BIC位清零指令BL 帶返回的跳轉(zhuǎn)指令BLX 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX 帶狀態(tài)切換的跳轉(zhuǎn)指令CDP協(xié)處理器數(shù)據(jù)操作指令CMN 比較反值指令CMP 比較指令EOR異或指令LDC 存儲器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM 加載多個寄存器指令LDR 存儲器到寄存器的數(shù)據(jù)傳輸指令MCR從ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳輸指令MLA乘加運(yùn)算指令MOV 數(shù)據(jù)傳送指令MRC 從協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳輸指令MRS 傳送CPSR或SPSR的內(nèi)容到通寄存器指令MSR 傳送通寄存器到CPSR或SPSR的指令MUL 32位乘法指令MLA 32位乘加指令MVN 數(shù)據(jù)取反傳送指令ORR 邏輯或指令RSB 逆向減法指令RSC 帶借位的逆向減法指令SBC 帶借位減法指令STC 協(xié)處理器寄存器寫入存儲器指令STM 批量內(nèi)存字寫入指令STR 寄存器到存儲器的數(shù)據(jù)傳輸指令SUB 減法指令SWI 軟件中斷指令SWP 交換指令TEQ 相等測試指令TST 位測試指令二、指令的條件域當(dāng)處理器作在ARM狀態(tài)時, 乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿足時,指令被執(zhí)行,否則指令被忽略。每條ARM指令包含4位的條件碼,位于指令的最4位[31:28]。條件碼共有16種,每種條件碼可用兩個字符表示,這兩個字符可以添加在指令助記符的后面和指令同時使用。16種條件標(biāo)志碼中只有15種可以使用,標(biāo)志碼1111保留不用。條件碼助記符后綴標(biāo)志 含義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無符號數(shù)大于或等于0011CCC清零無符號數(shù)小于0100MIN置位負(fù)數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢出1000HIC置位Z清零 符號數(shù)于1001LSC清零Z置位 符號數(shù)于或等于1010GEN等于V帶符號數(shù)大于或等于1011LTN不等于V 帶符號數(shù)于1100GTZ清零且(N等于V)帶符號數(shù)于1101LEZ置位或(N不等于V)帶符號數(shù)于或等于1110AL忽略無條件執(zhí)行三、ARM指令的尋址式1、立即尋址 操作數(shù)在指令中直接給出ADDR0,R0,#1;R0□R0+1ADDR0,R0,#0x3f;R0□R0+0x3f2、寄存器尋址 操作數(shù)在寄存器ADDR0,R1,R2;R0□R1+R23、寄存器間接尋址操作數(shù)的地址在寄存器ADDR0,R1,[R2];R0□R1+[R2]LDRR0,[R1];R0□[R1]STRR0,[R1];[R1]□R04、基址變址尋址 操作數(shù)地址=基址寄存器+指令中給出的地址偏移LDRR0,[R1,#4];R0□[R1+4]LDRR0,[R1,#4]!;R0□[R1+4]、R1□R1+4LDRR0,[R1],#4;R0□[R1]、R1□R1+4LDRR0,[R1,R2];R0□[R1+R2]5、多寄存器尋址類似寄存器尋址,此處是多個寄存器而已LDMIAR0,{R1,R2,R3,R4};R1□[R0];R2□[R0+4];R3□[R0+8];R4□[R0+12]6、相對尋址目標(biāo)地址=pc當(dāng)前值+指令給出的標(biāo)號偏移地址BLNEXT;跳轉(zhuǎn)到程序NEXT處執(zhí)行NEXTMOVPC,LR;從子程序返回7、堆棧尋址ARM微處理器支持這四種類型的堆棧工作方式。-滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成。-滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成。-空遞增堆棧:堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。-空遞減堆棧:堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。四、ARM指令集1、跳轉(zhuǎn)指令使用專門的跳轉(zhuǎn)指令。 32MB地址空間直接向程序計(jì)數(shù)器PC寫跳轉(zhuǎn)地址值。 4GB地址空間B跳轉(zhuǎn)指令BL帶返回的跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令B{條件} 標(biāo)地址其他的類似2、數(shù)據(jù)處理指令數(shù)據(jù)處理指令可分為數(shù)據(jù)傳送指令、算術(shù)邏輯運(yùn)算指令和比較指令等。數(shù)據(jù)傳送指令用于在寄存器和存儲器之間進(jìn)行數(shù)據(jù)的雙向傳輸。算術(shù)邏輯運(yùn)算指令完成常用的算術(shù)與邏輯的運(yùn)算,該類指令不但將運(yùn)算結(jié)果保存在目的寄存器中,同時更新CPSR中的相應(yīng)條件標(biāo)志位。較指令不保存運(yùn)算結(jié)果,只更新CPSR中相應(yīng)的條件標(biāo)志位。數(shù)據(jù)處理指令包括:—MOV數(shù)據(jù)傳送指令 MOV{條件}{S} 的寄存器,源操作數(shù)MOVR1,R0 ;將寄存器R0的值傳送到寄存器R1MOVPC,R14 ;將寄存器R14的值傳送到PC,常于程序返回MOVR1,R0,LSL#3 ;將寄存器R0的值左移3位后傳送到R1—MVN數(shù)據(jù)取反傳送指令 MVN{條件}{S} 的寄存器,源操作數(shù)MVNR0,#0;將立即數(shù)0取反傳送到寄存器R0中,完成后R0=-1CMP 較指令 CMP{條件}操作數(shù)1,操作數(shù)2CMPR1,R0;將寄存器R1的值與寄存器R0的值相減,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位CMPR1,#100;將寄存器R1的值與立即數(shù)100相減,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位CMN反值較指令 CMN{條件}操作數(shù)1,操作數(shù)2CMNR1,R0 ;將寄存器R1的值與寄存器R0的值相加,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位CMNR1,#100 ;將寄存器R1的值與立即數(shù)100相加,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位TST位測試指令 TST{條件}操作數(shù)1,操作數(shù)2TSTR1,#%1 ;于測試在寄存器R1中是否設(shè)置了最低位(%表 進(jìn)制數(shù))TSTR1,#0xffe;將寄存器R1的值與立即數(shù)0xffe按位與,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位TEQ相等測試指令 TEQ{條件}操作數(shù)1,操作數(shù)2TEQR1,R2 ;將寄存器R1的值與寄存器R2的值按位異或,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位ADD加法指令 ADD{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2ADDR0,R1,R2;R0=R1+R2ADDR0,R1,#256 ;R0=R1+256ADDR0,R2,R3,LSL#1;R0=R2+(R3<<1)ADC帶進(jìn)位加法指令 ADC{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2ADDSR0,R4,R8;加低端的字ADCSR1,R5,R9;加第二個字,帶進(jìn)位ADCSR2,R6,R10 ;加第三個字,帶進(jìn)位ADCR3,R7,R11 ;加第四個字,帶進(jìn)位SUB減法指令 SUB{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2SUBR0,R1,R2;R0=R1-R2SUBR0,R1,#256 ;R0=R1-256SUBR0,R2,R3,LSL#1;R0=R2-(R3<<1)SBC帶借位減法指令SBC{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2SUBSR0,R1,R2;R0=R1-R2-!C,并根據(jù)結(jié)果設(shè)置CPSR的進(jìn)位標(biāo)志位RSB逆向減法指令RSC{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2RSBR0,R1,R2;R0=R2-R1RSBR0,R1,#256 ;R0=256-R1RSBR0,R2,R3,LSL#1;R0=(R3<<1)-R2RSC帶借位的逆向減法指令RSC{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2RSCR0,R1,R2;R0=R2-R1-!CAND邏輯與指令A(yù)ND{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2ANDR0,R0,#3 ;該指令保持R0的0、1位,其余位清零。ORR邏輯或指令ORR{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2ORRR0,R0,#3 ;該指令設(shè)置R0的0、1位,其余位保持不變EOR邏輯異或指令 EOR{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2EORR0,R0,#3 ;該指令反轉(zhuǎn)R0的0、1位,其余位保持不變。BIC位清除指令 BIC{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2BICR0,R0,#%1011 ;該指令清除R0中的位0、1、和3,其余的位保持不變。3、乘法指令與乘加指令A(yù)RM微處理器支持的乘法指令與乘加指令共有6條,可分為運(yùn)算結(jié)果為32位和運(yùn)算結(jié)果為64位兩類,與前面的數(shù)據(jù)處理指令不同,指令中的所有操作數(shù)、目的寄存器必須為通用寄存器,不能對操作數(shù)使用立即數(shù)或被移位的寄存器,同時,目的寄存器和操作數(shù)1必須是不同的寄存器。乘法指令與乘加指令共有以下6條:MUL32位乘法指令MUL{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2MULR0,R1,R2 ;R0=R1×R2MULSR0,R1,R2 ;R0=R1×R2,同時設(shè)置CPSR中的相關(guān)條件標(biāo)志位MLA32位乘加指令MLA{條件}{S} 的寄存器,操作數(shù)1,操作數(shù)2,操作數(shù)3MLAR0,R1,R2,R3;R0=R1×R2+R3MLASR0,R1,R2,R3;R0=R1×R2+R3,同時設(shè)置CPSR中的相關(guān)條件標(biāo)志位SMULL64位有符號數(shù)乘法指令SMULL{條件}{S} 的寄存器Low, 的寄存器低High,操作數(shù)1,操作數(shù)2SMULLR0,R1,R2,R3;R0=(R2×R3)的低32位;R1=(R2×R3)的32位—SMLAL64位有符號數(shù)乘加指令SMLAL{條件}{S} 的寄存器Low, 的寄存器低High,操作數(shù)1,操作數(shù)2SMLALR0,R1,R2,R3;R0=(R2×R3)的低32位+R0;R1=(R2×R3)的32位+R1—UMULL64位符號數(shù)乘法指令UMULL{條件}{S} 的寄存器Low, 的寄存器低High,操作數(shù)1,操作數(shù)2UMULLR0,R1,R2,R3;R0=(R2×R3)的低32位;R1=(R2×R3)的32位—UMLAL64位符號數(shù)乘加指令UMLAL{條件}{S} 的寄存器Low, 的寄存器低High,操作數(shù)1,操作數(shù)2UMLALR0,R1,R2,R3;R0=(R2×R3)的低32位+R0;R1=(R2×R3)的32位+R14、程序狀態(tài)寄存器訪問指令A(yù)RM微處理器支持程序狀態(tài)寄存器訪問指令,用于在程序狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù),程序狀態(tài)寄存器訪問指令包括以下兩條:—MRS程序狀態(tài)寄存器到通寄存器的數(shù)據(jù)傳送指令 MRS{條件}通寄存器,程序狀態(tài)寄存器(CPSR或SPSR)MRSR0,CPSR"專送CPSR的內(nèi)容到R0MRSR0,SPSR;傳送SPSR的內(nèi)容到R0—MSR通寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送指令 MSR{條件}程序狀態(tài)寄存器(CPSR或SPSR)_<域>,操作數(shù)MSRCPSR,R0;傳送R0的內(nèi)容到CPSRMSRSPSR,R0;傳送R0的內(nèi)容到SPSRMSRCPSR_c,R0;傳送R0的內(nèi)容到SPSR,但僅僅修改CPSR中的控制位域5、加載/存儲指令A(yù)RM微處理器支持加載/存儲指令用于在寄存器和存儲器之間傳送數(shù)據(jù),加載指令用于將存儲器中的數(shù)據(jù)傳送到寄存器,存儲指令則完成相反的操作。常用的加載存儲指令如下:—LDR字?jǐn)?shù)據(jù)加載指令 LDR{條件} 的寄存器,<存儲器地址>LDRR0,[R1] ;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀寄存器R0。LDRR0,[R1,R2] ;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀寄存器R0。LDRR0,[R1,#8] ;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀寄存器R0。LDRR0,[R1,R2]! ;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址R1+R2寫R1。LDRR0,[R1,#8]! ;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址R1+8寫RioLDRR0,[Ri],R2 ;將存儲器地址為Ri的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址R1+R2寫RioLDRR0,[Ri,R2,LSL#2]!;將存儲器地址為Ri+R2×4的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址Ri+R2×4寫RioLDRR0,[Ri],R2,LSL#2;將存儲器地址為Ri的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址Ri+R2×4寫Rio—LDRB字節(jié)數(shù)據(jù)加載指令LDR{條件}B 的寄存器,<存儲器地址>LDRBR0,[Ri] ;將存儲器地址為Ri的字節(jié)數(shù)據(jù)讀寄存器R0,并將R0的24位清零。LDRBR0,[Ri,#8] ;將存儲器地址為Ri+8的字節(jié)數(shù)據(jù)讀寄存器R0,并將R0的24位清零。—LDRH半字?jǐn)?shù)據(jù)加載指令LDR{條件}H 的寄存器,<存儲器地址>LDRHR0,[Ri] ;將存儲器地址為Ri的半字?jǐn)?shù)據(jù)讀寄存器R0,并將R0的i6位清零。LDRHR0,[Ri,#8] ;將存儲器地址為Ri+8的半字?jǐn)?shù)據(jù)讀寄存器R0,并將R0的i6位清零。LDRHR0,[Ri,R2] ;將存儲器地址為Ri+R2的半字?jǐn)?shù)據(jù)讀寄存器R0,并將R0的i6位清零?!猄TR字?jǐn)?shù)據(jù)存儲指令 STR{條件}源寄存器,〈存儲器地址>STRR0,[Ri],#8 ;將R0中的字?jǐn)?shù)據(jù)寫以Ri為地址的存儲器中,并將新地址Ri+8寫RioSTRR0,[Ri,#8] ;將R0中的字?jǐn)?shù)據(jù)寫以Ri+8為地址的存儲器中?!猄TRB字節(jié)數(shù)據(jù)存儲指令STR{條件}B源寄存器,〈存儲器地址>STRBR0,[Ri] ;將寄存器R0中的字節(jié)數(shù)據(jù)寫以Ri為地址的存儲器中。STRBR0,[Ri,#8];將寄存器R0中的字節(jié)數(shù)據(jù)寫以Ri+8為地址的存儲器中。STRH半字?jǐn)?shù)據(jù)存儲指令STR{條件}H源寄存器,〈存儲器地址>STRHR0,[R1] ;將寄存器R0中的半字?jǐn)?shù)據(jù)寫以R1為地址的存儲器中。STRHR0,[R1,#8] ;將寄存器R0中的半字?jǐn)?shù)據(jù)寫以R1+8為地址的存儲器中。6、批量數(shù)據(jù)加載/存儲指令A(yù)RM微處理器所支持批量數(shù)據(jù)加載/存儲指令可以一次在一片連續(xù)的存儲器單元和多個寄存器之間傳送數(shù)據(jù),批量加載指令用于將一片連續(xù)的存儲器中的數(shù)據(jù)傳送到多個寄存器,批量數(shù)據(jù)存儲指令則完成相反的操作。常用的加載存儲指令如下:LDM批量數(shù)據(jù)加載指令STM批量數(shù)據(jù)存儲指令LDM(或STM)指令LDM(或STM)指令的格式為:LDM(或STM){條件}{類型}基址寄存器{!},寄存器列表{∧}LDM(或STM)指令于從由基址寄存器所指的 連續(xù)存儲器到寄存器列表所指的多個寄存器之間傳送數(shù)據(jù),該指令的常見用途是將多個寄存器的內(nèi)容入?;虺鰲?。其中,{類型}為以下幾種情況:IA每次傳送后地址加1;IB每次傳送前地址加1;DA每次傳送后地址減1;DB每次傳送前地址減1;FD滿遞減堆棧;ED空遞減堆棧;FA滿遞增堆棧;EA空遞增堆棧;{!}為可選后綴,若選用該后綴,則當(dāng)數(shù)據(jù)傳送完畢之后,將最后的地址寫入基址寄存器,否則基址寄存器的內(nèi)容不改變?;芳拇嫫鞑辉试S為RIS,寄存器列表可以為R0R15的任意組合。{∧}為可選后綴,當(dāng)指令為LDM且寄存器列表中包含R15,選該后綴時表:除了正常的數(shù)據(jù)傳送之外,還將SPSR復(fù)制到CPSR。同時,該后綴還表傳或傳出的是戶模式下的寄存器,而不是當(dāng)前模式下的寄存器。STMFDR13!,{R0,R4-R12,LR};將寄存器列表中的寄存器(R0,R4到R12,LR)存堆棧。LDMFDR13!,{R0,R4-R12,PC};將堆棧內(nèi)容恢復(fù)到寄存器(R0,R4到R12,LR)。7、數(shù)據(jù)交換指令A(yù)RM微處理器所支持?jǐn)?shù)據(jù)交換指令能在存儲器和寄存器之間交換數(shù)據(jù)。數(shù)據(jù)交換指令有如下兩條:SWP字?jǐn)?shù)據(jù)交換指令 SWP{條件} 的寄存器,源寄存器1,[源寄存器2]SWPR0,R1,[R2];將R2所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到R0,同時將R1中的字?jǐn)?shù)據(jù)傳送到R2所指向的存儲單元。SWPR0,R0,[R1];該指令完成將R1所指向的存儲器中的字?jǐn)?shù)據(jù)與R0中的字?jǐn)?shù)據(jù)交換。SWPB字節(jié)數(shù)據(jù)交換指令SWP{條件}B 的寄存器,源寄存器1,[源寄存器2]SWPBR0,R1,[R2];將R2所指向的存儲器中的字節(jié)數(shù)據(jù)傳送到R0,R0的24位清零,同時將R1中的低8位數(shù)據(jù)傳送到R2所指向的存儲單元。SWPBR0,R0,[R1];該指令完成將R1所指向的存儲器中的字節(jié)數(shù)據(jù)與R0中的低8位數(shù)據(jù)交換。8、移位指令A(yù)RM微處理器內(nèi)嵌的桶型移位器(BarrelShifter), 持?jǐn)?shù)據(jù)的各種移位操作,移位操作在ARM指令集中不作為單獨(dú)的指令使用,它只能作為指令格式中是一個字段,在匯編語言中表示為指令中的選項(xiàng)。例如,數(shù)據(jù)處理指令的第二個操作數(shù)為寄存器時,就可以加入移位操作選項(xiàng)對它進(jìn)行各種移位操作。移位操作包括如下6種類型,ASL和LSL是等價的,可以由互換:LSL邏輯左移 通寄存器,LSL(或ASL)操作數(shù)MOVR0,R1,LSL#2;將R1中的內(nèi)容左移兩位后傳送到R0中。LSR邏輯右移 通寄存器,LSR操作數(shù)MOVR0,R1,LSR#2;將R1中的內(nèi)容右移兩位后傳送到R0中,左端零來填充ASR算術(shù)右移 通寄存器,ASR操作數(shù)MOVR0,R1,ASR#2;將R1中的內(nèi)容右移兩位后傳送到R0中,左端第31位的值來填充ASL算術(shù)左移 通寄存器,ASR操作數(shù)MOVR0,R1,ASL#2;將R1中的內(nèi)容右移兩位后傳送到R0中,右端第2位的值來填充ROR循環(huán)右移 通寄存器,ROR操作數(shù)MOVR0,R1,ROR#2;將R1中的內(nèi)容循環(huán)右移兩位后傳送到R0中。RRX帶擴(kuò)展的循環(huán)右移 通寄存器,RRX操作數(shù)MOVR0,R1,RRX#2;將R1中的內(nèi)容進(jìn)行帶擴(kuò)展的循環(huán)右移兩位后傳送到R0中。9、協(xié)處理器指令A(yù)RM微處理器可支持多達(dá)16個協(xié)處理器,用于各種協(xié)處理操作,在程序執(zhí)行的過程中,每個協(xié)處理器只執(zhí)行針對 的協(xié)處理指令,忽略ARM處理器和其他協(xié)處理器的指令。ARM的協(xié)處理器指令主要于ARM處理器初始化ARM協(xié)處理器的數(shù)據(jù)處理操作,以及在ARM處理器的寄存器和協(xié)處理器的寄存器之間傳送數(shù)據(jù),和在ARM協(xié)處理器的寄存器和存儲器之間傳送數(shù)據(jù)。ARM協(xié)處理器指令包括以下5條:CDP協(xié)處理器數(shù)操作指令LDC協(xié)處理器數(shù)據(jù)加載指令STC協(xié)處理器數(shù)據(jù)存儲指令MCRARM處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令MRC協(xié)處理器寄存器到ARM處理器寄存器的數(shù)據(jù)傳送指令--CDP指令CDP指令的格式為:CDP{條件}協(xié)處理器編碼,協(xié)處理器操作碼1, 的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。CDP指令于ARM處理器通知ARM協(xié)處理器執(zhí)行特定的操作,若協(xié)處理器不能成功完成特定的操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作, 的寄存器和源寄存器均為協(xié)處理器的寄存器,指令不涉及ARM處理器的寄存器和存儲器。指令示例:CDPP3,2,C12,C10,C3,4;該指令完成協(xié)處理器P3的初始化---LDC指令LDC指令的格式為:LDC{條件}{L}協(xié)處理器編碼,的寄存器,[源寄存器]LDC指令用于將源寄存器所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到目的寄存器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)未定義指令異常。其中,{L}選項(xiàng)表指令為長讀取操作,如于雙精度數(shù)據(jù)的傳輸。指令示例:LDCP3,C4,[R0];將ARM處理器的寄存器R0所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器P3的寄存器C4中。---STC指令STC指令的格式為:STC{條件}{L}協(xié)處理器編碼,源寄存器,[的寄存器]STC指令用于將源寄存器中的字?jǐn)?shù)據(jù)傳送到目的寄存器所指向的存儲器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)未定義指令異常。其中,{L}選項(xiàng)表指令為長讀取操作,如于雙精度數(shù)據(jù)的傳輸。指令示例:STCP3,C4,[R0];將協(xié)處理器P3的寄存器C4中的字?jǐn)?shù)據(jù)傳送到ARM處理器的寄存器R0所指向的存儲器中。---MCR指令MCR指令的格式為:MCR{條件}協(xié)處理器編碼,協(xié)處理器操作碼1,源寄存器, 的寄存器1, 的寄存器2,協(xié)處理器操作碼2。MCR指令于將ARM處理器寄存器中的數(shù)據(jù)傳送到協(xié)處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作,源寄存器為ARM處理器的寄存器, 的寄存器1和的寄存器2均為協(xié)處理器的寄存器。指令示例:MCRP3,3,R0,C4,C5,6;該指令將ARM處理器寄存器R0中的數(shù)據(jù)傳送到協(xié)處理器P3的寄存器C4和C5中。---MRC指令MRC指令的格式為:MRC{條件}協(xié)處理器編碼,協(xié)處理器操作碼1, 的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。MRC指令于將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作, 的寄存器為ARM處理器的寄存器,源寄存器1和源寄存器2均為協(xié)處理器的寄存器。指令示例:MRCP3,3,R0,C4,C5,6;該指令將協(xié)處理器P3的寄存器中的數(shù)據(jù)傳送到ARM處理器寄存器10、異常產(chǎn)生指令A(yù)RM微處理器所支持的異常指令有如下兩條:SWI軟件中斷指令BKPT斷點(diǎn)中斷指令--SWI指令SWI指令的格式為:SWI{條件}24位的立即數(shù)SWI指令于產(chǎn)軟件中斷,以便戶程序能調(diào)操作系統(tǒng)的系統(tǒng)例程。操作系統(tǒng)在SWI的異常處理程序中提供相應(yīng)的系統(tǒng)服務(wù),指
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校工作計(jì)劃
- 閉門器配件行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 四年級的科學(xué)教學(xué)工作計(jì)劃
- 倉管的實(shí)習(xí)自我總結(jié)十篇
- 中秋節(jié)活動策劃方案范文錦集六篇
- 三年級數(shù)學(xué)教師自我鑒定
- 初中語文課前演講稿10篇
- 生活中的美初中作文600字【5篇】
- 有關(guān)晚會策劃方案范文匯編5篇
- 旅游社實(shí)習(xí)報(bào)告四篇
- Unit 1 Art Using Language (教案)-高中英語人教版(2019)·選擇性必修第三冊
- 2023-2024學(xué)年鞍山市重點(diǎn)中學(xué)高一上數(shù)學(xué)期末質(zhì)量檢測試題含解析
- 基于PLC的自動打鈴控制器
- 中式烹調(diào)技藝教案
- 招標(biāo)代理及政府采購常識匯編
- 人工智能引論智慧樹知到課后章節(jié)答案2023年下浙江大學(xué)
- 醫(yī)保按病種分值付費(fèi)(DIP)院內(nèi)培訓(xùn)
- 國開2023秋《藥劑學(xué)》形考任務(wù)1-3參考答案
- 釣魚比賽招商方案范本
- 橋梁竣工施工總結(jié)
- 組態(tài)技術(shù)及應(yīng)用學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
評論
0/150
提交評論