arm體系結(jié)構(gòu)-處理器模式_第1頁
arm體系結(jié)構(gòu)-處理器模式_第2頁
arm體系結(jié)構(gòu)-處理器模式_第3頁
arm體系結(jié)構(gòu)-處理器模式_第4頁
arm體系結(jié)構(gòu)-處理器模式_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ARM編程模式ARM

寄存器Thumb狀態(tài)寄存器CPSR寄存器ARM編程模式ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式,如下表所示。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的務(wù)等任與用戶模式類似,但具有可以直接切換到其它模式等快中斷(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)入此模式處理器模式(如下表所示):(1)模式用未定義指令異常響應(yīng)時(shí)進(jìn)入此模式支持硬件協(xié)處理器的軟件仿真未定義(und)正常程序工作模式

不能直接切換到其它模式用戶備注說明處理器模式除用戶模式外,其它模式均為特以權(quán)模式。ARM

寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或用者可選為只允許)

模式下。此外,

模式可以

的切換處理器模式,而用戶模式不能直接切進(jìn)用換到別的模式。未定義

(und)中止(abt)管理(svc)中斷(irq)快中斷

(fiq)系統(tǒng)(sys)(2)異常模式接用務(wù)式支真支理不能直接切換到其它模式正常程序工作模式備注說明處理器模式用戶

(usr)系統(tǒng)

(sys)未定義

(und)中止(abt)快中斷

(fiq)中斷

(irq)管理

(svc)這五種模式稱為異常模式。它們除了可用以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器操進(jìn)入相應(yīng)的模式。每種異常模式都有一些

此獨(dú)立的寄存器,以避免異常退出時(shí)用戶模儲(chǔ)用式的狀態(tài)不可靠。(3)用戶和系統(tǒng)模式用務(wù)未定義指令異常響應(yīng)時(shí)進(jìn)入此模式仿支持硬件協(xié)處理器的真未定義

(und)中止(abt)快中斷

(fiq)中斷(irq)正備注說明這兩種模式都不能由異常進(jìn)入,而且它支們使用完全相同的寄存器組。理

系統(tǒng)模式是

模式,不受用戶模式的用

限制。操作系統(tǒng)在該模式下

用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一管理

(svc)

些任務(wù)可以使用這個(gè)模式

一些受用控的資源。儲(chǔ)處理器模式用戶

(usr)系統(tǒng)

(sys)寄存器在ARM7TDMI處理器

有37個(gè)用戶可見的寄存器。其中,31個(gè)通用32位寄存器及6個(gè)狀態(tài)寄存器.在不同的工作模式和處理器狀態(tài)下,程序員可以器也不盡相同。的寄存o寄存器類別寄存器在匯編中的名稱各模式下實(shí)際的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0所有的37個(gè)寄存器,分成R1R1(a2)兩大類:R2R2(a3)R3R3(a4)R4(v1)31個(gè)通用32位寄存器;R46個(gè)狀態(tài)寄存器。R5R5(v2)R6R6(v3)R7R7(v4)R8R8_fiqR8(v5)R9R9_fiqR9(SB,v6)R10R10_fiqR10(SL,v7)R11R11_fiqR11(FP,v8)R12R12_fiqR12(IP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR13(SP)R14R14_svcR14_abtR14_undR14_irqR14_fiqR14(LR)R15R15(PC)狀態(tài)寄CPSRCPSRSPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq9TARM狀態(tài)各模式下的寄存器0TonySPSRCPSR狀態(tài)寄存器R15(PC)R14(LR)R13(SP)R12(IP)R11(FP,v8)R10(SL,v7)R9(SB,v6)R8(v5)R7(v4)R6(v3)R5(v2)R4(v1)R3(a4)R2(a3)R1(a2)R0(a1)通用寄存器和程序計(jì)數(shù)器各模式下實(shí)際

的寄存器寄存器類寄存器在匯編中別

的名稱無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)

管理SPSR_abtR14_abtR13_abt中止SPSR_undR14_undR13_und未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R9_fiqR10_fiqR11_fiqR12_fiqR13_fiqR14_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下可以的寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13(SP)R12(IP)R1(a2)R0(a1)通器計(jì)快中斷中斷系統(tǒng)用戶寄存器類

寄存器在匯編中別

