ARM7支持六种操作模式: (1) 用户模式(usr):正常的程序执行状态 (2) FIQ模式(fiq): 支持数据传送或通道处理 (3) IRQ模式(irq): 用于通用的中断处理 (4) 管理模式(svc):用于操作系统的保护模式 (5) 异常模式(abt):数据或者指令预取异常时进入 (6) 无定义模式(und):当无定义指令被执行时进入 (7) 软件控制,外部中断,异常处理都可以改变操作模式
大部分的应用程序在用户模式下执行
其他模式,比如管理模式,在中断、异常服务、或者访问被保护资源时进入
ARM 的中央寄存器集是16 个用户寄存器R0 – R15
这些寄存器均是32 位宽度,R0 – R12 没有其他特殊功能,寄存器R13 – R15在CPU中有特殊功能
R13被用作栈指针(stack pointer, SP)
R14被称为链接寄存器(link register, LR),当调用一个函数时返回地址被自动保存到链接 寄存器,在函数返回时有效
这使得快速进入和返回“叶”函数(不调用其他函数的函数)成为可 能
如果函数是分支的一部分(即该函数将调用另一个函数),链接寄存器必须入栈(R13)
R15 是程序计数器(program counter, PC)
有趣的是,许多指令也可以在R13 – R15中执行, 就像它们是标准的用户寄存器
ARM 中断的问题 ARM 的七种异常类型 --------- 1> 复位异常 2> 数据访问中止异常 3> 快速中断请求异常 4> 一般中断请求 5> 预取指令异常 6> 软件中断异常 7> 未定义异常 ------------------------- 问题: 1> 为什么除了 进入复位异常模式外,在别 的异常处理模式中都允 许FIQ 中断
2> 数据访问中止异常的优 先 级 大于 FIQ 异常,为什么在数据访问异常处理模式