一,ARM状态下的寄存器组织
ARM处理器有37个寄存器,包括31个通用寄存器(含PC)和6个状态寄存器。如图:
1,状态寄存器
状态寄存器公有6个,其中除了公用的CPSR之外,还有分组的SPSR,程序状态寄存器的格式为:
其中,条件标志码为N,Z,C,V,Q; 分别为符号标志位,全0标志位,进借位标志,溢出标志,增强的DSP运算指令是否标志。
控制位为I,F,T,M4-M0; 其中I,F为控制中断的,T为ARM指令与Thumb指令切换的标志位。M4~M0为模式选择位。
中间的26到8位保留。
2,通用寄存器
除了状态寄存器外,剩下的31个寄存器都为通用寄存器。
总结:ARM处理器工作在不同模式,使用的寄存器有所不同,共同点是:无论何种模式,R15均作为PC使用;而是CPSR为当前程序状态寄存器;三是R0~R7为公用通用寄存器。不同之处在于高端7个通用寄存器和状态寄存器在不同模式下不同。
二,Thumb/Thumb-2状态下的寄存器组织
Thumb状态下的寄存器组是ARM状态下寄存器组的子集,thumb状态下的寄存器组如上。
高位寄存器R8~R12没有放其中,即高位寄存器并不是标准寄存器集的一部分,但是可使用汇编语言程序受限制的访问这些寄存器,将其用做快速的暂存器。使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。