ARM處理器共有37個寄存器:
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體系結構可以用兩種方法存儲字數據,分別稱為大端格式和小端格式。 大端格式 在這種格式中,字數據的高位字節存儲在低地址中,而字數據的低位字節則存放在高地址中 小端格式 在這種格式中,字數據的高位字節存儲在高地址中,而字數據的低位字節則存放在低地址中 |