ARM處理器編程模型與指令系統(tǒng)ppt課件_第1頁
ARM處理器編程模型與指令系統(tǒng)ppt課件_第2頁
ARM處理器編程模型與指令系統(tǒng)ppt課件_第3頁
ARM處理器編程模型與指令系統(tǒng)ppt課件_第4頁
ARM處理器編程模型與指令系統(tǒng)ppt課件_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)設(shè)計(jì)第四章 ARM處置器編程模型與指令系統(tǒng) .主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.1 ARM微處置器的任務(wù)形狀從編程的角度看,ARM微處置器的任務(wù)形狀普通有兩種,并可在兩種形狀之間切換:ARM形狀:此時(shí)處置器執(zhí)行32位的字對(duì)齊的ARM指令Thumb形狀:此時(shí)處置器執(zhí)行16位的、半字對(duì)齊的Thumb指令.4.1 ARM微處置器的任務(wù)形狀A(yù)RM指令集和T

2、humb指令集均有切換處置器形狀的指令,并可在兩種任務(wù)形狀之間切換,但ARM微處置器在開場執(zhí)行代碼時(shí),應(yīng)該處于ARM形狀 進(jìn)入ARM形狀:當(dāng)操作數(shù)存放器的形狀位位0為0時(shí),執(zhí)行BX指令時(shí)可以使微處置器從Thumb形狀切換到ARM形狀。 進(jìn)入Thumb形狀 :當(dāng)操作數(shù)存放器的形狀位位0為1時(shí),可以采用執(zhí)行BX指令的方法,使微處置器從ARM形狀切換到Thumb形狀。 .處置器的任務(wù)形狀例:從ARM形狀切換到Thumb形狀: LDR R0,=Label+1 BX R0從Thumb形狀切換到ARM形狀: LDR R0,=Label BX R0.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處

3、置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式ARM微處置器支持7種運(yùn)轉(zhuǎn)方式,分別為:1.用戶方式(usr):ARM處置器正常的程序執(zhí)行形狀;2.快速中斷方式(fiq):用于高速數(shù)據(jù)傳輸或通道處置;3.外部中斷方式(irq):用于通用的中斷處置;4.管理方式(supervisor):操作系統(tǒng)運(yùn)用的維護(hù)方式;5.數(shù)據(jù)訪問終止方式(abort):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該方式,可用于虛擬存儲(chǔ)及存儲(chǔ)維護(hù)

4、;6.系統(tǒng)方式(system):運(yùn)轉(zhuǎn)具有特權(quán)的操作系統(tǒng)義務(wù);7.未定義指令中止方式(undefined):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該方式,可用于支持硬件協(xié)處置器的軟件仿真。.4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式除用戶方式以外,其他的一切6種方式稱之為非用戶方式,或特權(quán)方式Privileged Modes;除用戶方式和系統(tǒng)方式以外的5種又稱為異常方式Exception Modes,常用于處置中斷或異常,以及需求訪問受維護(hù)的系統(tǒng)資源等情況。 .處理器模式說明備注 用戶 (usr)正常程序執(zhí)行模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類似,但具有可以直接切換到其它模式等

5、特權(quán) 快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式處置器任務(wù)方式ARM處置器有7種任務(wù)方式.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指

6、令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.3 ARM體系構(gòu)造的存儲(chǔ)器格式ARM體系構(gòu)造可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù) 大端格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)那么存放在高地址中。 .4.3 ARM體系構(gòu)造的存儲(chǔ)器格式ARM體系構(gòu)造可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù) 小端格式:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。 .例如A. 小端存儲(chǔ)法(0 x01234567)地址0 x80000 x80010 x80020 x8003數(shù)據(jù)(16進(jìn)制表示)0 x670 x450 x230 x01數(shù)據(jù)(二進(jìn)制表示)011

7、00111010001010010001100000001B. 大端存儲(chǔ)法地址0 x80000 x80010 x80020 x8003數(shù)據(jù)(16進(jìn)制表示)0 x010 x230 x450 x67數(shù)據(jù)(二進(jìn)制表示)00000001001000110100010101100111.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.4 存放器組織4.4.1 ARM形狀下的存放器組

