gpt4 book ai didi

c++ - 为什么函数参数在调用堆栈上比返回地址更早推送?

转载 作者:可可西里 更新时间:2023-11-01 16:38:57 25 4
gpt4 key购买 nike

来自 http://en.wikipedia.org/wiki/Stack_pointer#Structure

enter image description here

我想知道为什么一个函数的返回地址放在该函数的参数之上?

Return AddressParameters for Drawline 之前压入堆栈更有意义,因为当Return Address 弹出以返回调用函数。

首选上图中显示的实现的原因是什么?

最佳答案

返回地址通常通过call 机器命令推送,[在 native 语言中是instruction set ] 而参数和变量是通过编译器创建的多个机器命令推送的。

因此,返回地址是调用者推送的最后一个东西,并且在被调用者推送的任何[局部变量]之前。

参数都压在返回地址之前,因为跳转到实际函数和返回地址入栈是在同一个机器命令中完成的

此外,另一个原因是 - 调用者是在堆栈上为参数分配空间的人 - [调用者] 也应该是清理它的人。

关于c++ - 为什么函数参数在调用堆栈上比返回地址更早推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9248642/

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