当前位置:首页 > 问问

r14 lr连接寄存器是什么意思 R14和LR寄存器的连接关系是什么?

1、r14 lr连接寄存器的定义

r14 lr是指“Link Register”,用来存储函数的返回地址和上一个函数的栈帧地址。在函数调用时,调用方函数的返回地址保存到r14 lr中,被调用函数可以通过该寄存器找到调用方函数的返回地址,从而返回正确的位置。

2、r14 lr连接寄存器的作用

r14 lr连接寄存器的作用是在函数调用时保存调用者现场,保护现场。对于子函数中的一些寄存器,如果要在子函数中修改,在返回到父函数时,需要用相同的值恢复这些寄存器。如果没有r14 lr这个寄存器,当子函数修改这些寄存器时,父函数中使用这些寄存器的值就会被更改,导致程序运行错误。

在外部中断处理过程中,为了保护被外部中断中断的现场,需要先将现场保存起来以供后续处理。此时也需要用到r14 lr连接寄存器,将被中断代码的现场保存到该寄存器中。

3、r14 lr连接寄存器的使用方法

在函数调用前将r14 lr连接寄存器的值保存到栈中,然后将调用目标的地址保存到r14 lr中。当被调函数执行完后,通过r14 lr中的地址返回到调用文件,同时在返回前将r14 lr的值再次从栈中取出,以保证返回到正确的位置。在使用该寄存器时要注意不要误使用该值,否则会引起函数调用错误。

4、r14 lr连接寄存器的相关指令

在ARM汇编中,保存r14 lr连接寄存器到栈中的指令为“push {lr}”,将栈中存储的r14 lr连接寄存器的值恢复到该寄存器中的指令为“pop {lr}”。

在C++语言中,可以使用__builtin_return_address()来获取当前函数的返回地址,在汇编代码中通过ldr指令将该地址保存到r14 lr中。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章