第一章:ARM概述及其基本编程模型
1.4 arm处理器模式
arm体系结构支持7中处理模式。
用户模式 (usr) 正常程序执行的模式
快速中断模式(fiq) 用于高速数据传输和通道处理
外部中断模式(irq) 用于通常的中断处理
特权模式(svc) 供操作系统使用的一种保护模式
数据访问中止模式(abt) 用于虚拟存储及存储保护
未定义指令中止模式(und) 用于支持通过软件仿真硬件的协处理器
系统模式(sys) 用于运行特权级的操作系统任务
备注:除用户模式为,其他的六种模式成为特权模式,而除系统模式外,剩下的五种模式又成为异常模式。每种异常模式都有特定的2个寄存器,用来保存特定异常模式的状态信息。
1.5 arm共有37个寄存器,可以分为两类:
1、通用寄存器31个
R0~R7共8个未分组寄存器,所有处理模式下都是同一个物理寄存器。
R8~R14有两个分组,一个分组为R8~R12,为fiq模式单独用了5个寄存器,故有10个寄存器。
另一个分组为R13~R14分组寄存器,5(异常模式)x2+2(用户模式和系统模式共用)共12个寄存器。
R13和R14都有特定的用途。一般R13用作堆栈指针。R14用作连接寄存器,保存子程序或者异常返回地
址,当然也可以当做通用寄存器。
R15为程序计数器,即PC。当向R15写入正常的地址时,程序将转向该地址并执行。注:由于arm指令是字对齐的,而存储结构中是按照字节存储的,也就是存储中的每一位代表一个字节,故要求写入R15的地址应该为4的倍数,也就是要求bits[1:0]=0b00。
2、状态寄存器6个
CPSR,7种模式共用,保存当前程序的状态信息。包括条件标志位、中断禁止位、当前处理器模式标志以及其他一些控制和状态位。
SPSR,5种异常模式各有一个专用的备份程序状态寄存器。当特定的异常中断发生时,用来保存CPSR中的内容,直到退出异常程序,再将保存的内容恢复到CPSR中。
关于状态寄存器的状态信息:
1、bits[31:28],条件标志位,分别保存N(表示结果正负)、Z(表示结果是否为零,CMP指令,=1表示相等)、C(进/借位标志,受加/减运算影响)、V(表示符号溢出,受加/减运算影响)
2、bit[27],Q标志位,在E系列处理器中表示增强的DSP指令是否发生溢出。
3、bits[7:0],控制位,分别为I(IRQ中断控制)、F(FIQ中断控制)、T(Thumb指令控制)、M[4:0](处理器模式控制)
1.6 arm异常中断
arm共有7种异常中断,包括复位、未定义指令、软件中断、