8、織 通用存放器 :通用存放器包括R0R15,可以分為三類:未分組存放器R0R7分組存放器R8R14程序計(jì)數(shù)器PCR15 .ARM形狀下的存放器組織.處置器任務(wù)方式特權(quán)方式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7

9、TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 除用戶方式外,其它方式均為特權(quán)方式。ARM內(nèi)部存放器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許或者可選為只允許特權(quán)方式下訪問。此外,特權(quán)方式可以自在的切換處置器方式,而用戶方式不能直接切換到別的方式。 未定義(und) 中止(abt) 管理(svc) 中斷 (irq) 快中斷(fiq) 系統(tǒng) (sys).處置器任務(wù)方式用戶和系統(tǒng)方式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷

10、(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 這兩種方式都不能由異常進(jìn)入,而且它們運(yùn)用完全一樣的存放器組。 系統(tǒng)方式是特權(quán)方式,不受用戶方式的限制。操作系統(tǒng)在該方式下訪問用戶方式的存放器就比較方便,而且操作系統(tǒng)的一些特權(quán)義務(wù)可以運(yùn)用這個(gè)方式訪問一些受控的資源。 系統(tǒng) (sys) 用戶 (usr).寄

11、存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fiq *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc*R13_abt *R13_und *R13_irq *R13_fiq *R14(LR)R14R14_svc *R14_abt *R14

12、_und *R14_irq *R14_fiq *R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM形狀各方式下的存放器.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiq

13、R12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM形狀各方式下的存放器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_ab

14、tR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0一切的37個(gè)存放器,分成兩大類:31個(gè)通用32位存放器;6個(gè)形狀存放器。.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR

15、12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R

16、10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM形狀各方式下可以訪問的

17、存放器.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq

18、R15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編言語中存放器R0R13為保管數(shù)據(jù)或地址值的通用存放器。它們是完全通用的存放器,不會(huì)被體系構(gòu)造作為特殊用途,并且可用于任何運(yùn)用通用存放器的指令。.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器

19、和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_und

20、SPSR_irqSPSR_fiq普通的通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的存放器,也就是說對(duì)于任何處置器方式,這些存放器都對(duì)應(yīng)于一樣的32位物理存放器。.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)

21、R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器R14_fiqR14_irqR14_undR14_abtR14_svcR

22、14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R14為分組存放器。它們所對(duì)應(yīng)的物理存放器取決于當(dāng)前的處置器方式,幾乎一切允許運(yùn)用通用存放器的指令都允許運(yùn)用分組存放器.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fi

23、qR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R12有兩個(gè)分組的物理存放器。一個(gè)用于除FIQ方

24、式之外的一切存放器方式,另一個(gè)用于FIQ方式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處置速度。.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq

25、R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通的通用存放器 存放器R13、R14分別有6個(gè)分組的物理存放器。一個(gè)用于用戶和系統(tǒng)方式,其他5個(gè)分別用于5種異常方式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程

26、序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSP

27、SR_irqSPSR_fiq堆棧指針存放器R13SP 存放器R13常作為堆棧指針SP。在ARM指令集當(dāng)中,沒有以特殊方式運(yùn)用R13的指令或其它功能,只是習(xí)慣上都這樣運(yùn)用。但是在Thumb指令集中存在運(yùn)用R13的指令。.寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR1

