66.C++函数调用的压栈过程
66.C++函数调用的压栈过程
参数逆序入栈:从右到左将函数参数压入栈。
保存返回地址:将函数调用结束后要执行的指令地址压栈。
建立栈帧:将旧栈基址(EBP)入栈,把当前栈顶(ESP)设为新栈基址。
分配局部变量:移动栈顶指针,为函数内局部变量开辟栈空间。
执行函数,执行完毕后释放栈帧,恢复寄存器,按返回地址回到调用位置。
参数逆序入栈:从右到左将函数参数压入栈。
保存返回地址:将函数调用结束后要执行的指令地址压栈。
建立栈帧:将旧栈基址(EBP)入栈,把当前栈顶(ESP)设为新栈基址。
分配局部变量:移动栈顶指针,为函数内局部变量开辟栈空间。
执行函数,执行完毕后释放栈帧,恢复寄存器,按返回地址回到调用位置。