gpt4 book ai didi

assembly - cdecl 调用约定

转载 作者:行者123 更新时间:2023-12-02 18:58:51 26 4
gpt4 key购买 nike

在一篇关于 _cdecl 调用约定的文章中,作者提到:

Release local storage When the function allocates local, temporary space, it does so by decrementing from the stack point the amount of space needed, and this process must be reversed to reclaim that space. It's usually done by adding to the stack pointer the same amount which was subtracted previously, though a series of POP instructions could achieve the same thing.

我的问题是:我可以简单地将 ESP 设置为当前 EBP 值,而不是“向堆栈指针添加减去的相同数量”或“一系列 POP 指令”吗?

喜欢:

mov esp, ebp

对我来说似乎是一个更好的方法,因为如果我稍后更改此函数的局部变量的数量,我就不必再费心增加该值了。

最佳答案

从技术上讲,这将是对堆栈帧的滥用,堆栈帧用于捕获堆栈不平衡引起的错误,但这是完全合法的。

有一些事情需要注意,如果由于大型分配或嵌入式设备而导致堆栈空间非常有限,那么在每次调用后清理堆栈是值得的。它还使调试变得更加容易,因为这样您就知道某些东西使用了错误数量的参数。

此外,如果有人要维护您的代码,他们会发现它非常困惑。

关于assembly - cdecl 调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478317/

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