文章目录
1,ARM产品线
2,ARM体系架构
3,ARM的工作模式
- ARM主要有七种工作模式
模式 | 含义 |
---|---|
User(普通模式) | 非特权模式,大部分任务执行在这种模式 |
FIQ | 当一个高优先级(fast) 中断产生时将会进入这种模式 |
IRQ(中断模式) | 当一个低优先级(normal) 中断产生时将会进入这种模式 |
Supervisor(超级用户模式) | 当复位或软中断指令执行时将会进入这种模式 |
Abort | 当存取异常时将会进入这种模式 |
Undef | 当执行未定义指令时会进入这种模式 |
System | 使用和User模式相同寄存器集的特权模式 |
- ARM有37个寄存器
1 个用作PC( Program Counter)
1个用作CPSR(Current Program Status Register)
5个用作SPSR(Saved Program Status Registers)
30 个通用寄存
4,ARM 工作模式及寄存器框图
- 没有标三角的寄存器是在七种模式下公用的,标三角的是有额外的寄存器
- system and user模式下
· PC:记录当前程序运行的位置
· LR:记录程序的返回地址
· SP:指向栈顶指针
· CPSR:当前程序状态寄存器
4.1,CPSR寄存器
- Mode位:处理器模式位
Mode位 | 处理器模式 | Mode位 | 处理器模式 | |
---|---|---|---|---|
10000 | User mode | 10001 | FIQ mode | |
10010 | IRQ | 10011 | SVC mode | |
10111 | Abort mode | 11011 | Undfined mode | |
11111 | System 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 (读出)
5,ARM 指令格式(条件助记符)
ARM指令的基本格式:
<opcode>[<con>][S] <Rd>, <Rn>{,operand2}
opcode:指令助记码,如:MOV
con:执行条件,如NE,EQ
S:是否影响CPSR寄存器的值,设置时影响CPSR
Rd:目标寄存器
Rn:第一个操作数的寄存器
operand2:第二个操作数
条件码表
5.1 示例
if(r0 ==3)
r1 = 3;
else if(r0 < 3)
r1 = r0 + 3;
else if(r0 > 3)
r1 = r0 - 3;
.text
mov r0,#1
cmp r0,#3
moveq r1,#3
addlt r1,r0,#3
subgt r1,r0,#3
.end
6,ARM 机器码指令格式(立即数合法性)
- cond:条件码
- opcode:操作码
- 所有的汇编代码都要翻译成机器码来存储,但是机器码中用来存放立即数的位数是有限的,所以,当立即数过大,便会存在立即数不合法的问题。