函数调用过程
esp指向堆栈顶端,ebp指向old ebp,返回地址为ebp-4,参数为ebp-8,ebp-12。。。
调用:
将调用参数压栈
将下一条指令地址压栈,作为返回地址
将ebp压栈,将ebp设置为esp
跳转到函数执行
返回:
esp 设置为 ebp,回收局部变量
pop ebp:恢复ebp的值为old ebp
从栈中获得返回地址,并跳转到该位置
不同的出栈方和参数传递顺序决定不同的调用惯例
函数调用过程
esp指向堆栈顶端,ebp指向old ebp,返回地址为ebp-4,参数为ebp-8,ebp-12。。。
调用:
将调用参数压栈
将下一条指令地址压栈,作为返回地址
将ebp压栈,将ebp设置为esp
跳转到函数执行
返回:
esp 设置为 ebp,回收局部变量
pop ebp:恢复ebp的值为old ebp
从栈中获得返回地址,并跳转到该位置
不同的出栈方和参数传递顺序决定不同的调用惯例