ARM汇编
ARM 处理器有 7 中常见的运行模式: User(用户模式)、 FIQ(快中断模式)、 IRQ(中断模式)、 SVC(管理模式)、 Abort(终止模式)、 Undef(未定义模式)和 Sys(系统模式)。其中 User 是非特权模式,其余 6 中都是特权模式。但新的 Cortex-A 架构加入了TrustZone 安全扩展,所以就新加了一种运行模式:Monitor(安全模式),新的处理器架构还支持虚拟化扩展,因此又加入了另一个运行模式: Hyp(虚拟化模式),所以 Cortex-A7 处理器有9 种处理模式(上电后默认进入SVC模式)。
每一种模式都有一组寄存器供异常处理程序使用,这样的目的是为了保证在进入异常模式以后,用户模式下的寄存器不会被破坏。 值得注意的是,一般Cortex-A系列的处理器都有常见的7中模式,而Cortex-M只有两种运行模式,特权模式和非特权模式,但是 Cortex-A 就有 9 种运行模式。
程序状态寄存器
N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变
在ARMv5以前的版本Q标志位没有意义,属于带扩展的位。在ARMv5以后的版本Q位用于判断是否发生了溢出。
CPSR的低8位统称为控制位。当发生异常时,这些位也发生了相应的变化。另外,在特权模式下,也可以通过软件编程的方式来改变这些位的值。
中断禁止位
I=1,IQR被禁止, F=1,FIQ被禁止。
状态控制位
T=0是ARM状态, T=1是Thumb状态。
模式控制位
M[4:0]为模式控制位。
值得注意的是,对于Cortex-M3/M4系列的处理器,与CPSR对应的是xPSR。
xPSR实际上对应3个寄存器: ① APSR:Application PSR,应用PSR ② IPSR:Interrupt PSR,中断PSR ③ EPSR:Exectution PSR,执行PSR