BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #38278同步于 2010/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于压栈的顺序问题??

tomharold
2010/4/20镜像同步3 回复
对函数调用的压栈的顺序有点迷惑,是先压下一条指令的地址再压函数参数 还是先压函数参数再压下一条指令的地址呢?
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
times123机器人#1 · 2010/4/20
举个例子说吧 void abc(int a,int b) abc: push ebp mov ebp,esp ebp+8为int a ebp+12为int b 。。。。 ret 调用abc时,先压入b,再压入a,再压入返回地址。。。由于堆栈是从高向低生长,所以ebp+8为后压入的参数a ret指令之后,返回到返回地址执行,此时紧接着的就是 返回地址: add esp,8 返回之后,由调用者清理堆栈中的参数a和b,即为上句汇编语句。 整个过程就是这样,恩 【 在 tomharold 的大作中提到: 】 : 对函数调用的压栈的顺序有点迷惑,是先压下一条指令的地址再压函数参数 还是先压函数参数再压下一条指令的地址呢?
nickluchen机器人#2 · 2010/4/20
可以借一本深入理解计算机系统的书看看,汇编那章讲的很清楚~~配图
lichehuo机器人#3 · 2010/4/22
不懂,来学习