R15:
别名为PC(program counter),中文称为程序计数器,它的值是当前正在执行的指令在内存中的位置(不考虑流水线的影响),而当指令执行结束后,CPU硬件会自动将PC值加上一个单位,从而使得PC值为下一条即将执行的指令在中的位置,这样CPU硬件就可以根据PC值自动完成取指操作。对于汇编编程而言,可以通过汇编指令完成对PC寄存器的赋值操作,这样就完成了一次无条件跳转。
实现流水线后,PC值=当前正在执行指令的内在中的地址+8. 一条指令只有在完全通过“执行”阶段才被处理。 当处理器处于Thumb模式时,pc的值为正在执行指令的地址加4。
R14:
别名LR(Linked register),中文称为链接寄存器,与子程序调用密切相关,用于存放子程序的返回地址,是ARM程序实现子程序调用的关键所在。LR是专门用于存放子程序返回地址的。如果子程序调用子孙程序,高明编译器会在孙子程序的入口处增加入栈操作将LR的值入栈,然后在孙子程序返回处增加出栈操作。
R13:
又名SP(stack pointer),中文名称栈指针寄存器。用于存放堆栈的栈顶地址的。32位的ARM没有专门的入栈和出栈指令,所以并不是一定要用sp来作为栈指针寄存器,除了PC外,任何普通寄存器可作为栈指针寄存器。
CPSR:
当前程序状态寄存器CPSR(current program status register),于用保存当前程序状态。
SPSR:
保存程序状态寄存器(Saved Program Status Register)。在异常发生时,由硬件自动将异常发生前的CPSR的值放到SPSR中。异常处理程序结束后恢复原来的CPSR值。
阅读(3480) | 评论(0) | 转发(0) |