28、2(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接存放器R14LR R14為鏈接存放器LR,在構(gòu)造上有兩個(gè)特殊功能:在每種方式下,方式本身的R14版本用于保管子程序前往地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常方式版本設(shè)置為異常前往地址有些異常有一個(gè)小的固定偏移量。.4.4 存放器組織4.4.1 ARM

29、形狀下的存放器組織 形狀存放器 當(dāng)前程序形狀存放器Current Program Status Register,CPSR 備份的程序形狀存放器Saved Program Status Register,SPSR.4.4 存放器組織程序形狀存放器格式 .4.4 存放器組織4.4.2 Thumb形狀下的存放器組織 Thumb形狀下的存放器集是ARM形狀下存放器集的一個(gè)子集,程序可以直接訪問8個(gè)通用存放器R7R0、程序計(jì)數(shù)器PC、堆棧指針SP、銜接存放器LR和CPSR。 .Thumb形狀下的存放器組織與ARM形狀下的存放器組織的關(guān)系.4.4 存放器組織Thumb形狀下的存放器組織與ARM形狀下的存

30、放器組織的關(guān)系:Thumb形狀下和ARM形狀下的R0R7是一樣的;Thumb形狀下的SP對(duì)應(yīng)于ARM形狀下的R13;Thumb形狀下的LR對(duì)應(yīng)于ARM形狀下的R14;Thumb形狀下的程序計(jì)數(shù)器對(duì)應(yīng)于ARM形狀下R15;Thumb形狀下和ARM形狀下的CPSR和一切的SPSR是一樣的 .Thumb形狀下的存放器組織.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.5 AR

31、M的異常當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停頓時(shí),稱之為異常 。在處置異常之前,當(dāng)前處置器的形狀必需保管 處置器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級(jí)進(jìn)展處置 異常與中斷的概念并不完全等同 .4.5 ARM的異常4.5.1 ARM體系構(gòu)造所支持的異常類型 在ARM體系構(gòu)造中,異常中斷用來處置軟件中斷、未定義指令圈套不是真正的“不測(cè)事件、系統(tǒng)復(fù)位功能在邏輯上發(fā)生在程序執(zhí)行前而不是程序執(zhí)行中和外部事件。這些“不正常事件都被劃歸“異常,由于在處置器的控制機(jī)制中,它們都運(yùn)用同樣的流程進(jìn)展異常處置。.4.5 ARM的異常ARM異常按引起異常事件的不同可分為以下3類 :指令執(zhí)行引起的直接異常 指令執(zhí)行引

32、起的間接異常 外部產(chǎn)生的與指令流無關(guān)的異常 .異常類型具體含義復(fù)位(RESET)當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行。未定義指令(UDEF)當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真。軟件中斷(SWI)該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令??墒褂迷摦惓C(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。指令預(yù)取中止(PABT)若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。數(shù)據(jù)中止(DABT)若處理器數(shù)據(jù)訪問指令的地址

33、不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常。外部中斷請(qǐng)求(IRQ)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過該異常請(qǐng)求中斷服務(wù)??焖僦袛嗾?qǐng)求(FIQ)當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。ARM體系構(gòu)造所支持的異常.異常向量Exception Vectors地 址異 常進(jìn)入模式0 x0000,0000復(fù)位管理模式0 x0000,0004未定義指令未定義模式0 x0000,0008軟件中斷管理模式0 x0000,000C中止(預(yù)取指令)中止模式0 x0000,0010中止(數(shù)據(jù))中止模式0 x0000

34、,0014保留保留0 x0000,0018IRQIRQ0 x0000,001CFIQFIQ.4.5 ARM的異常4.5.3 對(duì)異常的呼應(yīng) ARM微處置器對(duì)異常的呼應(yīng)過程如下: 1、將下一條指令的地址存入相應(yīng)的銜接存放器LR,以便程序在處置異常前往時(shí)能從正確的位置重新開場執(zhí)行;2、將CPSR復(fù)制到相應(yīng)的SPSR中;3、設(shè)置當(dāng)前形狀存放器CPSR中的相應(yīng)位; 4、給程序計(jì)數(shù)器PC強(qiáng)迫賦值,使程序從相應(yīng)的異常向量地址開場執(zhí)行中斷處置程序 ;.4.5 ARM的異常4.5.4 從異常前往ARM微處置器會(huì)執(zhí)行以下操作從異常前往:1、一切修正正的用戶存放器必需從處置程序的維護(hù)堆棧中恢復(fù)出棧;2、將銜接存放器

35、LR的值減去相應(yīng)的偏移量送到PC中;3、將SPSR_mode存放器內(nèi)容復(fù)制回CPSR中,使得CPSR從相應(yīng)的SPSR中恢復(fù),即恢復(fù)被中斷的程序任務(wù)形狀;4、假設(shè)在進(jìn)入異常處置時(shí)設(shè)置了中斷制止位,要在此去除。 .4.5 ARM的異常4.5.4 從異常前往 為確保指令總是按正確的操作方式讀取,以保證存儲(chǔ)器維護(hù)方案不被繞過,還有更加微妙的困難。因此,ARM提供了2種前往處置機(jī)制 第一種機(jī)制:前往地址保管在R14 ;第二種機(jī)制:異常處置程序把前往地址拷貝到堆棧在這種情況下,SPSR也和PC一樣必需保管,可運(yùn)用一條多存放器傳送指令來恢復(fù)用戶存放器,并實(shí)現(xiàn)前往: .4.5 ARM的異常4.5.5 各類異常

36、的詳細(xì)描畫1、未定義指令異常Undefined Instruction 2、軟件中斷異常Software Interrupt 3、中止異常Abort 4、快速中斷懇求異常Fast Interrupt Request,F(xiàn)IQ 5、外部中斷懇求異常Interrupt Request,IRQ .4.5 ARM的異常4.5.6 異常的進(jìn)入/退出異常類型返回指令以前的狀態(tài)注意ARM R14_xThumb R14_xBLMOV PC,R14PC4PC21UDEFMOVS PC,R14_undPC4PC21SWIMOVS PC,R14_svcPC4PC21PABTSUBS PC,R14_abt,#4PC4P

37、C41DABTSUBS PC,R14_abt,#8PC8PC83FIQSUBS PC,R14_fiq,#4PC4PC42IRQSUBS PC,R14_irq,#4PC4PC42RESETNA4.4.5 ARM的異常4.5.7 異常優(yōu)先級(jí)Exception Priorities優(yōu)先級(jí)異 常1(最高)復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5預(yù)取指令中止6(最低)未定義指令、SWI.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 AR

38、M指令集 4.9 Thumb指令及運(yùn)用 .4.6 ARM微處置器的指令系統(tǒng)根底4.6.1 指令長度及數(shù)據(jù)類 ARM微處置器的指令長度可以是32位在ARM形狀下,也可以為16位在Thumb形狀下。ARM微處置器中支持字節(jié)8位、半字16位、字32位三種數(shù)據(jù)類型,其中,字需求4字節(jié)對(duì)齊地址的低兩位為0、半字需求2字節(jié)對(duì)齊地址的最低位為0。 .4.6 ARM微處置器的指令系統(tǒng)根底4.6.2 ARM微處置器的指令的分類與格式指令分類簡述 ARM微處置器指令集是加載/存儲(chǔ)型的;ARM微處置器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處置指令、程序形狀存放器處置指令、Load/Store指令、協(xié)處置器指令和異常產(chǎn)生指令

39、六大類; .4.6 ARM微處置器的指令系統(tǒng)根底4.6.2 ARM微處置器的指令的分類與格式指令格式 ARM指令運(yùn)用的根本格式: S , ,.4.6 ARM微處置器的指令系統(tǒng)根底4.6.2 ARM微處置器的指令的分類與格式指令格式運(yùn)用舉例: LDR R0,R1 BEQ DATAEVEN ADDS R2,R1,#1 SUBNES R2,R1,#0 x20.指令的條件域條件碼助記符后綴標(biāo) 志含 義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無符號(hào)數(shù)大于或等于0011CCC清零無符號(hào)數(shù)小于0100MIN置位負(fù)數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢

40、出1000HIC置位Z清零無符號(hào)數(shù)大于1001LSC清零Z置位無符號(hào)數(shù)小于或等于1010GEN等于V帶符號(hào)數(shù)大于或等于1011LTN不等于V帶符號(hào)數(shù)小于1100GTZ清零且(N等于V)帶符號(hào)數(shù)大于1101LEZ置位或(N不等于V)帶符號(hào)數(shù)小于或等于1110AL忽略無條件執(zhí)行.主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.7 ARM指令的尋址方式4.7.1 立刻尋址 也叫

41、立刻數(shù)尋址,是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只需取出指令也就取到了操作數(shù)。這個(gè)操作數(shù)被稱為立刻數(shù),對(duì)應(yīng)的尋址方式也就叫做立刻尋址。 例如以下指令: ADD R0,R0,#1;R0R01 ADD R0,R0,#0 x3f;R0R00 x3f .4.7 ARM指令的尋址方式4.7.2 存放器尋址 存放器尋址就是利用存放器中的數(shù)值作為操作數(shù),指令中地址碼給出的是存放器編號(hào)。 例如以下指令: ADD R0,R1,R2 ;R0R1R2 .4.7 ARM指令的尋址方式4.7.3 存放器間接尋址 存放器間接尋址就是以存放器中的值作為操作數(shù)的地址這個(gè)存放器相當(dāng)于指針的作用,在基址加變址的尋址方

42、式中,它作為基址存放器來存放基址地址,而操作數(shù)本身存放在存儲(chǔ)器中。 例如以下指令: ADD R0,R1,R2;R0R1R2 LDR R0,R1;R0R1 STR R0,R1;R1R0.4.7 ARM指令的尋址方式4.7.4 基址變址尋址 基址變址尋址就是將存放器該存放器普通稱作基址存放器的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址,用于訪問基址附近的存儲(chǔ)器單元。 .4.7 ARM指令的尋址方式4.7.4 基址變址尋址 變址尋址方式可分為 :前變址方式 LDR R0,R1,#4 ;R0R14 自動(dòng)變址方式 LDR R0,R1,#4??;R0R14、R1R14 后變址方式 LDR

43、 R0,R1,#4 ;R0R1、R1R14偏移地址 LDR R0,R1,R2 ;R0R1R2 LDR R0,R1,R2,LSL#2 ;R0R1R2 * 4 .4.7 ARM指令的尋址方式4.7.5 多存放器尋址 多存放器尋址又稱為塊拷貝尋址,是多存放器傳送指令Load/Store的尋址方式,Load/Store指令可把存儲(chǔ)器中的一個(gè)數(shù)據(jù)塊加載到多個(gè)存放器中,也可把多個(gè)存放器中的內(nèi)容保管到存儲(chǔ)器中。 例如以下指令: LDMIA R0,R1,R2,R3,R4;R1R0;R2R04 ;R3R08 ;R4R012 .多存放器Load和Store指令的堆棧和塊拷貝對(duì)照遞 增遞 減滿空滿空增值先增STMI

44、BSTMFALDMIBLDMED后增STMIASTMEALDMIALDMFD減值先減LDMDBLDMEASTMDBSTMFD后減LDMDALDMFASTMDASTMED.4.7 ARM指令的尋址方式4.7.6 堆棧尋址 堆棧是一種數(shù)據(jù)構(gòu)造,按先進(jìn)后出First In Last Out,F(xiàn)ILO的方式任務(wù),運(yùn)用一個(gè)稱作堆棧指針SP的公用存放器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂 。 .4.7 ARM指令的尋址方式4.7.6 堆棧尋址 根據(jù)堆棧指針位置,分為:滿堆棧Full Stack:堆棧指針指向最后壓入堆棧的數(shù)據(jù); 空堆棧Empty Stack:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置 ;根

45、據(jù)堆棧的生成方式 ,分為:遞增堆棧Ascending Stack:堆棧由低地址向高地址生成 遞減堆棧Decending Stack:堆棧由高地址向低地址生成 .4.7 ARM指令的尋址方式4.7.6 堆棧尋址 ARM微處置器支持這四種類型的堆棧任務(wù)方式:滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成;滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成;空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成;空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成; .4.7 ARM指令的尋址方式4.7.6 堆棧尋址 在ARM指令

46、中,堆棧尋址也是經(jīng)過Load/Store指令來實(shí)現(xiàn)的,例 如: STMFD SP! R1-R7,LR ;將R1R7,LR入棧 LDMFD SP! R1-R7,LR ;數(shù)據(jù)出棧,放入 R1R7,LR存放器 在Thumb指令中,堆棧尋址經(jīng)過PUSH/POP指令來實(shí)現(xiàn),例如: PUSH R1-R7,LR ;將R1R7,LR入棧 POP R1-R7,PC ;數(shù)據(jù)出棧,放入R1R7, PC存放器 .4.7 ARM指令的尋址方式4.7.7 相對(duì)尋址 與基址變址尋址方式相類似,相對(duì)尋址以程序計(jì)數(shù)器PC的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。 .4.7 ARM指令的尋

47、址方式4.7.7 相對(duì)尋址 以下程序段完成子程序的調(diào)用和前往,跳轉(zhuǎn)指令BL采用了相對(duì)尋址方式: BL NEXT ;跳轉(zhuǎn)到子程序NEXT處執(zhí)行 NEXT;子程序入口地址 MOV PC,LR ;從子程序前往 .主要內(nèi)容4.1 ARM微處置器的任務(wù)形狀4.2 ARM微處置器的運(yùn)轉(zhuǎn)方式4.3 ARM體系構(gòu)造的存儲(chǔ)器格式4.4 存放器組織 4.5 ARM的異常 4.6 ARM微處置器的指令系統(tǒng)根底 4.7 ARM指令的尋址方式 4.8 ARM指令集 4.9 Thumb指令及運(yùn)用 .4.8 ARM指令集ARM指令集總體分為六大類:1、數(shù)據(jù)處置指令;2、程序形狀存放器訪問指令;3、Load/Store指令;

48、4、跳轉(zhuǎn)指令轉(zhuǎn)移指令;5、異常中斷指令;6、協(xié)處置器指令 。.4.8 ARM指令集4.8.1數(shù)據(jù)處置指令數(shù)據(jù)傳送指令用于在存放器和存儲(chǔ)器之間進(jìn)展數(shù)據(jù)的雙向傳輸。算術(shù)邏輯運(yùn)算指令完成常用的算術(shù)與邏輯的運(yùn)算,該類指令不但將運(yùn)算結(jié)果保管在目的存放器中,同時(shí)更新CPSR中的相應(yīng)條件標(biāo)志位。比較指令不保管運(yùn)算結(jié)果,只更新CPSR中相應(yīng)的條件標(biāo)志位 。.4.8 ARM指令集數(shù)據(jù)處置指令包括:SUB:減法指令SBC:帶借位減法指令RSB:逆向減法指令RSC:帶借位逆向減法指令A(yù)ND:邏輯與指令ORR:邏輯或指令EOR:邏輯異或指令BIC:位去除指令MOV:數(shù)據(jù)傳送指令MVN:數(shù)據(jù)取反傳送指令CMP:比較指令

49、CMN:反值比較指令TST:位測(cè)試指令TEQ:相等測(cè)試指令A(yù)DD:加法指令A(yù)DC:帶進(jìn)位加法指令.4.8 ARM指令集4.8.2 乘法指令與乘加指令A(yù)RM微處置器支持的乘法指令與乘加指令共有6條,可分為運(yùn)算結(jié)果為32位和運(yùn)算結(jié)果為64位兩類,與前面的數(shù)據(jù)處置指令不同,指令中的一切操作數(shù)、目的存放器必需為通用存放器,不能對(duì)操作數(shù)運(yùn)用立刻數(shù)或被移位的存放器,同時(shí),目的存放器和操作數(shù)1必需是不同的存放器 。.4.8 ARM指令集乘法指令與乘加指令共有以下6條: MUL:32位乘法指令;MLA:32位乘加指令;SMULL:64位有符號(hào)數(shù)乘法指令;SMLAL:64位有符號(hào)數(shù)乘加指令;UMULL:64位無

50、符號(hào)數(shù)乘法指令;UMLAL:64位無符號(hào)數(shù)乘加指令 。.4.8 ARM指令集4.8.3 程序形狀存放器訪問指令A(yù)RM微處置器支持程序形狀存放器訪問指令,用于在程序形狀存放器和通用存放器之間傳送數(shù)據(jù)。程序形狀存放器訪問指令包括以下兩條:MRS:程序形狀存放器到通用存放器的數(shù)據(jù)傳送指令;MSR:通用存放器到程序形狀存放器的數(shù)據(jù)傳送指令 .4.8 ARM指令集4.8.4 加載/存儲(chǔ)指令A(yù)RM微處置器支持Load/Store指令用于在存放器和存儲(chǔ)器之間傳送數(shù)據(jù),加載指令用于將存儲(chǔ)器中的數(shù)據(jù)傳送到存放器,存儲(chǔ)指令那么完成相反的操作。.4.8 ARM指令集常用的Load/Store指令如下: LDR:字?jǐn)?shù)

