C语言怎么使用调用函数?
例子代码如下所示:
int Add(int x, int y) { int sum;
sum = x + y; return sum;
}void main() { int z;
z = Add(1, 2); printf("z=%d\n", z);
}
下面分析一下 Add函数的调用过程。
首先断点在z = Add(1, 2);处, 反汇编如下所示:
int z;
z = Add(1, 2);002C141E 6A 02 push 2 002C1420 6A 01 push 1 002C1422 E8 60 FC FF FF call 002C1087
002C1427 83 C4 08 add esp,8 002C142A 89 45 F8 mov dword ptr [ebp-8],eax
首先压入参数1和2:
002C141E 6A 02 push 2 002C1420 6A 01 push 1
通过观察ESP可以看到参数从右到左依次入栈,ESP往低内存方向移动8字节:
ESP=0025FCCC
...0x0025FCAA 00 00 78 4c 33 00 bc fc 25 00 a9 fe aa 0f 78 4c 33 00 c8 fc 25 00 3d 5a b2 0f *** 01 00 00 00 02 00 00 00 ***0x0025FCCC 00 00 00 00
广告 您可能关注的内容 |