- 用户模式(usr):ARM处理器的正常模式,运行该模式时,某些受保护系统资源不可访问
- 快速中断模式(fiq):用于高速数据传输或者通道处理
- 外部中断模式(irq):用于通用中断处理
- 管理模式(svc):操作系统使用的保护模式
- 数据访问终止模式(abt):当数据或者指令预取进入该模式,可用于虚拟存储或存储保护
- 系统模式(sys):运行具有特权的操作系统任务
- 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
- 未分组寄存器R0~R7:在所有模式下均指向相同物理寄存器。R8~R12对应两个物理寄存器。当运行在fiq时,访问R8_fiq~R12_fiq;此外,访问R8_usr~R12_usr。因此,运行模式转换或者异常处理时,可能造成存储数据的冲销。
- 分组寄存器R8~R14:R13习惯上用作堆栈寄存器;R14则用作子程序连接寄存器(Subroutine Link Register)也可作通用寄存器,每次访问的物理寄存器和运行模式有关。R13、R14各对应6个物理寄存器,其中系统模式和用户模式共用一个物理寄存器,其余5种模式分别对应不同的物理寄存器。
- 程序计数器(PC)R15:ARM状态下:位[1:0]为0,位[31:2]保存PC;Thumb状态下,位[0]为0,位[31:1]保存PC。PC=当前指令地址+8个字节。
- 当前程序状态寄存器CPSR:CPSR在任何模式下均可以被访问。同时每一种运行模式下都有SPSR。
- Thunb状态寄存器集是ARM状态下寄存器记集的一个子集,与ARM状态寄存器集存在对应关系。
- Thumb状态下,每种特权模式下PC、SP、LR、SPSR均指向一组物理寄存器。
- 复位:复位电平触发
- 未定义指令:处理器遇到不能处理的指令触发,可进行软件仿真
- 软件中断:执行SWI指令触发,可用于usr下调用特权操作指令
- 指令预取中止:取指失败触发
- 数据中止:数据访问失败触发
- IRQ:外部中断触发
- FIQ:快速中断触发
- 将下一条地址存入相应LR,从而异常处理返回能重新执行
- 将CPSR复制到相应的SPSR中
- 根据异常类型,强制设置CPSR的标志位
- 跳转至ISR
- 将LR的值减去相应的偏移量后送到PC
- 将SPSR复制到CPSR
- 若在异常处理中设置了中断禁止位,此时清除
复位→数据中断→FIQ→IRQ→预取指令中止→未定义、SWI