返回连接寄存器【LR】详解

异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案, 用于记录源程序的断点位置,以便正确的异常返回。
类似的还有子程序的调用和 返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置,以便将来的子程序的返回。

在ARM处理器中使用 R14实现对断点和调用点的记录,即使用R14用作返 回连接寄存器(LR)。在硬件上和指令执行上,CPU 自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。
ARM处理器相应异常时,会自动完成将当前的PC保存到LR寄存器。
ARM处理器执行子程序调用指令(BL )时,会自动完成将当前的PC的值减去4的结果数据保存到LR寄存器。即将调用指令的下紧邻指令的地址保存到LR。
ARM处理器针对不同的模式,共有6个链接寄存器资源(LR ),其中用户模式和系统模式共用一个 LR,每种异常模式都有各自专用的R14 寄存器(LR )。这些链接寄存器分别为 R14、R14_svc、R14_abt、R14_und、R14_irq、R14_fiq,

程序设计者要清晰处理器的模式与相应 寄存器的对应关系,都是使用 R14,但不同模式下的R14 不是同一个物理资源,其内容可能天壤之别。
R14 不用做链接寄存器(LR )时,也可以用做通用数据寄存器。


转 自:http://blog.sina.com.cn/s/blog_62714d6a0100mjgx.html?retcode=0

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值