ARM微处理器支持7种工作模式,其中,除用户模式之外的其余6种称为非用户模式,或特权模式(Privileged Modes);而在特权模式中,除系统模式之外的其余5种又称为异常模式(Exception Modes)。处理器的各种工作模式由当前程序状态寄存器CPSR的低4位M[4:0]决定。
二、处理器工作状态
(1)ARM状态:处理器执行32位的ARM指令集时,工作在这种状态。
(2)Thumb状态:处理器执行16位的thumb指令集时,工作在这种状态。
三、寄存器组织
ARM处理器总共有37个寄存器:31个通用寄存器,包括程序计数器PC;6个状态寄存器。各寄存器均为32位。
根据ARM处理器的不同工作模式,可将全部寄存器分成7组;各工作模式拥有属于自己的寄存器组,也只能访问自己的寄存器组。各寄存器组间,有些寄存器是重叠的,有些是自己特有的。 程序状态寄存器包括寄存器CPSR和寄存器SPSR。当前程序状态寄存器CPSR可以 在任何工作模式下被访问,SPSR用来保存CPSR的值,其格式同CPSR。
四、异常中断
异常中断是指处理器由于外部或内部的原因,停止执行当前任务,转而处理特定的事件,处理完后返回原程序,继续执行。
异常类型 | 工作模式 | 特定地址(低端) | 特定地址(高端) | 优先级 |
复位 | 管理模式 | 0x00000000 | 0xFFFF0000 | 1 |
未定义指令 | 未定义指令中止模式 | 0x00000004 | 0xFFFF0004 | 6 |
软件中断(SWI) | 管理模式 | 0x00000008 | 0xFFFF0008 | 6 |
指令预取中止 | 中止模式 | 0x0000000C | 0xFFFF000C | 5 |
数据访问中止 | 中止模式 | 0x00000010 | 0xFFFF0010 | 2 |
外部中断请求(IRQ) | 外部中断模式 | 0x00000018 | 0xFFFF0018 | 4 |
快速中断请求(FIQ) | 快速中断模式 | 0x0000001C | 0xFFFF001C | 3 |