ARM 学习笔记01
User:非特权模式,大部分任务执行在这种模式
FIQ:当一个高优先级(fast)中断产生时将会进入这种模式
IRQ:当一个低优先级(normal)中断产生时将会进入这种模式
Supervisor(SVC):当复位或软中断指令执行时将会进入这种模式
Abort:当存取异常时将会进入这种模式
Undef:当执行未定义指令时会进入这种模式
System:使用和User模式相同寄存器集的特权模式
可以通过软件来进行模式切换,或者发生各类中断、异常时CPU自动进入相应的模式;除User模式外,其余6种工作模式都属于特权模式;特权模式中除了System模式以外的其余5种模式称为**异常模式;**大多数程序运行于用户模式;** 进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
ARM体系的CPU有两种工作状态
ARM
THumb
CPU上电处于ARM状态
二、寄存器
ARM有37个寄存器
每个寄存器都是32位(4字节)
1个用作PC(Program Counter)
1个用作CPSR(Current Program Status Register)
5个用作SPSR(Saved Program Status Registers)
30个通用寄存器
没有标三角的寄存器是在七种模式下公用的,标三角的是有额外的寄存器
R13(SP):栈指针寄存器,用于保存堆栈指针
R14(LR):程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(PC)的备份,而当发生中断或异常时,R14保存R15的返回值
R15(PC):记录当前程序运行的位置
CPSR:当前程序状态寄存器
SPSR:保存之前CPSR状态的寄存器
CPSR寄存器
- Mode位:处理器模式位
序号 | Mode位 | 处理器模式 |
---|---|---|
1 | 10000 | User mode |
2 | 10010 | IRQ |
3 | 10111 | Abort mode |
4 | 11111 | System mode |
5 | 10001 | FIQ mode |
6 | 10011 | SVC mode |
7 | 11011 | Undfined mode |
- T位和J位
T = 0;J=0 处理器处于 ARM 状态(一条指令4个字节)
T = 1;J=0 处理器处于 Thumb 状态(一条指令2个字节) - 中断禁止位:
I = 1: 禁止 IRQ.
F = 1: 禁止 FIQ - 条件位:
N = Negative result from ALU
Z = Zero result from ALU
C = ALU operation Carried out or borrow
V = ALU operation oVerflowed - CPSR / SPSR操作指令
mrs r0,CPSR (写入)
msr CPSR,r0 (读出)
三、练习测验
1. ARM有哪些工作模式?
2. ARM核有多少个寄存器?
3. PC和LR寄存器的别名?
4. R13别名是什么?
5. 哪种模式使用的寄存器最少?
6. 在 Thumb和ARM指令区别?
7. CPSR的哪位反映了处理器的状态?