将返回值压入堆栈帧
我想知道将函数的返回值推入其堆栈帧是否有意义。
我知道返回值主要存储在寄存器中(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是有道理的,但必须手动插入(而不是简单的推送)。它的“空间”应该由调用者“分配”(在调用函数之前必须减少 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]