Chinaunix首页 | 论坛 | 博客
  • 博客访问: 578719
  • 博文数量: 65
  • 博客积分: 2844
  • 博客等级: 上尉
  • 技术积分: 996
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-02 12:01
文章分类

全部博文(65)

文章存档

2014年(7)

2012年(20)

2011年(35)

2010年(3)

分类: 嵌入式

2012-05-19 21:02:20

    3 CTR寄存器

CTR寄存器用来保存循环变量,并可以根据条件转移指令bclrBO操作数自动进行减一操作。因此循环语句中需要使用CTR寄存器。此外CTR寄存器还可以用作保存bcctr指令的目标地址,用来实现长跳转。

4 LR寄存器

LR寄存器用来存放函数的返回地址。某些转移指令可以自动将LR寄存器赋值为转移之后的指令地址。每一个转移指令的编码中都有一个LK位。如果LK位为1,转移指令就会将当前指令地址加4LR寄存器进行设置。

LR寄存器还可以用作保存bclr指令的目标地址,用来实现长跳转。在应用中,bclr指令比bcctr指令更常见。LR寄存器经常被用来实现函数的调用与返回。如下图所示,假定“bl fun1”指令的地址为0x48000000,当执行“bl fun1”指令后,LR寄存器的值将被设置为0x48000004。在fun1函数执行完毕后,需要使用blr指令将程序跳转到LR寄存器所指定的地址中。


阅读(1334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~