assembly - 为什么不能使用 "jump and link"和 "jump register"进行递归?

标签 assembly

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

提前致谢!

最佳答案

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

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

关于assembly - 为什么不能使用 "jump and link"和 "jump register"进行递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166732/

相关文章:

windows - PE文件中没有.BSS

assembly - assembly x86-16 中的模式 X,为什么平面 1 未打印,而所有其他平面的顺序不正确?

c - 如何根据汇编中的地址调用printf函数

assembly - 英特尔处理器上的浮点汇编

c++ - 跨平台汇编 ((x64 || x86) && (Microsoft x64 || SystemV))

assembly - 在 8086 汇编(16 位模式)中读取堆栈

c - 如何在汇编中遍历矩阵?

c++ - 在 .text 部分定义只读数据的原因是什么?

c - 如何通过编程语言实现多重处理?

macos - 系统调用 OSX 创建文件 [打开]