- ARM中寄存器包括SFR和37个通用寄存器,通用寄存器是CPU(运算器+控制器+通用寄存器)的组成部分。
- 37个通用寄存器是搭配7种工作模式来学习的。因为每种工作模式下,可见的通用寄存器都不相同,每种模式下最多只能看到18个寄存器,部分寄存器虽然名字相同,但是在当前模式下不可见。
- 对于R13这个名字来说,在ARM中共有6个名叫R13(又叫sp)的寄存器,但是在每种特定工作模式下,只有当前模式的R13是可见的,其他r13必须切换到其他对应模式下才能看到。这种设计叫影子寄存(banked register)。
- 用户模式与系统模式共用一组寄存器,5种异常模式有各自的R13、R14和SPSR。
- R13用作栈指针,故也叫sp;由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的栈,而当程序从异常模式返回时,则从对应的栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。
- R14用作保存返回地址,故也叫链接寄存器lr;当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份。在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,
嵌入式学习笔记(2)ARM的37个寄存器详解
于 2023-08-29 09:40:37 首次发布