分类: 嵌入式
2012-05-19 21:02:20
CTR寄存器用来保存循环变量,并可以根据条件转移指令bclr的BO操作数自动进行减一操作。因此循环语句中需要使用CTR寄存器。此外CTR寄存器还可以用作保存bcctr指令的目标地址,用来实现长跳转。
4 LR寄存器
LR寄存器用来存放函数的返回地址。某些转移指令可以自动将LR寄存器赋值为转移之后的指令地址。每一个转移指令的编码中都有一个LK位。如果LK位为1,转移指令就会将当前指令地址加4对LR寄存器进行设置。
LR寄存器还可以用作保存bclr指令的目标地址,用来实现长跳转。在应用中,bclr指令比bcctr指令更常见。LR寄存器经常被用来实现函数的调用与返回。如下图所示,假定“bl fun1”指令的地址为0x48000000,当执行“bl fun1”指令后,LR寄存器的值将被设置为0x48000004。在fun1函数执行完毕后,需要使用blr指令将程序跳转到LR寄存器所指定的地址中。