ARM处理器模式
ARM处理器具有七种运行模式,如下表所示:
处理器模式 | 描述 |
---|---|
用户模式(user) | 正常程序执行的模式 |
快速中断模式(FIQ) | 用于高速数据传输和通道处理 |
外部中断模式(IRQ) | 用于通常的中断处理 |
特权模式(SVE) | 供操作系统使用的一种保护模式 |
数据访问中止模式(abt) | 用于虚拟存储及存储保护 |
未定义指令中止模式(und) | 用于支持通过软件方针硬件的协处理器 |
系统模式(sys) | 用于运行特权级的操作系统任务 |
除用户模式以外,其他6种处理器模式称之为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以进行处理器模式的切换。除系统模式外,其他5种特权模式又称之为异常模式。
处理器模式可以通过软件来进行控制,也可以通过异常或者外部中断处理过程进行切换。当处理器发生异常时,处理器进入异常工作模式,在每一种异常工作模式下,处理器具有一套单独的寄存器组,用于保护进入异常模式后,不会覆盖用户的寄存器(程序运行状态)信息。
寄存器组介绍:
ARM共有31个通用寄存器,包括PC寄存器,6个状态寄存器。
通用寄存器可以分为三组:
- 未备份寄存器:R0-R7
在所有处理器模式下,都对应同一个物理寄存器。任何需要使用通用寄存器的场合都可以使用未备份寄存器。
- 备份寄存器:R8-R14
其中R8-R12是每个寄存器对应两个不同的物理寄存器,在用户模式下以及快速中断模式下,使用的是两种不同的寄存器。
对于寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式和系统模式共用的,另外5个是对应于其他五种处理器模式。
其中寄存器R13可以用作栈指针,但是并没有强制性要求必须用作栈指针。
R14寄存器被称之为连接寄存器(LR),可以用于保存返回地址。
- 程序计数器R15
PC指针,