【正文】
36 ARM的尋址模式 1 立即尋址 立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。 ? 書寫時(shí),條件碼的位置在指令助記符的后面(因此也稱為條件后綴。 ? 只有在 cpsr中的條件標(biāo)志位滿足指定的條件時(shí),指令才會(huì)被執(zhí)行。每種條件碼用 2個(gè)英文縮寫字符表示。 34 條件執(zhí)行 ? 每條 ARM指令包含 4位條件碼域 cond ,它占用指令編碼的最高四位 [31: 28]。 ? Rn:包含第一個(gè)操作數(shù)的寄存器編碼。 ? S:決定指令的操作是否影響 cpsr的值。 30 ARM微處理器的指令系統(tǒng) ? ARM指令系統(tǒng)的概述 ? ARM的尋址模式 ? ARM的指令集 ? Thumb的指令集 31 ARM指令系統(tǒng)的概述 ? ARM微處理器指令是加載 /存儲(chǔ)型的,即指令集僅能處理寄存器中的數(shù)據(jù),處理結(jié)果都要放回寄存器中,對(duì)系統(tǒng)存儲(chǔ)器的訪問則需要專門的加載 /存儲(chǔ)指令來完成 ? ARM指令集分為六類: 1. 跳轉(zhuǎn)指令 2. 數(shù)據(jù)處理指令 3. 程序狀態(tài)寄存器( PSR)處理指令 4. 加載 /存儲(chǔ)指令 5. 協(xié)處理器指令 6. 異常產(chǎn)生指令 32 ARM指令系統(tǒng)的概述 助記符 指令功能描述 ADC 帶進(jìn)位加法指令 ADD 加法指令 AND 邏輯與指令 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 存儲(chǔ)器到協(xié)處理器的數(shù)據(jù)傳輸指令 LDM 加載多個(gè)寄存器指令 LDR 存儲(chǔ)器到寄存器的數(shù)據(jù)傳輸指令 MCR 從 ARM MLA 乘加運(yùn)算指令 MOV 數(shù)據(jù)傳送指令 助記符 指令功能描述 MRC 從協(xié)處理器寄存器到 ARM MRS 傳送 CPSR MSR 傳送通用寄存器到 CPSR MUL 32 MLA 32 MVN 數(shù)據(jù)取反傳送指令 ORR 邏輯或指令 RSB 逆向減法指令 RSC 帶借位的逆向減法指令 SBC 帶借位減法指令 STC 協(xié)處理器寄存器寫入存儲(chǔ)器指令 STM 批量內(nèi)存字寫入指令 STR 寄存器到存儲(chǔ)器的數(shù)據(jù)傳輸指令 SUB 減法指令 SWI 軟件中斷指令 SWP 交換指令 TEQ 相等測(cè)試指令 TST 位測(cè)試指令 33 ARM指令的格式 ? 一條典型的 ARM指令編碼格式為: Cond 001 Opcode S Rn Rd Operand2 0 11 12 15 16 19 20 21 24 25 27 28 31 7 8 一條典型的 ARM指令語法格式為: Opcode{cond}{s} Rd, Rn{, Operand2} ? Opcode:指令操作碼。 ARM V6體系增加了媒體指令, ARMv6指令集合中加入了超過 60條 SIMD單指令多數(shù)據(jù)指令。 ARM V4體系增加了半字存儲(chǔ)操作,對(duì)調(diào)試的支持以及支持嵌入的 ICE。 ARM V2體系與 V1體系同為 26位尋址空間具有乘法和乘加指令,支持協(xié)處理器。 15 ARM的存儲(chǔ)器格式 大端格式 3 12 3 8 7 01 個(gè) 字 ( w o r d )2 4 1 51 6 低 地 址1 1 字 節(jié)1 0 字 節(jié)9 字 節(jié)8 字 節(jié)7 字 節(jié)6 字 節(jié)5 字 節(jié)4 字 節(jié)3 字 節(jié)2 字 節(jié)1 字 節(jié)0 字 節(jié)內(nèi) 存 高 地 址低 位高 位16 ARM的存儲(chǔ)器格式 小端格式 。 作為 32位的微處理器, ARM體系結(jié)構(gòu)所支持的最大尋址空間為 4GB( 32位)。 12 ARM的異常 返回指令 以前的狀態(tài) ARM Thumb BL MOV PC, R14 PC+ 4 PC+ 2 SWI MOVS PC, R14_svc PC+ 4 PC+ 2 UDEF MOVS PC, R14_und PC+ 4 PC+ 2 FIQ SUBS PC, R14_fiq,# 4 PC+ 4 PC+ 4 IRQ SUBS PC, R14_irq,# 4 PC+ 4 PC+ 4 PABT SUBS PC, R14_abt,# 4 PC+ 4 PC+ 4 DABT SUBS PC, R14_abt,# 8 PC+ 8 PC+ 8 13 ARM的異常 1(最高) 復(fù)位 2 數(shù)據(jù)終止 3 FIQ 4 IRQ 5 預(yù)取指令終止 6(最低) 未定義指令、 SWI ARM異常的優(yōu)先級(jí) 14 ARM的存儲(chǔ)器格式 ARM體系結(jié)構(gòu)將存儲(chǔ)器看作是從零地址開始的字節(jié)的線性組合。系統(tǒng)的外設(shè)可通過該異常請(qǐng)求中斷服務(wù)。 數(shù)據(jù)終止 (Data Abort) 若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)終止異常??墒褂迷摦惓C(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真。 6 ARM的寄存器組織 R 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2R 1 3R 1 4R 1 5 ( P C )R 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2R 1 3 _ s v cR 1 4 _ s v cR 1 5 ( P C )R 0R 1R 2R 3R 4R 5R 6R 7R 9 _ f i qR 1 0 _ f i qR 1 1 _ f i qR 1 2 _ f i qR 1 3 _ f i qR 1 4 _ f i qR 1 5 ( P C )R 8 _ f i qR 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2R 1 3 _ a b tR 1 4 _ a b tR 1 5 ( P C )R 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2R 1 3 _ i r qR 1 4 _ i r qR 1 5 ( P C )R 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2R 1 3 _ u n dR 1 4 _ u n dR 1 5 ( P C )A R M 狀 態(tài) 通 用 寄 存 器 和 程 序 計(jì) 數(shù) 器A R M 狀 態(tài) 程 序 狀 態(tài) 寄 存 器C P S R C P S RS P S R _ f i qC P S RS P S R _ i r qC P S RS P S R _ u n dC P S RS P S R _ a b tC P S RS P S R _ s v c系 統(tǒng) 和 用 戶F I Q管 理I R Q終 止 未 定 義7 ARM的寄存器組織 R 0R 1R 2R 3R 4R 5R 6R 7L RS PP C系 統(tǒng) 和 用 戶F I Q管 理I R Q終 止 未 定 義T h u m b 狀 態(tài) 通 用 寄 存 器 和 程 序 計(jì) 數(shù) 器T h u m b 狀 態(tài) 程 序 狀 態(tài) 寄 存 器C P S R C P S RS P S R _ f i qC P S RS P S R _ s v cC P S RS P S R _ a b tC P S RS P S R _ i r qC P S RS P S R _ u n dL R _ f i qR 0R 1R 2R 3R 4R 5R 6R 7S P _ f i qP CL R _ s v cR 0R 1R 2R 3R 4R 5R 6R 7S P _ s v cP CL R _ u n dR 0R 1R 2R 3R 4R 5R 6R 7S P _ u n dP CL R _ f i qR 0R 1R 2R 3R 4R 5R 6R 7S P _ f i qP CL R _ a b tR 0R 1R 2R 3R 4R 5R 6R 7S P _ a b tP C8 ARM的寄存器組織 R 0R 1R 2R 3R 4R 5R 6R 7S t a c k P o i n t e r ( S P )L i n k r e g i s t e r ( L R )P r o g r a m C o u n t e r ( P C )C P S RS P S RR 0R 1R 2R 3R 4R 5R 6R 7R 9R 8R 1 0R 1 1R 1 2S t a c k P o i n t e r ( R 1 3 )L i n k r e g i s t e r ( R 1 4 )P r o g r a m C o u n t e r ( R 1 5 )C P S RS P S RT H U M B 狀 態(tài) A R M 狀 態(tài)低寄存器高寄存器9 ARM的寄存器組織 ~ ~3 1條 件 標(biāo) 志溢 出N Z C V I F T M 4 M 3 M 2 M 1 M 03 0 2 9 2 7