为什么不能使用"跳转和链接"和#34;跳转寄存器"递归?

时间:2017-05-24 19:11:31

标签: assembly

希望这是我的问题的正确位置。为什么不能使用这两个指令 递归调用子程序?

提前致谢!

1 个答案:

答案 0 :(得分:5)

如果您“跳转并链接”,则返回地址存储在寄存器中。如果再次“跳转并链接”,则返回地址将被新的覆盖,破坏原始返回地址并阻止调用者返回。

您可以在递归函数(或任何调用其他函数的函数)中使用“跳转和链接”,但是您必须手动将链接寄存器的内容保存到堆栈中。