1.处理器工作模式
用户(usr):正常ARM程序执行状态
快中断(fiq):为支持数据传输或通道处理设计
中断(irq):用于一般用途的中断处理
管理(svc):操作系统保护模式
中止(abt): 数据或指令预取中止后进入
系统(sys):操作系统的特权用户模式
未定义(und):执行了一个未定义指令时进入
除用户模式以外,其他的所有6种模式称之为非用户模式(特权模式);除去用户模式和系统模式外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。
arm微处理器的工作模式可以通过改变软件改变,也可以通过外部中断或异常处理改变。大多数应用程序运行在用户模式下,此时,某些被保护的系统资源无法访问。
2.ARM寄存器
ARM寄存器分为通用寄存器和状态寄存器。通用寄存器用于保存数据和地址。状态寄存器用来标识或设置处理器的模式或工作状态等功能。ARM处理器有37个32位寄存器,其中31个通用寄存器,6个状态寄存器。但是这些寄存器不能同时被访问,最多可以有18个活动(16个数据寄存器,2个状态寄存器)。
⒈通用寄存器
①未分组寄存器:R0~R7(在中断或异常处理进行工作模式转换时,可能会造成寄存器中数据的破坏)
②分组寄存器:包括R8~R4(对于分组寄存器,每一次访问的物理寄存器与当前工作模式有关)
③程序计数器:寄存器R15用做程序寄存器(PC)。(用于控制程序中指令的执行顺序,正常运行时,PC指向CPU运行的下一条指令。每次取址后PC的值会自动修改以指向下一条指令。)
⒉状态寄存器
ARM体系结构包含一个当前程序状态寄存器CPSR(R16)和五个备份的程序状态寄存器(SPSRs)。CPSR可在任何工作模式下被访问,用来保存ALU中的当前操作信息、控制允许和禁止中断、设置处理器的工作模式等。备份的程序状态寄存器用来进行异常处理。
⒈条件码标志
N为1表示负数、Z为1表示运算结果为0、C为进位标志(加法产生进位时为1,减法产生借位时为0)、V为1表示有溢出。
⒉控制位
中断禁止位包括I、F为1时表示禁止。
T标志位用来区分处理器工作状态,为1时,程序运行于Thumb状态,为0则为ARM状态。
工作模式位M[4:0]用来区分处理器的工作状态。
M[4:0]的设置:
用户(usr) :1 0000,可访问寄存器:PC,CPSR,R0~R14
快中断(fiq) :1 0001,可访问寄存器:PC,CPSR,SPSR_fiq,R14_fiq-R8_fiq,R7~R0
中断(irq) :1 0010,可访问寄存器:PC,CPSR,SPSR_irq,R14_irq,R13_irq,R12~R0
管理(svc) :1 0011,可访问寄存器:PC,CPSR,SPSR_svc,R14_svc,R13_svc,R12~R0
中止(abt) : 1 0111,可访问寄存器:PC,CPSR,SPSR_abt,R14_abt,R13_abt,R12~R0
系统(sys) :1 1111,可访问寄存器:PC,CPSR,R0~R14
未定义(und) :1 1011,可访问寄存器:PC,CPSR,SPSR_und,R14_und,R13_und,R12~R0
⒊保留位
其他位暂时不使用。