RH850 F1L LP PC SP寄存器与函数调用分析

编程入门 行业动态 更新时间:2024-10-13 00:31:24

RH850 F1L LP PC SP<a href=https://www.elefans.com/category/jswz/34/1768029.html style=寄存器与函数调用分析"/>

RH850 F1L LP PC SP寄存器与函数调用分析

前言

  • 函数发生调用时,子函数调用完成,如何返回到调用函数?
  • pc(指令计数器)、LP(链接寄存器)、SP 寄存器具体作用是啥?

当发生子函数调用时,执行jarl等跳转指令时,PC会指向新函数的入口地址,同时更新LP寄存器用来保存子函数执行完成后要执行的地址。

如果子函数中又有函数调用发生,则在子函数会把LP寄存器入栈,待子函数的函数调用完成LP

会再出栈,然后再跳转到LP地址执行,即完成了子函数的返回。

下面以一个示例来演示这个过程:

状态1 执行函数调用prvCopyDataToQueue()

状态2 已经跳转到函数prvCopyDataToQueue()

lp更新成调用prvCopyDataToQueue()执行完成的地址0x0003cc68

pc更新成prvCopyDataToQueue()的入口地址

状态3 由于prvCopyDataToQueue()由于调用了子函数,所以这里会把lp地址存入当前栈中。

状态4 prvCopyDataToQueue()函数返回,从栈中加载出LP寄存器的值。

总结:

LP用途有二,一是保存子程序返回地址,当调用BL、BX、jarl等跳转指令时会自动保存返回地址到LP;二是保存异常发生的异常返回地址。

更多推荐

RH850 F1L LP PC SP寄存器与函数调用分析

本文发布于:2024-03-14 19:14:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737151.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:寄存器   函数   F1L   LP   SP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!