1) 31個通用寄存器,包括程序計數器(PC)。這些寄存器都是32位的;
2)6個狀態寄存器。這些寄存器也是32位的,但是只使用了其中的12位。
ARM通用寄存器
通用寄存器(R0-R15)可分為三類:不分組寄存器R0~R7;分組寄存器R8~R14;程序計數器PC。
1)不分組寄存器R0~R7
不分組寄存器R0~R7在所有處理器模式下,它們每一個都訪問一樣的32位寄存器。它們是真正的通用寄存器,沒有體系結構所隱含的特殊用途。
2)分組寄存器R8~R14
分組寄存器R8~R14對應的物理寄存器取決於當前的處理器模式。若要訪問特定的物理寄存器而不依賴當前的處理器模式,則要使用規定的名字。
寄存器R8~R12各有兩組物理寄存器:一組為FIQ模式,另一組為除了FIQ以外的所有模式。寄存器R8~R12沒有任何指定的特殊用途,只是在作快速中斷處理時使用。寄存器R13,R14各對應6個分組的物理寄存器,1個用於用戶模式和系統模式,其它5個分別用於5種異常模式。寄存器R13通常用做堆棧指針,稱為SP;寄存器R14用作子程序鏈接寄存器,也稱為LR。
3)程序計數器PC
寄存器R15用做程序計數器(PC)。
ARM程序狀態寄存器
在所有處理器模式下都可以訪問當前的程序狀態寄存器CPSR。CPSR包含條件碼標志,中斷禁止位,當前處理器模式以及其它狀態和控制信息。每種異常模式都有一個程序狀態保存寄存器SPSR。當異常出現時,SPSR用於保存CPSR的狀態。
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)條件碼標志:
N,Z,C,V大多數指令可以檢測這些條件碼標志以決定程序指令如何執行。
2)控制位:
最低8位I,F,T和M位用做控制位。當異常出現時改變控制位。當處理器在特權模式下也可以由軟件改變。
中斷禁止位:I置1則禁止IRQ中斷;F置1則禁止FIQ中斷。
T位:T=0指示ARM執行;T=1指示Thumb執行。在這些體系結構系統中,可自由地使用能在ARM和Thumb狀態之間切換的指令。
模式位: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
系統
PC,R14~R0,CPSR
3)其他位
程序狀態寄存器的其他位保留,用作以後的擴展。
ARM核工作在用戶模式,R0~R15可用。
存儲器格式
ARM體系結構將存儲器看作是從零地址開始的字節的線性組合。字節零到字節三放置第一個字(WORD),字節四到字節七存儲第二個字,以此類推。
ARM體系結構可以用兩種方法存儲字數據,分別稱為大端格式和小端格式。
大端格式
在這種格式中,字數據的高位字節存儲在低地址中,而字數據的低位字節則存放在高地址中
小端格式
在這種格式中,字數據的高位字節存儲在高地址中,而字數據的低位字節則存放在低地址中