一、ARM寄存器组织(一)
(一)寄存器的概念
不同CPU寄存器的个数、位数、数量不同。
1、存储器,速度快,但是不能进行取地址工作,寄存器没有地址,寄存器的存储类型是register(栈,堆...)。数据只能是整形不能是浮点型。register只能修饰局部变量。全局变量声明周期很长。
2、寄存器一般用于暂时存放运算数据和运算结果。
3、寄存器可以分为通用寄存器、专用寄存器(规定好存取内容)、控制寄存器(通过修改控制寄存器修改处理器状态)
二、ARM寄存器组织(二)
(一)ARM寄存器
不同模式允许使用的寄存器不同
*寄存器是某一个模式下特有的
ARM一共有40个寄存器(7模式下有37个)
(二)专用寄存器
R15: 程序计数器PC,存储当前取值指令的地址
自动增加(每次自增4)或者通过汇编修改
R14:链接寄存器LR
1. 执行跳转指令(例如函数调用)时,LR会自动保存跳转指令下一条的指令地址,子程序调用,是预知的
2. 异常发生,LR会自动保存被异常打断的指令的下一条指令,是随机发生的
R13:栈指针,存储当前模式下的栈顶地址
栈的本质是一段内存,存储的是临时数据,栈指针是实时改变的
三、ARM寄存器组织(三)
(一)CPSR控制寄存器
当前程序状态寄存器
32位ARM处理器的寄存器都是32位
1、模式位
2、状态位
3、FIQ、IRQ禁止
4、溢出标志/进位或借位扩展/零/负或小于 [28,31] ![](https://i-blog.csdnimg.cn/blog_migrate/b1a0a85158785628c9adb9ee9210d93f.png)
bit[28]有符号数
bit[29]无符号数
四、简述ARM处理器中R13、R14、R15、CPSR寄存器的作用
(一)R13:栈指针,存储当前模式下的栈顶地址,栈指针是实时改变的。
(二)R14:链接寄存器LR
1. 执行跳转指令(例如函数调用)时,LR会自动保存跳转指令下一条的指令地址,子程序调用,是预知的。
2. 异常发生,LR会自动保存被异常打断的指令的下一条指令,是随机发生的。
(三)R15:程序计数器PC,存储当前取值指令的地址,自动增加(每次自增4)或者通过汇编修改。
(四)CPSR:控制当前程序程序状态。包括模式位、状态位、FIQ和IRQ禁止、溢出标志、进位借位、零、负或小于等标志。