




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、西安電子科技大學(xué)計算機學(xué)院2西安電子科技大學(xué)計算機學(xué)院3數(shù)據(jù)處理指令數(shù)據(jù)處理指令load/store指令指令跳轉(zhuǎn)指令跳轉(zhuǎn)指令CPSR處理指令處理指令異常產(chǎn)生指令異常產(chǎn)生指令協(xié)處理器指令協(xié)處理器指令西安電子科技大學(xué)計算機學(xué)院4數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(2條)條)算術(shù)運算指令(算術(shù)運算指令(6條)條)邏輯運算指令(邏輯運算指令(4條)條)比較指令(比較指令(2條)條)測試指令(測試指令(2條)條)乘法指令(乘法指令(6條)條)西安電子科技大學(xué)計算機學(xué)院5MOV指令指令 qMOV指令的格式為: MOV條件條件S 目的寄存器,源操作數(shù)目的寄存器,源操作數(shù)qMOV指令可完成從另一個寄存器、被移位的寄存
2、器或?qū)⒁粋€立即數(shù)加載到目的寄存器。其中S選項決定指令的操作是否影響CPSR中條件標志位的值,當沒有S時指令不更新CPSR中條件標志位的值。指令示例:MOV R1,R0MOV R1,R0,LSL 3西安電子科技大學(xué)計算機學(xué)院6MVN指令指令 qMVN指令的格式為:MVN條件條件S 目的寄存器,源操作數(shù)目的寄存器,源操作數(shù)qMVN指令可完成從另一個寄存器、被移位的寄存器、或?qū)⒁粋€立即數(shù)加載到目的寄存器。與MOV指令不同之處是在傳送之前按位被取反了,即把一個被取反的值傳送到目的寄存器中。其中S決定指令的操作是否影響CPSR中條件標志位的值,當沒有S時指令不更新CPSR中條件標志位的值。指令示例:MV
3、N R0,0西安電子科技大學(xué)計算機學(xué)院7ADD指令指令 qADD指令的格式為: ADD條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qADD指令用于把兩個操作數(shù)相加,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。q指令示例:ADD R0,R1,R2 ADD R0,R1,#256 ADD R0,R2,R3,LSL#1 西安電子科技大學(xué)計算機學(xué)院8ADC指令指令 qADC指令的格式為: ADC條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qADC指令用于把兩個操作數(shù)相加,再加上CPSR中的C條
4、件標志位的值,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。q以下指令序列完成兩個128位數(shù)的加法,第一個數(shù)存放在寄存器R7R4,第二個數(shù)存放在寄存器R11R8,運算結(jié)果存放在寄存器R3R0:ADDS R0,R4,R8 ; 加低端的字ADCS R1,R5,R9 ; 加第二個字,帶進位ADCS R2,R6,R10 ; 加第三個字,帶進位ADC R3,R7,R11 ; 加第四個字,帶進位 西安電子科技大學(xué)計算機學(xué)院9SUB指令指令 qSUB指令的格式為: SUB條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qSUB
5、指令用于把操作數(shù)1減去操作數(shù)2,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。q指令示例:SUB R0,R1,R2 ; R0 = R1 - R2SUB R0,R1,#256 ; R0 = R1 - 256SUB R0,R2,R3,LSL#1 ; R0 = R2 - (R3 1) 西安電子科技大學(xué)計算機學(xué)院10SBC指令指令 qSBC指令的格式為: SBC條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qSBC指令用于把操作數(shù)1減去操作數(shù)2,再減去CPSR中的C條件標志位的
6、非,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。q以下指令序列實現(xiàn)64減法(R1,R0)-(R3,R2)SUBS R0,R0,R2 SBCR1,R1,R3西安電子科技大學(xué)計算機學(xué)院11RSB指令指令 qRSB指令的格式為: RSB條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qRSB指令稱為逆向減法指令,用于把操作數(shù)2減去操作數(shù)1,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。指令示例:RSB R0,R1,R2 RSB R0,R1,#256 RSB
7、 R0,R2,R3,LSL#1西安電子科技大學(xué)計算機學(xué)院12RSC指令指令 qRSC指令的格式為: RSC條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qRSC指令用于把操作數(shù)2減去操作數(shù)1,再減去CPSR中的C條件標志位,并將結(jié)果存放到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令使用進位標志來表示借位,這樣就可以做大于32位的減法。q下列指令實現(xiàn)64位數(shù)據(jù)的負數(shù)RSBS R2,R0,#0RSC R3,R1,#0 西安電子科技大學(xué)計算機學(xué)院13AND指令指令 qAND指令的格式為: AND條件條件S 目的寄存器,操作
8、數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qAND指令用于在兩個操作數(shù)上進行邏輯與運算,并把結(jié)果放置到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于屏蔽操作數(shù)1的某些位。例如:AND R0,R0,3 ;將高位屏蔽(取出低位)西安電子科技大學(xué)計算機學(xué)院14ORR指令指令 qORR指令的格式為: ORR條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qORR指令用于在兩個操作數(shù)上進行邏輯或運算,并把結(jié)果放置到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于設(shè)置操作
9、數(shù)1的某些位。例如:ORR R0,R0,3 ;將低位置位西安電子科技大學(xué)計算機學(xué)院15EOR指令指令 qEOR指令的格式為: EOR條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qEOR指令用于在兩個操作數(shù)上進行邏輯異或運算,并把結(jié)果放置到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于反轉(zhuǎn)操作數(shù)1的某些位。例如:EOR R0,R0,3 西安電子科技大學(xué)計算機學(xué)院16BIC指令指令 qBIC指令的格式為: BIC條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qBIC指令用于清除操作數(shù)1的某些位
10、,并把結(jié)果放置到目的寄存器中。操作數(shù)1應(yīng)是一個寄存器,操作數(shù)2可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。操作數(shù)2為32位的掩碼,如果在掩碼中設(shè)置了某一位,則清除這一位。未設(shè)置的掩碼位保持不變。例如:BIC R0,R0,3;清除低兩位西安電子科技大學(xué)計算機學(xué)院17CMP指令指令 qCMP指令的格式為: CMP條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2qCMP指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進行比較,同時無條件更新CPSR中條件標志位的值。該指令進行一次減法運算,但不存儲結(jié)果,只更改條件標志位。標志位表示的是操作數(shù)1與操作數(shù)2的關(guān)系(大、小、相等),例如,當操作數(shù)1大于
11、操作操作數(shù)2,則此后的有GT后綴的指令將可以執(zhí)行。例如:CMP R1,R0CMP R1,100西安電子科技大學(xué)計算機學(xué)院18CMN指令指令 qCMN指令的格式為: CMN條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2qCMN指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)取補后進行比較,同時無條件更新CPSR中條件標志位的值。該指令實際完成操作數(shù)1和操作數(shù)2相加,并根據(jù)結(jié)果更改條件標志位。例如:CMN R1,R0CMN R1,100西安電子科技大學(xué)計算機學(xué)院19TST指令指令 qTST指令的格式為: TST條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2qTST指令用于把一個寄存器的內(nèi)容和另一個寄
12、存器的內(nèi)容或立即數(shù)進行按位的與運算,并根據(jù)運算結(jié)果無條件更新CPSR中條件標志位的值。操作數(shù)1是要測試的數(shù)據(jù),而操作數(shù)2是一個位掩碼,該指令一般用來檢測是否設(shè)置了特定的位。TSTR1,1TSTR1,0 xffe西安電子科技大學(xué)計算機學(xué)院20TEQ指令指令 qTEQ指令的格式為: TEQ條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2qTEQ指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進行按位的異或運算,并根據(jù)運算結(jié)果無條件更新CPSR中條件標志位的值。該指令通常用于比較操作數(shù)1和操作數(shù)2是否相等。例如:TEQ R1,R2西安電子科技大學(xué)計算機學(xué)院21MUL32位乘法指令位乘法指令MLA32
13、位乘加指令位乘加指令SMULL64位有符號數(shù)乘法指令位有符號數(shù)乘法指令SMLAL64位有符號數(shù)乘加指令位有符號數(shù)乘加指令UMULL64位無符號數(shù)乘法指令位無符號數(shù)乘法指令UMLAL64位無符號數(shù)乘加指令位無符號數(shù)乘加指令 西安電子科技大學(xué)計算機學(xué)院22MUL指令指令 qMUL指令的格式為: MUL條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2qMUL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位放置到目的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)或無符號數(shù)。例如:MULR0,R1,R2MULSR0
14、,R1,R2西安電子科技大學(xué)計算機學(xué)院23MLA指令指令 qMLA指令的格式為: MLA條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2,操,操 作數(shù)作數(shù)3qMLA指令完成將操作數(shù)1與操作數(shù)2的乘法運算,再將乘積加上操作數(shù)3,并把結(jié)果的低32位放置到目的寄存器中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)或無符號數(shù)。例如:MLAR0,R1,R2,R3MLASR0,R1,R2,R3西安電子科技大學(xué)計算機學(xué)院24SMULL指令指令qSMULL指令格式為: SMULL條件條件S目的寄存器目的寄存器Low,目的寄存器,目的寄存器
15、High,操作數(shù),操作數(shù)1,操作數(shù),操作數(shù)2qSMULL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位放置到目的寄存器Low中,結(jié)果的高32位放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)。例如:SMULL R0,R1,R2,R3;R0(Low32)(R2R3)Low32 ;R1(High32)(R2R3)High32西安電子科技大學(xué)計算機學(xué)院25SMLAL指令指令qSMLAL指令的格式為: SMLAL條件條件S目的寄存器目的寄存器Low,目的寄存器,目的寄存器High,操作,操作數(shù)數(shù)1,操作數(shù),操作數(shù)2
16、qSMLAL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,結(jié)果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的有符號數(shù)。q對于目的寄存器Low,在指令執(zhí)行前存放64位加數(shù)的低32位,指令執(zhí)行后存放結(jié)果的低32位。對于目的寄存器High,在指令執(zhí)行前存放64位加數(shù)的高32位,指令執(zhí)行后存放結(jié)果的高32位。西安電子科技大學(xué)計算機學(xué)院26UMULL指令指令qUMULL指令的格式為: UMULL條件條件S目的寄存器目的寄存
17、器Low,目的寄存器,目的寄存器High,操作數(shù),操作數(shù)1,操作數(shù),操作數(shù)2 qUMULL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位放置到目的寄存器Low中,結(jié)果的高32位放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的無符號數(shù)。例如:UMULL R0,R1,R2,R3;R0(Low32)(R2R3)Low32 ;R1(High32)(R2R3)High32西安電子科技大學(xué)計算機學(xué)院27UMLAL指令指令qUMLAL指令的格式為: UMLAL條件條件S 目的寄存器目的寄存器Low,目的寄存器,目的寄存器High
18、,操作,操作數(shù)數(shù)1,操作數(shù),操作數(shù)2 qUMLAL指令完成將操作數(shù)1與操作數(shù)2的乘法運算,并把結(jié)果的低32位同目的寄存器Low中的值相加后又放置到目的寄存器Low中,結(jié)果的高32位同目的寄存器High中的值相加后又放置到目的寄存器High中,同時可以根據(jù)運算結(jié)果設(shè)置CPSR中相應(yīng)的條件標志位。其中,操作數(shù)1和操作數(shù)2均為32位的無符號數(shù)。q對于目的寄存器Low,在指令執(zhí)行前存放64位加數(shù)的低32位,指令執(zhí)行后存放結(jié)果的低32位。對于目的寄存器High,在指令執(zhí)行前存放64位加數(shù)的高32位,指令執(zhí)行后存放結(jié)果的高32位。西安電子科技大學(xué)計算機學(xué)院28ARM微處理器支持加載微處理器支持加載(Loa
19、d)/存儲存儲(Store)指令用于在寄存指令用于在寄存器和存儲器之間傳送數(shù)據(jù)。器和存儲器之間傳送數(shù)據(jù)。q單寄存器存取指令 LDR字數(shù)據(jù)加載指令 LDRB字節(jié)數(shù)據(jù)加載指令 LDRH半字數(shù)據(jù)加載指令 STR字數(shù)據(jù)存儲指令 STRB字節(jié)數(shù)據(jù)存儲指令 STRH半字數(shù)據(jù)存儲指令q多寄存器存取指令 LDM批量數(shù)據(jù)加載指令 STM批量數(shù)據(jù)存儲指令q存儲器和寄存器交換指令 SWP/ SWPB西安電子科技大學(xué)計算機學(xué)院29LDR指令指令qLDR指令的格式為: LDR條件條件 目的寄存器,目的寄存器, qLDR指令用于從存儲器中將一個32位的字數(shù)據(jù)傳送到目的寄存器中。該指令通常用于從存儲器中讀取32位的字數(shù)據(jù)到
20、通用寄存器,然后對數(shù)據(jù)進行處理。例如:LDR R0,R1 ;將內(nèi)存單元R1中的字讀取到R0寄存器中LDR R0,R1,R2 ;將內(nèi)存單元R1R2中的字讀取到R0寄存器中LDR R0,R1,8 ;將內(nèi)存單元R1+8中的字讀取到R0寄存器中LDR R0,R1,R2??;將內(nèi)存單元R1+R2中的字讀取到R0寄存器中,同時R1R1+R2西安電子科技大學(xué)計算機學(xué)院30LDRB指令指令 qLDRB指令的格式為: LDR條件條件B 目的寄存器,目的寄存器,qLDRB指令用于從存儲器中將一個8位的字節(jié)數(shù)據(jù)傳送到目的寄存器中,同時將寄存器的高24位清零。該指令通常用于從存儲器中讀取8位的字節(jié)數(shù)據(jù)到通用寄存器,然后
21、對數(shù)據(jù)進行處理。 LDRB R0,R1 ;將內(nèi)存單元R1中的字節(jié)讀取到R0 寄存器中,R0中高24位設(shè)置為0LDRB R0,R1,8 ;將內(nèi)存單元R18中的字節(jié) 讀取到R0寄存器中,R0中高24位設(shè)置為0西安電子科技大學(xué)計算機學(xué)院31LDRH指令指令qLDRH指令的格式為: LDR條件條件H 目的寄存器,目的寄存器,qLDRH指令用于從存儲器中將一個16位的半字數(shù)據(jù)傳送到目的寄存器中,同時將寄存器的高16位清零。該指令通常用于從存儲器中讀取16位的半字數(shù)據(jù)到通用寄存器,然后對數(shù)據(jù)進行處理。LDRH R0,R1;將內(nèi)存單元R1中的半字(16位)數(shù)據(jù)讀取到R0寄存器中,R0中高16位設(shè)置為0LDR
22、H R0,R1,8;將內(nèi)存單元R18中的半字(16位)數(shù)據(jù)讀取到R0寄存器中,R0中高16位設(shè)置為0LDRH R0,R1,R2;將內(nèi)存單元R1R2中的半字(16位)數(shù)據(jù)讀取到R0寄存器中,R0中高16位設(shè)置為0 西安電子科技大學(xué)計算機學(xué)院32STR指令指令qSTR指令的格式為: STR條件條件 源寄存器,源寄存器,qSTR指令用于從源寄存器中將一個32位的字數(shù)據(jù)傳送到存儲器中。該指令在程序設(shè)計中比較常用,且尋址方式靈活多樣,使用方式可參考指令LDR。STRR0,R1,8 ;將R0的字數(shù)據(jù)保存到內(nèi)存單元R1中,同時R1R1+8(后變)STRR0,R1,8 ;將R0的字數(shù)據(jù)保存到內(nèi)存單元R1+8中
23、(前變)西安電子科技大學(xué)計算機學(xué)院33STRB指令指令qSTRB指令的格式為: STR條件條件B 源寄存器,源寄存器,qSTRB指令用于從源寄存器中將一個8位的字節(jié)數(shù)據(jù)傳送到存儲器中。該字節(jié)數(shù)據(jù)為源寄存器中的低8位。STRBR0,R1 ;將R0的低8位數(shù)據(jù)保存到內(nèi)存單元R1中STRBR0,R1,8 ;將R0的低8位數(shù)據(jù)保存到內(nèi)存單元R1中 西安電子科技大學(xué)計算機學(xué)院34STRH指令指令qSTRH指令的格式為: STR條件條件H 源寄存器,源寄存器,qSTRH指令用于從源寄存器中將一個16位的半字數(shù)據(jù)傳送到存儲器中。該半字數(shù)據(jù)為源寄存器中的低16位。STRHR0,R1 ;將R0中的16位的半字數(shù)
24、據(jù)保存到內(nèi)存單元R1中STRHR0,R1,8 ;將R0中的16位的半字數(shù)據(jù)保存到內(nèi)存單元R18中 西安電子科技大學(xué)計算機學(xué)院35LDR/STR指令的尋址方式指令的尋址方式q基址尋址q變址尋址變址尋址靈活多變,需要認真掌握變址尋址靈活多變,需要認真掌握西安電子科技大學(xué)計算機學(xué)院36批量數(shù)據(jù)加載批量數(shù)據(jù)加載(LDM)/存儲存儲(STM)內(nèi)存訪問內(nèi)存訪問指令指令 qARM微處理器所支持批量數(shù)據(jù)加載/存儲指令可以一次在一片連續(xù)的存儲器單元和多個寄存器之間傳送數(shù)據(jù)。批量數(shù)據(jù)加載指令(LDM)用于將一片連續(xù)的存儲器中的數(shù)據(jù)傳送到多個寄存器,批量數(shù)據(jù)存儲指令(STR) 則完成相反的操作。qIA、IB、DA、
25、DBqFD、ED、FA、EA西安電子科技大學(xué)計算機學(xué)院37STM指令指令qSTM指令的格式為: STM條件條件類型類型 基址寄存器基址寄存器!,寄存器列,寄存器列表表qSTM指令用于將寄存器列表所指示的多個寄存器數(shù)據(jù)送到由基址寄存器所指示的一片連續(xù)存儲器,該指令的常見用途是將多個寄存器的內(nèi)容入棧。例如:STMFD R0!, r0-r4;將寄存器列表中的寄存器(R1R4)內(nèi)容按照滿遞減的方式存入到R0指示的4個連續(xù)存儲器單元中西安電子科技大學(xué)計算機學(xué)院38LDM指令指令qLDM指令的格式為: LDM條件條件類型類型 基址寄存器基址寄存器!,寄存器列,寄存器列表表qLDM指令用于從由基址寄存器所指
26、示的一片連續(xù)存儲器送字數(shù)據(jù)到寄存器列表所指示的多個寄存器中,該指令的常見用途是將多個寄存器出棧。例如: LDMFD R0!, r1-r4 ;將R0指示的4個連續(xù)存儲器單元的內(nèi)容按照滿遞減的方式送到寄存器列表中的寄存器(R1R4)中西安電子科技大學(xué)計算機學(xué)院39可選后綴可選后綴q!回寫使能標志為可選后綴,若選用該后綴,則當數(shù)據(jù)傳送完畢之后,將最后的地址寫入基址寄存器,否則基址寄存器的內(nèi)容不改變。q為可選后綴,當指令為LDM,且寄存器列表中包含R15,選用該后綴時表示:除了正常的數(shù)據(jù)傳送之外,還將SPSR復(fù)制到CPSR。 西安電子科技大學(xué)計算機學(xué)院40ARM微處理器所支持數(shù)據(jù)交換指令能在存微處理器
27、所支持數(shù)據(jù)交換指令能在存儲器和寄存器之間交換數(shù)據(jù)。數(shù)據(jù)交換指儲器和寄存器之間交換數(shù)據(jù)。數(shù)據(jù)交換指令主要用于實現(xiàn)信號量操作,信號量用于令主要用于實現(xiàn)信號量操作,信號量用于進程間的同步與互斥。進程間的同步與互斥。 西安電子科技大學(xué)計算機學(xué)院41SWP指令指令qSWP指令的格式為: SWP條件條件 目的寄存器,源寄存器目的寄存器,源寄存器1,源寄存器源寄存器2qSWP指令用于將源寄存器2所指向的存儲器中的字數(shù)據(jù)傳送到目的寄存器中,同時將源寄存器1中的字數(shù)據(jù)傳送到源寄存器2所指向的存儲器中。顯然,當源寄存器1和目的寄存器為同一個寄存器時,指令交換該寄存器和存儲器的內(nèi)容。SWP R0,R1,R2 ;R0
28、R2,R2R1SWP R0,R0,R2 ;R0(目的)R2,R2 R0(源) 即實現(xiàn)了寄存器R0的內(nèi)容與存 儲器地址R2的內(nèi)容的交換西安電子科技大學(xué)計算機學(xué)院42SEMEQU 0 x40003000SEM_WAITMOVR1, #0LDR R0, = SEMSWP R1, R1, R0 ;取出信號量,并設(shè)置其為0CMP R1, #0 ;判斷是否有信號BEQ SEM_WAIT ;若沒有,則等待西安電子科技大學(xué)計算機學(xué)院43ARM中實現(xiàn)程序跳轉(zhuǎn)中實現(xiàn)程序跳轉(zhuǎn)q直接向PC寄存器寫入目標地址值q跳轉(zhuǎn)指令實現(xiàn)向向PC寄存器寫入目標地址值寄存器寫入目標地址值q可實現(xiàn)4GB地址空間的任意跳轉(zhuǎn)跳轉(zhuǎn)指令可以完成
29、從當前指令向前或向后跳轉(zhuǎn)指令可以完成從當前指令向前或向后的的32MB的地址空間的跳轉(zhuǎn),包括的地址空間的跳轉(zhuǎn),包括 :qB 跳轉(zhuǎn)指令qBL帶返回的跳轉(zhuǎn)指令qBX帶狀態(tài)切換的跳轉(zhuǎn)指令qBLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令西安電子科技大學(xué)計算機學(xué)院44B指令指令qB指令的格式為: B條件條件 目標地址目標地址qB指令是最簡單的跳轉(zhuǎn)指令。一旦遇到一個B指令,ARM 處理器將立即跳轉(zhuǎn)到給定的目標地址,從那里繼續(xù)執(zhí)行。注意存儲在跳轉(zhuǎn)指令中的實際值是相對當前PC值的一個偏移量,而不是一個絕對地址,它的值由匯編器來計算。它是24位有符號數(shù),左移兩位后有符號擴展為 32 位,表示的有效偏移為 26 位(前后32MB
30、的地址空間)。如:B Label /*程序無條件跳轉(zhuǎn)到標號Label處執(zhí)行*/西安電子科技大學(xué)計算機學(xué)院45BL指令指令qBL指令的格式為: BL條件條件目標地址目標地址qBL是另一個跳轉(zhuǎn)指令,但跳轉(zhuǎn)之前,會在寄存器R14中保存PC的當前內(nèi)容,因此,可以通過將R14的內(nèi)容重新加載到PC中,來返回到跳轉(zhuǎn)指令之后的那個指令處執(zhí)行。該指令是實現(xiàn)子程序調(diào)用的一個基本但常用的手段。例如:BLLabel/*當程序無條件跳轉(zhuǎn)到標號Label處執(zhí)行時,同時將當前的PC值保存到R14中 */ 西安電子科技大學(xué)計算機學(xué)院46BX指令指令qBX指令的格式為: BX條件條件 目標地址目標地址qBX指令跳轉(zhuǎn)到指令中所指
31、定的目標地址,目標地址處的指令既可以是ARM指令,也可以是Thumb指令。因此,當前處理器工作狀態(tài)使用Thumb指令集時,通過BX指令可使當前處理器工作狀態(tài)切換到ARM指令集運行狀態(tài),反之亦然。具體狀態(tài)有目標寄存器最低位決定。例如:ADRLR0, ThumbFun+1BXR0;跳轉(zhuǎn)到R0指定的地址,并根據(jù)R0最低位來切換處理器狀態(tài)西安電子科技大學(xué)計算機學(xué)院47BLX指令指令qBLX指令的格式為: BLX 目標地址目標地址qBLX指令從ARM指令集跳轉(zhuǎn)到指令中所指定的目標地址,并將處理器的工作狀態(tài)由ARM狀態(tài)切換到Thumb狀態(tài),該指令同時將PC的當前內(nèi)容保存到寄存器R14中。因此,當子程序使用
32、Thumb指令集,而調(diào)用者使用ARM指令集時,可以通過BLX指令實現(xiàn)子程序的調(diào)用和處理器工作狀態(tài)的切換。同時,子程序的返回可以通過將寄存器R14值復(fù)制到PC中來完成。 西安電子科技大學(xué)計算機學(xué)院48ARM微處理器支持程序狀態(tài)寄存器(微處理器支持程序狀態(tài)寄存器(PSR)訪問指令,用于在程序狀態(tài)寄存器訪問指令,用于在程序狀態(tài)寄存器(CPSR/SPSR)和通用寄存器之間傳送數(shù)據(jù),和通用寄存器之間傳送數(shù)據(jù),程序狀態(tài)寄存器訪問指令包括以下兩條:程序狀態(tài)寄存器訪問指令包括以下兩條:qMRS 狀態(tài)寄存器的內(nèi)容讀取到通用寄存器(RnCPSR/SPSR)qMSR 立即數(shù)或通用寄存器內(nèi)容寫到狀態(tài)寄存器的指定區(qū)域(
33、CPSR/SPSRRn)西安電子科技大學(xué)計算機學(xué)院49MRS指令的格式為:指令的格式為:MRS條件條件 通用寄存器,程序狀態(tài)寄存器(通用寄存器,程序狀態(tài)寄存器(CPSR或或SPSR)MRS指令用于將程序狀態(tài)寄存器的內(nèi)容傳送到通指令用于將程序狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。例如:用寄存器中。例如:MRSR0,CPSR;R0CPSRMRSR0,SPSR;R0SPSR該指令一般用在以下幾種情況:該指令一般用在以下幾種情況: q當需要改變程序狀態(tài)寄存器的內(nèi)容時,可用MRS將程序狀態(tài)寄存器的內(nèi)容讀入通用寄存器,修改后再寫回程序狀態(tài)寄存器。q當在異常處理或進程切換時,需要保存程序狀態(tài)寄存器的值,可先用
34、該指令讀出程序狀態(tài)寄存器的值,然后保存。 西安電子科技大學(xué)計算機學(xué)院50MSR指令的格式為:指令的格式為: MSR條件條件程序狀態(tài)寄存器(程序狀態(tài)寄存器(CPSR或或SPSR)_,操作數(shù),操作數(shù)MSR指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的特定域中。其中,操作數(shù)可以為通用寄存存器的特定域中。其中,操作數(shù)可以為通用寄存器或立即數(shù)。器或立即數(shù)。MSR指令的形式如下:指令的形式如下:qMSR cond _, #immed_8rqMSR cond _, Rm西安電子科技大學(xué)計算機學(xué)院51其中其中:用于設(shè)置程序狀態(tài)寄存器中需要操作的用于設(shè)置程序狀態(tài)寄存器中需要操
35、作的位位 (4個域)個域)qc位7:0為控制位域,用c表示;qx位15:8為擴展位域,用x表示; qs位23:16為狀態(tài)位域,用s表示; qf位31:24為條件標志位域,用f表示;q例如:MSRCPSR,R0;CPSRR0MSRCPSR_c,R0;CPSR_cR0,僅改變CPSR的控制域即位7:0西安電子科技大學(xué)計算機學(xué)院52ARM微處理器所支持的異常指令有如下兩微處理器所支持的異常指令有如下兩條:條:qSWI軟件中斷指令qBKPT斷點中斷指令 (ARMv5以上)西安電子科技大學(xué)計算機學(xué)院53SWI指令指令 qSWI指令的格式為: SWI條件條件 24位的立即數(shù)位的立即數(shù)qSWI指令用于產(chǎn)生軟
36、件中斷,以便用戶程序能調(diào)用操作系統(tǒng)的系統(tǒng)例程。操作系統(tǒng)在SWI的異常處理程序中提供相應(yīng)的系統(tǒng)服務(wù),指令中24位的立即數(shù)指定用戶程序調(diào)用系統(tǒng)例程的類型,相關(guān)參數(shù)通過通用寄存器傳遞,當指令中24位的立即數(shù)被忽略時,用戶程序調(diào)用系統(tǒng)例程的類型由通用寄存器R0的內(nèi)容決定,同時,參數(shù)通過其他通用寄存器傳遞。例如: SWI 0 x02 ; 西安電子科技大學(xué)計算機學(xué)院54BKPT指令指令qBKPT指令的格式為: BKPT 16位的立即數(shù)位的立即數(shù)qBKPT指令產(chǎn)生軟件斷點中斷,可用于程序的調(diào)試。 西安電子科技大學(xué)計算機學(xué)院55數(shù)據(jù)操作指令數(shù)據(jù)操作指令數(shù)據(jù)存取指令(內(nèi)存協(xié)處理器寄存器)數(shù)據(jù)存取指令(內(nèi)存協(xié)處理器寄存器)數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(ARM寄存器協(xié)處理器寄寄存器協(xié)處理器寄存器)存器)西安電子科技大學(xué)計算機學(xué)院56CDP指令指令qCDP指令的格式為: CDP條件條件 協(xié)處理器編碼,協(xié)處理器操作碼協(xié)處理器編碼,協(xié)處理器操作碼
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目執(zhí)行成果回顧與反思報告
- 醫(yī)院國慶節(jié)活動策劃方案
- 2024年醫(yī)護管理通訊裝置項目投資申請報告代可行性研究報告
- 2024年高精度數(shù)字測溫儀表項目資金需求報告
- 2025山東港口醫(yī)養(yǎng)健康管理集團應(yīng)屆畢業(yè)生招聘85人筆試參考題庫附帶答案詳解
- 2025國檢集團西北運營中心特種設(shè)備招聘(23人)筆試參考題庫附帶答案詳解
- 2025年上半年宜春市地方微小金融行業(yè)協(xié)會招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2024福建福州市科技園區(qū)倉山園建設(shè)發(fā)展有限公司招聘1人筆試參考題庫附帶答案詳解
- 2025年上半年安徽黃山祁門縣縣直機關(guān)比選工作人員30人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年螺旋錐齒輪項目建議書
- 項目式學(xué)習(xí)的培訓(xùn)
- 2024年3月30日事業(yè)單位聯(lián)考A類《職業(yè)能力傾向測驗》試題
- 食堂從業(yè)人員晨午檢制度
- 現(xiàn)代家政導(dǎo)論-課件 2.1家庭的認知
- 護理相關(guān)法律法規(guī)
- 2024中國移動公司招聘高頻500題難、易錯點模擬試題附帶答案詳解
- 江蘇省宿遷市2024年中考數(shù)學(xué)試卷含答案
- 河道綜合治理工程施工組織設(shè)計(投標)
- 處方書寫規(guī)范考核試題及答案
- 餐飲配方傳授合同范本
- 22G101三維彩色立體圖集
評論
0/150
提交評論