ARM 体系的 CPU 有以下 7 种工作模式。
- 用户模式(usr): ARM 处理器正常的程序执行状态。
- 快速中断模式(fiq): 用于高速数据传输或通道处理。
- 中断模式(irq): 用于通用的中断处理。
- 管理模式(svc): 操作系统使用的保护模式。
- 数据访问终止模式(abt): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
- 系统模式(sys): 运行具有特权的操作系统任务。
- 未定义指令中止模式(und): 当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
可以通过软件来进行模式切换,或者发生各类中断、异常时 CPU 自动进入相应的模式。除用户模式外,其他 6 种工作模式都属于特权模式。大多数程序运行于用户模式,进入特权模式是为了处理中断、异常,或者访问被保护的系统资源。
另外,ARM 体系的 CPU 有以下两种工作状态。
- ARM 状态: 此时处理器执行32位的字对齐的 ARM 指令。
- Thumb 状态: 此时处理器执行16位的、半字对齐的 Thumb 指令。
当 CPU 一上电就处于 ARM 状态,一般情况下无需关心 CPU 的工作状态。