首页 > 其他 > 详细

(转载)R14也称作子程序连接寄存器

时间:2015-10-17 23:25:16      阅读:494      评论:0      收藏:0      [点我收藏+]

R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。

其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。

 

寄存器R14常用在如下的情况:

在每一种运行模式下,都可用R14保存子程序的返回地址(也就是 R15  PC ),当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。以上的描述可用指令完成:

 

1、执行以下任意一条指令:

MOV       PC,LR 

BX        LR

2、在子程序入口处使用以下指令将R14存入堆栈:

  STMFD   SP!,{<Regs>,LR}

    对应的,使用以下指令可以完成子程序返回:

  LDMFD   SP!,{<Regs>,PC}

R14也可作为通用寄存器。

 

 

由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。

(转载)R14也称作子程序连接寄存器

原文:http://www.cnblogs.com/shengruxiahua/p/4888367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!