51、據(jù)加載指令;LDRB:字節(jié)數(shù)據(jù)加載指令;LDRH:半字?jǐn)?shù)據(jù)加載指令;STR:字?jǐn)?shù)據(jù)存儲(chǔ)指令;STRB:字節(jié)數(shù)據(jù)存儲(chǔ)指令;STRH:半字?jǐn)?shù)據(jù)存儲(chǔ)指令.4.8 ARM指令集4.8.5 批量數(shù)據(jù)加載/存儲(chǔ)指令A(yù)RM微處置器所支持批量數(shù)據(jù)Load/Store指令可以一次在一片延續(xù)的存儲(chǔ)器單元和多個(gè)存放器之間傳送數(shù)據(jù),批量加載指令用于將一片延續(xù)的存儲(chǔ)器中的數(shù)據(jù)傳送到多個(gè)存放器,批量數(shù)據(jù)存儲(chǔ)指令那么完成相反的操作。常用的批量數(shù)據(jù)Load/Store指令如下:LDM:批量數(shù)據(jù)加載指令;STM:批量數(shù)據(jù)存儲(chǔ)指令 .4.8 ARM指令集4.8.6 跳轉(zhuǎn)指令跳轉(zhuǎn)指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),在ARM程序中有兩種方法

52、可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn):運(yùn)用專門的跳轉(zhuǎn)指令;直接向程序計(jì)數(shù)器PC寫入跳轉(zhuǎn)地址值。 .4.8 ARM指令集ARM指令集中的跳轉(zhuǎn)指令可以完成從當(dāng)前指令向前或向后的32MB的地址空間的跳轉(zhuǎn),包括以下4條指令 : B:跳轉(zhuǎn)指令;BL:帶前往的跳轉(zhuǎn)指令;BLX:帶前往和形狀切換的跳轉(zhuǎn)指令;BX:帶形狀切換的跳轉(zhuǎn)指令。.4.8 ARM指令集4.8.7 數(shù)據(jù)交換指令A(yù)RM微處置器所支持?jǐn)?shù)據(jù)交換指令能在存儲(chǔ)器和存放器之間交換數(shù)據(jù)。數(shù)據(jù)交換指令有如下兩條:SWP:字?jǐn)?shù)據(jù)交換指令SWPB:字節(jié)數(shù)據(jù)交換指令.4.8 ARM指令集4.8.8 移位指令操作ARM微處置器內(nèi)嵌的桶型移位器Barrel Shifter,支持?jǐn)?shù)據(jù)的各種移位操作,移位操作在ARM指令集中不作為單獨(dú)的指令運(yùn)用,它只能作為指令格式中的一個(gè)字段,在匯編言語中表示為指令中的選項(xiàng)。例如,數(shù)據(jù)處置指令的第二個(gè)操作數(shù)為存放器時(shí),就可以參與移位操作選項(xiàng)對(duì)它進(jìn)展各種移位操。 .4.8 ARM指令集移位操作包括如下6種類型,其中ASL和LSL是等價(jià)的,可以自在互換 : LSL:邏輯左移;ASL:算術(shù)左移;LSR:邏輯右移;ASR:算術(shù)右移;ROR:

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論