【发布时间】:2014-10-31 22:48:33
【问题描述】:
下面是我的代码。帮助我理解以下代码的含义:
push ebp
mov ebp, esp
sub esp, 230h
【问题讨论】:
下面是我的代码。帮助我理解以下代码的含义:
push ebp
mov ebp, esp
sub esp, 230h
【问题讨论】:
这是一个功能序言。
将旧的基指针压入堆栈,以便稍后恢复:
push ebp
将堆栈指针的值赋值给基指针,然后在旧堆栈帧之上创建一个新堆栈帧:
mov ebp, esp
通过减少或增加其值来进一步移动堆栈指针(取决于堆栈是向下还是向上):
sub esp, 230h
这里,230h 立即值是在堆栈上保留的字节数,供函数中本地使用。
以类似的方式,函数尾声反转序言的动作并将控制权返回给调用函数。
检查这个相关的 SO 问题:Function Prologue and Epilogue in C
【讨论】: