- 10 -
z 超级用户模式 是操作系统一种受保护的模式
z 中止模式 在数据或指令预取指中止时进入该模式
z 系统模式 是操作系统一种特许的用户模式
z 未定义模式 当执行未定义的指令时进入该模式
除了用户模式之外 其它模式都被归为特权模式 特权模式用于服务中断 异常或者访问受保护的资
源
2.7
寄存器
ARM7TDMI-S 处理器总共有 37 个寄存器
z 31 个通用 32 位寄存器
z 6 个状态寄存器
这些寄存器并不是在同一时间全都可以被访问的 处理器状态和操作模式决定了程序员可以访问哪些
寄存器
2.7.1 ARM 状态寄存器集
在 ARM 状态中 16 个通用寄存器和 1 个或 2 个状态寄存器可在任何时候同时被访问 在特权模式中
与模式相关的分组寄存器可以被访问 图 2-3 所示为每种模式所能访问的寄存器
ARM 状态寄存器集包含 16 个可直接访问的寄存器 r0 r15 一个附加的寄存器
当前程序状态寄存器
CPSR 包含条件代码标志和当前模式位 寄存器 r0 r13 为保存数据或地址值的通用寄存器 寄存器 r14
和 r15 具有下面的特殊功能
连接寄存器 寄存器 14 作为一个子程序
连接寄存器
LR 当执行
连接分支
BL 指令时 r14 接
收 r15 的备份
在其它时候可将 r14 当成一个通用寄存器 对应的分组寄存器 r14_svc, r14_irq, r14_fiq,
r14_abt 和 r14_und 与之相似 当发生中断和异常 或者当中断或异常子程序中的 BL
指令执行时 用于保存 r15 的返回值
程序计数器 寄存器 15 用于保存
程序计数器
PC
在 ARM 状态中 r15 中的 bits[1:0] 为 0 bits[31:2] 包含 PC 值 在 Thumb 状态中 bit[0]
为 0 bits[31:1] 包含 PC 值
在特权模式中 另外一个寄存器 被保存的程序状态寄存器 SPSP 可以被访问 它包含了条件代码标
志和作为异常的结果所保存的模式位 此异常导致进入当前模式 关于程序状态寄存器的描述见后面的章
节
分组寄存器有一个模式标识符 用于指示它们被映射到哪个用户模式寄存器 这些模式标识符如表 2-1
所示
表 2-1 寄存器模式标识符
模式 模式标识符
用户 usr
快速中断 fiq
中断 irq
超级用户 svc
中止 abt
系统 sys
未定义 und