ARM寄存器组织
1、寄存器
概念
- 寄存器是处理器内部的存储器,没有地址
作用
- 一般用于暂时存放参与运算的数据和运算的结果
分类
- 包括通用寄存器、专用寄存器、控制寄存器
2、ARM寄存器
注:
- 在某个特定的模式下,只能使用当前模式下的寄存器。一个模式下的特有寄存器在其他模式下不可以使用
专用寄存器
R15(PC,Program Counter)
- 程序计数器,用于存储当前取址指令的地址
R14(LR,Link Register)
- 链接寄存器,一般有一下两种用途
- 1、执行跳转指令(BL和BLX)时,LR会自动保存跳转指令下一条指令的地址。程序需要返回时,将LR的值复制到PC即可实现。
- 2、产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址,异常处理结束后将LR的值复制到PC即可实现。
R13(SP,Stack Pointer)
- 栈指针,用于存储当前模式下的栈顶指针
CPSR寄存器
CPSR(Current Program Status Register)
- 当前程序状态寄存器
CPSR寄存器分为四个域
- 1、[31:28]为条件域,用F表示
- 2、[24:27]为状态域,用S表示
- 3、[15:8]为预留域 ,用X表示
- 4、[8:0]为控制域 ,用C表示
Bit[4:0]
- [10000]:User
- [10001]:FIQ
- [10010]:IRQ
- [10011]:Supervisor (SVC)
- [10111]:Abort(ABT)
- [11011]:Undef(UND)
- [11111]:System(SYS
- [10110]:Monitor
Bit[5]
- [0]:ARM状态
- [1]:Thumb状态
Bit[6]
- [0]:开启FIQ
- [1]:禁止FIQ
Bit[7]
- [0]:开启IRQ
- [1]:禁止IRQ
Bit[28]:V
- 1、当运算器中进行加法运算且产生符号位进位时,该位自动置1,否则为0
- 2、当运算器中进行减法运算且产生符号位借位时,该位自动置0,否则为1
Bit[29]:C
- 当运算器中进行加法运算且产生进位时,该位自动置1,否则为0
- 当运算器中进行减法运算且产生借位时,该位自动置0,否则为1
Bit[30]:Z
- 当运算器中产生了0的结果该位自动置1,否则为0
Bit[31]:N
- 当运算器中产生了负数的结果,该位自动置1,否则为0