下面是一段简单的函数调用代码:
#include <windows.h>
#include<stdio.h>int fun(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 20;
int c = fun(a, b);
printf("c = %d\n", c);
printf("hello world!\n");
system("pause");
return 0;
}
call:1、先保存当前指令下一条指令的地址;
2、跳至目标函数处【修改 EIP】(jmp)
ret:1、弹出(pop)返回值;
2、修改EIP(上次保存处)
我们知道每 一次函数调 用都是 一个过程 ,
这个过程我们通 长称之为:函数的调 用过程。
这个过程要为函数开辟栈空间, 用于本次函数的调 用中临时变量 的保存、现场保护。这块栈空间我们称之为函数栈帧。