ARM学习之ARM基础知识(二)

ARM寄存器组织概要

Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器:Monitor模式r13_mon,r14mon,spsr mon
ARM学习之ARM基础知识(二)_第1张图片

​ARM 寄存器

​ARM 有37个32-Bits长的寄存器 :
1个PC(program counter,程序计数器)

1个CPSR(current program status register,当前程序状态字寄存器)

5个SPSR(saved program status registers,保存程序状态寄存器)

30个通用寄存器

处理器的工作模式决定操作哪组寄存器。


寄存器分组

ARM学习之ARM基础知识(二)_第2张图片


Cortex-A8寄存器

Cortex-A体系结构下有40个32-Bits长的寄存器Cortex-A多出3个寄存器,Monitor模式r13_mon,r14mon,spsr mon
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190415174706597.pnARM学习之ARM基础知识(二)_第3张图片


程序状态字寄存器

ARM学习之ARM基础知识(二)_第4张图片
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]:处理器工作模式控制位ARM学习之ARM基础知识(二)_第5张图片


程序计数器(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

你可能感兴趣的:(ARM)