|
ARM處理器共有37個寄存器:
1) 31個通用寄存器,包括程序計數(shù)器(PC)。這些寄存器都是32位的;
2)6個狀態(tài)寄存器。這些寄存器也是32位的,但是只使用了其中的12位。
ARM通用寄存器 通用寄存器(R0-R15)可分為三類:
不分組寄存器R0~R7;分組寄存器R8~R14;程序計數(shù)器PC。
1)不分組寄存器R0~R7 不分組寄存器R0~R7在所有處理器模式下,它們每一個都訪問一樣的32位寄存器。它們是真正的通用寄存器,沒有體系結(jié)構(gòu)所隱含的特殊用途。
2)分組寄存器R8~R14 分組寄存器R8~R14對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。若要訪問特定的物理寄存器而不依賴當(dāng)前的處理器模式,則要使用規(guī)定的名字。 寄存器R8~R12各有兩組物理寄存器:一組為FIQ模式,另一組為除了FIQ以外的所有模式。寄存器R8~R12沒有任何指定的特殊用途,只是在作快速中斷處理時使用。寄存器R13,R14各對應(yīng)6個分組的物理寄存器,1個用于用戶模式和系統(tǒng)模式,其它5個分別用于5種異常模式。寄存器R13通常用做堆棧指針,稱為SP;寄存器R14用作子程序鏈接寄存器,也稱為LR。
3)程序計數(shù)器PC 寄存器R15用做程序計數(shù)器(PC)。 ARM程序狀態(tài)寄存器 在所有處理器模式下都可以訪問當(dāng)前的程序狀態(tài)寄存器CPSR。CPSR包含條件碼標(biāo)志,中斷禁止位,當(dāng)前處理器模式以及其它狀態(tài)和控制信息。每種異常模式都有一個程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時,SPSR用于保存CPSR的狀態(tài)。
CPSR和SPSR的格式如表所示
CPSR和SPSR的格式 31 30 29 28 27 26~8 7 6 5 4 3 2 1 0
N Z C V Q DNM ( RAZ ) I F T M M M M M
1)條件碼標(biāo)志: N,Z,C,V大多數(shù)指令可以檢測這些條件碼標(biāo)志以決定程序指令如何執(zhí)行。
2)控制位: 最低8位I,F(xiàn),T和M位用做控制位。當(dāng)異常出現(xiàn)時改變控制位。當(dāng)處理器在特權(quán)模式下也可以由軟件改變。 中斷禁止位:I置1則禁止IRQ中斷;F置1則禁止FIQ中斷。 T位:T=0指示ARM執(zhí)行;T=1指示Thumb執(zhí)行。在這些體系結(jié)構(gòu)系統(tǒng)中,可自由地使用能在ARM和Thumb狀態(tài)之間切換的指令。
模式位:M0,M1,M2,M3和M4(M[4:0])是模式位,這些位決定處理器的工作模式,如表所示。
表ARM工作模式M[4:0] M[4:0] 模式可訪問的寄-存器
0b10000 用戶 PC,R14~R0,CPSR
0b10001 FIQ PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq
0b10010 IRQ PC,R14_irq~R8_fiq,R12~R0,CPSR,SPSR_irq
0b10011 管理 PC,R14_svc~R8_svc,R12~R0,CPSR,SPSR_svc
0b10111 中止 PC,R14_abt~R8_abt,R12~R0,CPSR,SPSR_abt
0b11011 未定義 PC,R14_und~R8_und,R12~R0,CPSR,SPSR_und
0b11111 系統(tǒng) PC,R14~R0,CPSR
3)其他位 程序狀態(tài)寄存器的其他位保留,用作以后的擴(kuò)展。 ARM核工作在用戶模式,R0~R15可用。 存儲器格式 ARM體系結(jié)構(gòu)將存儲器看作是從零地址開始的字節(jié)的線性組合。字節(jié)零到字節(jié)三放置第一個字(WORD),字節(jié)四到字節(jié)七存儲第二個字,以此類推。 ARM體系結(jié)構(gòu)可以用兩種方法存儲字?jǐn)?shù)據(jù),分別稱為大端格式和小端格式。 大端格式 在這種格式中,字?jǐn)?shù)據(jù)的高位字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低位字節(jié)則存放在高地址中 小端格式 在這種格式中,字?jǐn)?shù)據(jù)的高位字節(jié)存儲在高地址中,而字?jǐn)?shù)據(jù)的低位字節(jié)則存放在低地址中 |
|