Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114549
  • 博文数量: 19
  • 博客积分: 396
  • 博客等级: 一等列兵
  • 技术积分: 156
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-29 09:11
文章分类

全部博文(19)

文章存档

2012年(3)

2011年(16)

分类: 嵌入式

2011-11-28 20:57:45

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值。
阅读(3444) | 评论(0) | 转发(0) |
0

上一篇:浮点数与IEEE 754

下一篇:ARM处理器模式

给主人留下些什么吧!~~