的名稱一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1的寄存器未定義各模式下實(shí)際管理

中止R0在匯編語言中寄存器R15(PC)R15CPSRSPSR_abtCPSRSPSR狀態(tài)寄存器SPSR_abtSPSR_undSPSR_irqSPSR_fiq無11TR0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。R14_fiqR14_irqR14_undR14_abtR14_svcR14R14(LR)R13(SP)R12(IP)R11(FP,v8)R10(SL,v7)R9(SB,v6)R8(v5)通器計(jì)數(shù)器快中斷中斷系統(tǒng)用戶寄存器類寄存器在匯編中別

的名稱R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R5R6R3R4R1R2的寄存器各模式下實(shí)際管理

中止未定義R0其中R0~R7為未oR15(PC)R15CPSRSPSR_abtCPSR狀態(tài)寄存器SPSRSPSR_abtSPSR_undSPSR_irqSPSR_fiq無分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。R14(LR)R13(SP)R7R6R5R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0(a1)快中斷中斷系統(tǒng)用戶的寄存器各模式下實(shí)際管理

中止未定義R0寄存器類

寄存器在匯編中別

的名稱R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄R15(PC)R15CPSRSPSR_abtCPSR狀態(tài)寄存器SPSRSPSR_abtSPSR_undSPSR_irqSPSR_fiq無Tony存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器R8

fiqR8寄存器類別寄存器在匯編中的名稱各模式下實(shí)際的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)寄存器R8~R12有兩個(gè)分組的物R3(a4)理寄存器。一個(gè)用于除FIQ模式之R4(v1)R5(v2)外的所有寄存器模式,另一個(gè)用于R6(v3)FIQ模式。這樣在發(fā)生FIQ中斷后,R7(v4)可以加速FIQ的處理速度。R8(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_fiqTony寄存器類別寄存器在匯編中的名稱各模式下實(shí)際的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)寄存器R13、R14分別有6個(gè)分組R8_fiqR9(SB,v6)的物理寄存器。一個(gè)用于用戶和系R9_fiqR10(SL,v7)統(tǒng)模式,其余5個(gè)分別用于5種異常R10_fiqR11(FP,v8)模式。R11_fiqR12(IP)R12_fiqR13(SP)R

3R

3R

3R

3R

3

iR

3

fiR13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqTony寄存器類寄存器在匯編中別

的名稱的寄存器用戶系統(tǒng)未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)各模式下實(shí)際管理

中止R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R6(v3)R5寄存器R13常作為堆棧指針R7(v4)R8(v5)(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其R8_fiqR9(SB,v6)R9_fiqR10(SL,v7)R10_fiqR11(FP,v8)R11_fiqR12(IP)R12_fiqR13(SP)它功能,只是

上都這樣使用。但是在Thumb指令集中存在使用R13的指令。R13

R13_svc

R13_abt

R13_und

R13_irqR13_fiqR14(LR)R14

R14_svcR14_fiqR15(PC)R14_abt

R14_und

R14_irqR15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqTony寄存器類別寄存器在匯編中的名稱各模式下實(shí)際的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R4(v1)R14為寄存器(LR),在結(jié)構(gòu)上有R5(v2)兩個(gè)特殊功能:R6(v3)在每種模式下,模式自身的R14版本用于R7(v4)R8(v5)保存子程序返回地址;R9(SB,v6)當(dāng)發(fā)生異常時(shí),將R14對應(yīng)的異常模式版R10(SL,v7)本設(shè)置為異常返回地址(有些異常有一個(gè)小R11(FP,v8)的固定偏移量)。R12(IP)R13(SP)R13R13_svcR13_abtR13_undR13_irq

R13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irq

R14_fiqR15(PC)R15狀態(tài)寄存器onyCPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqTLable”指令的下R14寄存器與子程序調(diào)用程序A執(zhí)行過程中調(diào)用程序B;程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序B。同時(shí)硬件將“BL一條指令所在地址存入R14;3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;Lable程序A程序B地址ABL

Lable???PC,LRMOVR14R14(地址A)Lable???SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt無SPSRCPSRCPSR狀態(tài)寄存器R15R15(PC)R14(LR)R13(SP)qR12(IP)R11(FP,v8)qqR10(SL,v7)R9(SB,v6)R8(v5)R7(v4)R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器各模式下實(shí)際的寄存器寄存器在匯編中的名稱寄存器類別寄存器類寄存器在匯編中別

的名稱的寄存器用戶系統(tǒng)未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)各模式下實(shí)際管理

