将返回值压入堆栈帧

发布于 2024-11-28 13:30:47 字数 88 浏览 2 评论 0原文

我想知道将函数的返回值推入其堆栈帧是否有意义。

我知道返回值主要存储在寄存器中(gcc 的 eax),但这只是为了性能吗?

谢谢!

I'm wondering if it makes sense to push the return value of a function in its the stack-frame.

I know return values are mostly stored in registers (eax for gcc), but is it for performance only?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很酷不放纵 2024-12-05 13:30:47

这是有道理的,但必须手动插入(而不是简单的推送)。它的“空间”应该由调用者“分配”(在调用函数之前必须减少 sp ),因为当您从函数返回时 - 返回地址必须位于堆栈顶部,因此返回值应该是位于退货地址下方。 [与在堆栈上传递参数的原理相同]

it makes sense, but it must be manually inserted (and not a simple push). the 'space' for it should be 'allocated' by the caller (it must decrease sp before calling the function) because when you return from the function - the return address must be at the top of the stack, so the return value should be below the return address. [same principle as passing arguments on stack]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文