内容纲要

粗略整理了一下入栈出栈过程

入栈
①压入被调函数的参数,没有参数就跳过
②调用结束后的下一条指令的地址压入栈中作为被调用函数的返回地址
③将当前ebp(调用函数的基地址)的值压入栈内(并将ebp更改为esp的值,也就是下一个函数的ebp,这里是callee基地址)
④将被调用函数(callee)的局部变量等数据压入栈内

出栈
①将局部变量弹出,栈顶指向callee的基地址
②将基地址内存储的caller基地址弹出,并存到ebp(栈顶指向返回地址),ebp指回
③将返回地址弹出,存到eip