【发布时间】:2014-01-03 12:52:32
【问题描述】:
我知道当调用者函数调用被调用者函数时,调用者函数推送参数和返回地址,然后为被调用函数构造堆栈帧,包括push %ebp %ebx %edi %esi 和push 局部变量。但是当被调用者返回时发生了什么?
【问题讨论】:
-
那么,
push()操作的逆运算是什么? -
(请注意,您所知道的只是一种特定的调用约定,许多细节在其他环境中可能并且将会有所不同。)
-
e,这是 C/C++ 中的默认调用约定。
-
@stamaimer:在 x86-32 上,即使那样我也不确定它在所有操作系统上是否完全相同。例如。 AFAIK Visual C++/x86-32 在
ECX中传递this,而不是 statk。