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