gpt4 book ai didi

assembly - 查询汇编语言中堆栈指针的使用

转载 作者:行者123 更新时间:2023-12-05 00:07:05 25 4
gpt4 key购买 nike

我准备在维基百科上发表一篇关于尾递归的文章:http://en.wikipedia.org/wiki/Tail_call

现在在文章的最后,该示例显示了堆栈指针用于访问传递给程序集伪代码中函数调用的参数。这不是错吗?我的意思是被调用者通过使用正确的帧指针而不是堆栈指针来访问参数?

最佳答案

使用堆栈指针很好。毕竟它总是指向堆栈。如果函数中有任何 push 或 pop 指令,那么跟踪从堆栈指针到函数参数的偏移量就有点困难。当没有帧指针时,很难在调试器中返回堆栈。

使用帧指针可以使调试器和编译器编写者的工作更轻松,但并不是必须要有。

设置帧指针需要一条指令,它会占用一个可能用于其他用途的寄存器。所以改用堆栈指针是优化代码的常用技术。 Microsoft 编译器甚至为此优化起了一个名字,他们称之为 Frame Pointer Omission

关于assembly - 查询汇编语言中堆栈指针的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com