码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-17 23:27:39      阅读:212      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!