版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 本章以流行本章以流行ARM處理器為例介紹處理器為例介紹 嵌入式微處理器的指令系統(tǒng)嵌入式微處理器的指令系統(tǒng) ,主要介,主要介 紹紹ARM微處理器的尋址方式以及微處理器的尋址方式以及ARM 指令集、指令集、Thumb和和Thumb-2指令集。指令集。 ARMARM指令集特點(diǎn):指令集特點(diǎn): ARM使用標(biāo)準(zhǔn)的、固定長度的使用標(biāo)準(zhǔn)的、固定長度的32位指令格式位指令格式 所有所有ARM指令都使用指令都使用4位的條件編碼來決定指位的條件編碼來決定指 令是否執(zhí)行,以解決指令執(zhí)行的條件判斷令是否執(zhí)行,以解決指令執(zhí)行的條件判斷 ARM微處理器的指令集是加載微處理器的指令集是加載/存儲(chǔ)型的,即存儲(chǔ)型的,即 指令集
2、僅能處理寄存器中的數(shù)據(jù)指令集僅能處理寄存器中的數(shù)據(jù) 返回 指令分類(指令分類(6 6類)類) ARMARM微處理器的指令集可以分為微處理器的指令集可以分為分支指令分支指令、數(shù)數(shù) 據(jù)處理指令、據(jù)處理指令、程序狀態(tài)寄存器(程序狀態(tài)寄存器(CPSRCPSR)處理指)處理指 令令、加載加載/ /存儲(chǔ)指令、存儲(chǔ)指令、協(xié)處理器指令協(xié)處理器指令和和異常產(chǎn)異常產(chǎn) 生指令。生指令。 l 當(dāng)處理器工作在當(dāng)處理器工作在ARM狀態(tài)時(shí),幾乎所有的指令狀態(tài)時(shí),幾乎所有的指令 均根據(jù)均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域中條件碼的狀態(tài)和指令的條件域 有條件的執(zhí)行。有條件的執(zhí)行。 l 當(dāng)指令的執(zhí)行條件滿足時(shí),指令被執(zhí)行,
3、否則當(dāng)指令的執(zhí)行條件滿足時(shí),指令被執(zhí)行,否則 指令被忽略。指令被忽略。 l 每一條每一條ARM指令包含指令包含4位的條件碼,位于指令位的條件碼,位于指令 的最高的最高4位位31:28。 詳見下表詳見下表 條件碼條件碼助記符后綴助記符后綴標(biāo)標(biāo) 志志含含 義義 0000EQZ置位置位相等相等 0001NEZ清零清零不相等不相等 0010CSC置位置位無符號(hào)數(shù)大于或等于無符號(hào)數(shù)大于或等于 0011CCC清零清零無符號(hào)數(shù)小于無符號(hào)數(shù)小于 0100MIN置位置位負(fù)數(shù)負(fù)數(shù) 0101PLN清零清零正數(shù)或零正數(shù)或零 0110VSV置位置位溢出溢出 0111VCV清零清零未溢出未溢出 1000HIC置位置位Z清
4、零清零無符號(hào)數(shù)大于無符號(hào)數(shù)大于 1001LSC清零清零Z置位置位無符號(hào)數(shù)小于或等于無符號(hào)數(shù)小于或等于 1010GEN等于等于V帶符號(hào)數(shù)大于或等于帶符號(hào)數(shù)大于或等于 1011LTN不等于不等于V帶符號(hào)數(shù)小于帶符號(hào)數(shù)小于 1100GTZ清零且(清零且(N等于等于V)帶符號(hào)數(shù)大于帶符號(hào)數(shù)大于 1101LEZ置位或(置位或(N不等于不等于V)帶符號(hào)數(shù)小于或等于帶符號(hào)數(shù)小于或等于 1110AL忽略忽略無條件執(zhí)行無條件執(zhí)行 返回 l“# #”立即數(shù)符號(hào)立即數(shù)符號(hào) “#”符號(hào)表示立即數(shù),其中后可以是二進(jìn)制數(shù),也可以是十進(jìn)制數(shù)符號(hào)表示立即數(shù),其中后可以是二進(jìn)制數(shù),也可以是十進(jìn)制數(shù) 或十六進(jìn)制數(shù)或十六進(jìn)制數(shù) l
5、“0 x”十六進(jìn)制符號(hào)十六進(jìn)制符號(hào) “0 x”后面的數(shù)據(jù)(每位可以是后面的數(shù)據(jù)(每位可以是0-9,A-F)表示十六進(jìn)制)表示十六進(jìn)制 數(shù),如數(shù),如0 xFFFF l“!”更新基址寄存器符號(hào)更新基址寄存器符號(hào) 表示指令在完成操作后最后的地址應(yīng)該寫入基址寄存器表示指令在完成操作后最后的地址應(yīng)該寫入基址寄存器 l“-”指示寄存器列表范圍符號(hào)指示寄存器列表范圍符號(hào) 表示多個(gè)連續(xù)寄存器表示多個(gè)連續(xù)寄存器 ,如,如R0-R7表示寄存器共表示寄存器共8個(gè)寄存器:個(gè)寄存器: R0,R1,R2,R3,R4,R5,R6和和R7。即含義。即含義“從從 到到” l定義定義 所謂尋址方式就是處理器根據(jù)指令中給出的地所謂
6、尋址方式就是處理器根據(jù)指令中給出的地 址信息來尋找物理地址的方式。址信息來尋找物理地址的方式。 l尋址方式種類尋址方式種類 目前目前ARMARM指令系統(tǒng)支持如下指令系統(tǒng)支持如下7 7種常見的尋址方式。種常見的尋址方式。 立即尋址,立即尋址,寄存器尋址,寄存器尋址,寄存器間接尋址寄存器間接尋址 基址加變址尋址,基址加變址尋址,相對(duì)尋址,相對(duì)尋址,堆棧尋址堆棧尋址 塊拷貝塊拷貝( (多寄存器)尋址多寄存器)尋址 返回 立即尋址立即尋址也叫立即數(shù)尋址,操作數(shù)本身就在指令也叫立即數(shù)尋址,操作數(shù)本身就在指令 中給出,只要取出指令也就取到了操作數(shù),這個(gè)操中給出,只要取出指令也就取到了操作數(shù),這個(gè)操 作數(shù)被
7、稱為立即數(shù)。作數(shù)被稱為立即數(shù)。 例如:例如:MOV R0,#0 x10FF66ED ADC R0,R0,#1000 立即數(shù)立即數(shù) 注意立即數(shù)前面的注意立即數(shù)前面的“ ” 含義:含義:R0R01000+C 返回 寄存器尋址寄存器尋址是利用寄存器中的數(shù)值作為操作數(shù)是利用寄存器中的數(shù)值作為操作數(shù) 尋址的一種方式,此方式執(zhí)行效率較高,經(jīng)常尋址的一種方式,此方式執(zhí)行效率較高,經(jīng)常 被各種處理器采用。被各種處理器采用。 例如:例如: ADD R0,R1,R2 含義: R0R1R2 寄存器間接尋址寄存器間接尋址是以寄存器中的值作為操作數(shù)是以寄存器中的值作為操作數(shù) 的地址,而操作數(shù)本身存放在存儲(chǔ)器中,用于間的
8、地址,而操作數(shù)本身存放在存儲(chǔ)器中,用于間 接接尋址的寄存器必須用接接尋址的寄存器必須用 括起來。括起來。 例如:例如:ADD R0,R1,R2 LDR R0,R1 含義:含義:R0R1R2 含義:含義:R0R1 基址加變址尋址基址加變址尋址是將寄存器(該寄存器一般是將寄存器(該寄存器一般 稱作基址寄存器)的內(nèi)容與指令中給出的地址偏稱作基址寄存器)的內(nèi)容與指令中給出的地址偏 移量相加,從而得到一個(gè)操作數(shù)的有效地址。移量相加,從而得到一個(gè)操作數(shù)的有效地址。 例如:例如:LDR R0,R1,4 LDR R0,R1,4! LDR R0,R1 ,4 變址尋址方式常用于訪問某基地址變址尋址方式常用于訪問某
9、基地址 附近的地址單元。附近的地址單元。 R0R14 R0R14、R1R14 R0R1、R1R14 相對(duì)尋址相對(duì)尋址以程序計(jì)數(shù)器以程序計(jì)數(shù)器PC的當(dāng)前值為基地址,的當(dāng)前值為基地址, 指令中的地址標(biāo)號(hào)作為偏移量,將兩者指令中的地址標(biāo)號(hào)作為偏移量,將兩者 相加之后得到操作數(shù)的有效地址。相加之后得到操作數(shù)的有效地址。 例如:例如: BLSubroutine_A ;跳轉(zhuǎn)到子程序;跳轉(zhuǎn)到子程序Subroutine_A處執(zhí)行處執(zhí)行 Subroutine_A MOVPC,LR;從子程序返回;從子程序返回 0 x2100000 偏移量為0 x0100 PC 0 x2100100 PC 執(zhí)行執(zhí)行 堆棧堆棧是一種
10、數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(First In Last Out,F(xiàn)ILO)的方式工作,使用堆棧指針專)的方式工作,使用堆棧指針專 用寄存器指示當(dāng)前的操作位置,堆棧指針總是指用寄存器指示當(dāng)前的操作位置,堆棧指針總是指 向棧頂。向棧頂。 堆棧的生成方式堆棧的生成方式 : 滿遞增堆棧 滿遞減堆棧 空遞增堆棧 空遞減堆棧 當(dāng)堆棧指針指向最后壓入堆棧的數(shù)當(dāng)堆棧指針指向最后壓入堆棧的數(shù) 據(jù)時(shí),稱為滿堆棧(據(jù)時(shí),稱為滿堆棧(Full Stack) 當(dāng)堆棧由低地址向高地址當(dāng)堆棧由低地址向高地址 生成時(shí),稱為遞增堆棧生成時(shí),稱為遞增堆棧 當(dāng)堆棧由高地址向低地址當(dāng)堆棧由高地址向低地址 生成時(shí)
11、,稱為遞減堆棧生成時(shí),稱為遞減堆棧 當(dāng)堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的當(dāng)堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的 空位置時(shí),稱為空堆棧(空位置時(shí),稱為空堆棧(Empty Stack) 塊拷貝尋址塊拷貝尋址又稱多寄存器尋址,采用多寄存又稱多寄存器尋址,采用多寄存 器尋址方式,一條指令可以完成多個(gè)寄存器值的器尋址方式,一條指令可以完成多個(gè)寄存器值的 傳送。傳送。 例如:例如:LDMIA R0,R1,R2,R3,R4 后綴后綴IA表示在每次執(zhí)行完加載表示在每次執(zhí)行完加載/ 存儲(chǔ)操作后,存儲(chǔ)操作后,R0按字長度增加按字長度增加 ;R1R0 ;R2R04 ;R3R08 ;R4R012 3.3.2 3 3.3.3
12、 33.3.1 3.3.4 33.3.5 33.3.6 返回 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 比較指令比較指令 測試指令測試指令 加法指令加法指令 減法指令減法指令 邏輯運(yùn)算指令邏輯運(yùn)算指令 乘法指令與乘加指令乘法指令與乘加指令 MOV 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 如:如:MOV R1,R0 MVN 數(shù)據(jù)取反傳送指令數(shù)據(jù)取反傳送指令 如:如:MVN R0,0 CMP 比較指令比較指令 CMP R1,R0 CMN 反值比較指令反值比較指令 CMNR1,100 TEQ 相等測試指令相等測試指令 TEQ R1,R2 TST 位測試指令位測試指令 TSTR1,0 xfe ADD 加法指令加法指令 ADD R0
13、,R1,#256 ADC 帶進(jìn)位加法指令帶進(jìn)位加法指令 ADC R3,R7,R11 SUB 減法指令減法指令 SUB R0,R1,#256 SBC 帶借位減法指令帶借位減法指令 SUBS R0,R1,R2 RSB 反向減法指令反向減法指令 RSB R0,R1,R2 RSC 帶借位反向減法指令帶借位反向減法指令 RSC R0,R1,R2 AND 邏輯與指令邏輯與指令 ORR 邏輯或指令邏輯或指令 EOR 邏輯異或指令邏輯異或指令 BIC 位清除指令位清除指令 返回 程序狀態(tài)指令程序狀態(tài)指令用于在程序狀態(tài)寄存器和通用寄用于在程序狀態(tài)寄存器和通用寄 存器之間傳送數(shù)據(jù)。存器之間傳送數(shù)據(jù)。 lMRS程序
14、狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳程序狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳 送指令送指令 例如:例如:MRS R0,CPSR;傳送;傳送CPSR的內(nèi)容到的內(nèi)容到R0 lMSR通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送 指令指令 例如:例如:MSR SPSR,R0;傳送;傳送R0的內(nèi)容到的內(nèi)容到SPSR 返回 分支指令分支指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),ARM指令集中的指令集中的 分支指令可以完成從當(dāng)前指令向前或向后的分支指令可以完成從當(dāng)前指令向前或向后的32MB的地址空的地址空 間的跳轉(zhuǎn),包括間的跳轉(zhuǎn),包括4條指令:條指令: lB轉(zhuǎn)移指令轉(zhuǎn)移指令 lBL
15、帶返回的轉(zhuǎn)移指令帶返回的轉(zhuǎn)移指令 lBLX帶返回且?guī)顟B(tài)切換的轉(zhuǎn)移指令帶返回且?guī)顟B(tài)切換的轉(zhuǎn)移指令 lBX帶狀態(tài)切換的轉(zhuǎn)移指令帶狀態(tài)切換的轉(zhuǎn)移指令 點(diǎn)擊右圖示例點(diǎn)擊右圖示例 返回 加載指令加載指令用于將存儲(chǔ)器中的數(shù)據(jù)傳送到寄存用于將存儲(chǔ)器中的數(shù)據(jù)傳送到寄存 器,器,存儲(chǔ)指令存儲(chǔ)指令則完成相反的操作。則完成相反的操作。 加載存儲(chǔ)指令有三類:加載存儲(chǔ)指令有三類: l單一數(shù)據(jù)加載單一數(shù)據(jù)加載/存儲(chǔ)存儲(chǔ) l批量數(shù)據(jù)加載批量數(shù)據(jù)加載/存儲(chǔ)存儲(chǔ) 數(shù)據(jù)交換指令數(shù)據(jù)交換指令 數(shù)據(jù)交換指令數(shù)據(jù)交換指令數(shù)據(jù)交換指令數(shù)據(jù)交換指令 SWPSWP字?jǐn)?shù)據(jù)交換指令字?jǐn)?shù)據(jù)交換指令 示例:示例:SWP SWP R0R0,R1R
16、1,R2 R2 SWP SWP R0R0,R0R0,R1 R1 SWPBSWPB字節(jié)數(shù)據(jù)交換指令字節(jié)數(shù)據(jù)交換指令 示例:示例:SWPB SWPB R0R0,R1R1,R2 R2 R2R0 R1R2 R0 R1 低低8位位 R0 R1 返回 數(shù)據(jù)交換指令數(shù)據(jù)交換指令數(shù)據(jù)交換指令數(shù)據(jù)交換指令 SWPSWP字?jǐn)?shù)據(jù)交換指令字?jǐn)?shù)據(jù)交換指令 示例:示例:SWP SWP R0R0,R1R1,R2 R2 SWP SWP R0R0,R0R0,R1 R1 SWPBSWPB字節(jié)數(shù)據(jù)交換指令字節(jié)數(shù)據(jù)交換指令 示例:示例:SWPB SWPB R0R0,R1R1,R2 R2 R2R0 R1R2 R0 R1 低低8位位 R
17、0 R1 ARM協(xié)處理器指令包括協(xié)處理器指令包括5條:條: CDP(協(xié)處理器數(shù)操作指令)(協(xié)處理器數(shù)操作指令) LDC(協(xié)處理器數(shù)據(jù)加載指令)(協(xié)處理器數(shù)據(jù)加載指令) STC(協(xié)處理器數(shù)據(jù)存儲(chǔ)指令)(協(xié)處理器數(shù)據(jù)存儲(chǔ)指令) MCR(ARM處理器寄存器到協(xié)處理器寄存器處理器寄存器到協(xié)處理器寄存器 的數(shù)據(jù)傳送指令)的數(shù)據(jù)傳送指令) MRC(協(xié)處理器寄存器到(協(xié)處理器寄存器到ARM處理器寄存器處理器寄存器 的數(shù)據(jù)傳送指令)。的數(shù)據(jù)傳送指令)。 返回 ARM微處理器所支持的異常中斷指令有如下兩微處理器所支持的異常中斷指令有如下兩 條:條: lSWI 軟件中斷指令軟件中斷指令 示例:示例: SWI 0
18、x01 ;該指令調(diào)用操作系統(tǒng)編號(hào)為;該指令調(diào)用操作系統(tǒng)編號(hào)為01的系統(tǒng)例程。的系統(tǒng)例程。 lBKPT 斷點(diǎn)中斷指令斷點(diǎn)中斷指令 示例:示例:BKPT 0XF010 支持支持16位的立即數(shù)位的立即數(shù) 返回 lThumbThumb指令集指令集指令編碼長度為指令編碼長度為1616位位,但指令的,但指令的 操作數(shù)和指令地址仍是操作數(shù)和指令地址仍是3232位;位; lThumbThumb指令集是指令集是ARMARM指令系統(tǒng)的一個(gè)指令系統(tǒng)的一個(gè)子集子集 ; lThumbThumb指令集在保留指令集在保留3232代碼優(yōu)勢的同時(shí),大大代碼優(yōu)勢的同時(shí),大大 的節(jié)省了系統(tǒng)的存儲(chǔ)空間。的節(jié)省了系統(tǒng)的存儲(chǔ)空間。 返回
19、 返回 l數(shù)據(jù)處理指令數(shù)據(jù)處理指令 l分支指令分支指令 l加載加載/ /存儲(chǔ)指令存儲(chǔ)指令 l異常中斷指令異常中斷指令 SWI軟件中斷指令軟件中斷指令 BKPT斷點(diǎn)異常中斷指令斷點(diǎn)異常中斷指令 lThumb-2Thumb-2是一種新型混合指令集,融合了是一種新型混合指令集,融合了1616位位 和和3232位指令,用于實(shí)現(xiàn)密度和性能的最佳平衡位指令,用于實(shí)現(xiàn)密度和性能的最佳平衡。 返回 l指令性指令:指令性指令:可以執(zhí)行的指令可以執(zhí)行的指令 l偽指令:偽指令:是一種指示性語句,是不可執(zhí)行的指令。是一種指示性語句,是不可執(zhí)行的指令。 l指令性語句匯編后由相應(yīng)的指令性語句匯編后由相應(yīng)的機(jī)器代碼機(jī)器代碼所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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國際商事合同通則的“艱難情形規(guī)則”對(duì)我國合同法的借鑒意義
- 2025尚智喜服飾代理合同范本
- 2025年度智能家居門系統(tǒng)安裝及售后服務(wù)合同范本4篇
- 二零二四年度中小企業(yè)市場拓展與品牌合作合同3篇
- 二婚再婚2024年度婚姻財(cái)產(chǎn)規(guī)劃合同3篇
- 2025年度高速公路建設(shè)承包合同范本模板4篇
- 2025年度牧業(yè)廢棄物處理與承包運(yùn)營合同4篇
- 2025年度古建筑修復(fù)專業(yè)木工施工合同4篇
- 2025年度商業(yè)地產(chǎn)租賃保證金合同協(xié)議書8篇
- 聲屏障的施工方案
- 2023-2024學(xué)年度人教版一年級(jí)語文上冊寒假作業(yè)
- 軟件運(yùn)維考核指標(biāo)
- 空氣動(dòng)力學(xué)仿真技術(shù):格子玻爾茲曼方法(LBM)簡介
- 對(duì)表達(dá)方式進(jìn)行選擇與運(yùn)用
- GB/T 18488-2024電動(dòng)汽車用驅(qū)動(dòng)電機(jī)系統(tǒng)
- 投資固定分紅協(xié)議
- 高二物理題庫及答案
- 職業(yè)發(fā)展展示園林
- 七年級(jí)下冊英語單詞默寫表直接打印
- 2024版醫(yī)療安全不良事件培訓(xùn)講稿
- 中學(xué)英語教學(xué)設(shè)計(jì)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論