中止R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R7(v4)R8(v5)寄存器R15為程序計(jì)數(shù)器(PC),它指向R9(SB,v6)R10(SL,v7)正在取指的地址。可以認(rèn)為它是一個(gè)通用寄存器,但是對于它的使用有許多與指令相關(guān)R11(FP,v8)的限制或特殊情況。如果R15使用的方式超qqR12(IP)qR13(SP)qR14(LR)qR15(PC)出了這些限制,那么結(jié)果將是不可

的。R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt無SPSRCPSRCPSR狀態(tài)寄存器R15R15(PC)R14(LR)R13(SP)R12(IP)R11(FP,v8)R10(SL,v7)R9(SB,v6)R8(v5)R7(v4)R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷系統(tǒng)用戶的寄存器各模式下實(shí)際管理

中止未定義R0寄存器類寄存器在匯編中別

的名稱寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被

。每種異常都有自己的SPSR,在因?yàn)楫惓J录M(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。詳細(xì)描述以后還會(huì)講。Thumb狀態(tài)寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接

的寄存器為:8個(gè)通用寄存器R0~R7;程序計(jì)數(shù)器(PC);堆棧指針(SP);寄存器(LR);有條件

程序狀態(tài)寄存器(

CPSR)。Thumb

狀態(tài)ARM

狀態(tài)R0R1R2R3R4R5R6R7堆棧指針(SP)連接寄存器(LR)程序計(jì)數(shù)器(PC)當(dāng)前程序狀態(tài)寄存器(C

P

SR

)被保存程序狀態(tài)寄存器(

SP

SR

)R0R1R2R3R4R5R6R7R8R9R10R11R12堆棧指針(R13)連接寄存器(R14)程序計(jì)數(shù)器(R15)當(dāng)前程序狀態(tài)寄存器(C

P

SR

)被保存程序狀態(tài)寄存器(SP

SR

)在Thumb狀態(tài)中高寄存器在Thumb狀態(tài)中,高寄存器(R8~R15)不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語言程序員對它們的受到限制,但可以將它們用于快速暫存??梢允褂肕OV、CMP和ADD指令對高寄存器操作.程序狀態(tài)寄存器ARM7TDMI內(nèi)核包含1個(gè)CPSR和5個(gè)供異常處理程序使用的SPSR。CPSR反映了當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)志(負(fù)(N)、零(Z)、進(jìn)位(C)和溢出(V));2個(gè)中斷

位,分別控制一種類型的中斷;5個(gè)對當(dāng)前處理器模式進(jìn)行編碼的位;1個(gè)用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的位。NZCVQ保留位IFTM4M3M2M1M031

30

29

28

277

6

543

2

1

0(1)條件代碼標(biāo)志各標(biāo)志位的含義如下:N

運(yùn)算結(jié)果的最

反映在該標(biāo)志位。對于有符號二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z

指令結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”),否則Z=0;313029282776543210NZCVQ保留位IFTM4M3M2M1M0各標(biāo)志位的含義如下:產(chǎn)C

當(dāng)進(jìn)行加法運(yùn)算(包括CMN指令),并且最

產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算(包括CMP

指令),并且最

生借位時(shí)C=0,否則C=1。對于結(jié)合移位操作的非加法/減法指令,C為從最

最后移出的值,其它指令C通常不變;V當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號溢出時(shí)V=1,否則V=0,其它指令V通常不變。313029282776543210NZCVQ保留位IFTM4M3M2M1M0(2)控制位NZCVQ保留位IFTM4M3M2M1M0CPSR的最低8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)

模式時(shí),可用

作這些位。它們分別是:位;中斷T位;模式位。31

30

29

28

277

6

543

2

1

0中斷 位包括I和F位:;。當(dāng)I位置位時(shí),IRQ中斷被當(dāng)F位置位時(shí),F(xiàn)IQ中斷被T位反映了正在操作的狀態(tài):當(dāng)T位置位時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)T位清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行。313029282776543210NZCVQ保留位IFTM4M3M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論