ARM寄存器组织概要
Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器:Monitor模式r13_mon,r14mon,spsr mon
ARM 寄存器
ARM 有37个32-Bits长的寄存器 :
1个PC(program counter,程序计数器)
1个CPSR(current program status register,当前程序状态字寄存器)
5个SPSR(saved program status registers,保存程序状态寄存器)
30个通用寄存器
处理器的工作模式决定操作哪组寄存器。
寄存器分组
Cortex-A8寄存器
Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器,Monitor模式r13_mon,r14mon,spsr mon
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190415174706597.pn
程序状态字寄存器
N位:符号位,结果为负,N = 1;结果为正或零,N = 0。
Z位:指令结果为0则置1,否则置0。
C位:表示运算的进位、借位等。
V位:结果溢出标志位。
I位: I = 1,禁止IRQ中断。
F位:F = 1,禁止FIQ中断。
T位:状态控制位,T = 0,32位ARM指令状态。T = 1,16位Thumb指令状态。
M[4:0]:处理器工作模式控制位
程序计数器(PC)
处理器工作在ARM状态:
所有指令32bits宽
所有指令必须word对齐
所以pc值由bits[31:2]决定,bits[1:0]未定义(所以指令不能halfword/byte对齐).
处理器工作在Thumb状态:
所有指令16bits宽
所有指令必须halfword对齐
所以pc值由bits[31:1]决定,bits[0]未定义(所以指令不能byte对齐).
处理器工作在Jazelle状态:
所有指令8bits宽
处理器执行word存取一次取4条指令
ARM内核异常处理过程
异常产生时:
1、拷贝CPSR到SPSR_
2、设置适当的CPSR位:
(1)改变处理器状态进入ARM态
(2) 改变处理器模式进入相应的异常模式
(3)设置禁止位禁止相应的中断(如果需要)
3、保存返回地址到LR_
4、设置PC为相应的异常向量
异常处理完返回:
1、从SPSR_恢复CPSR
2、从LR_恢复PC