函数的调用过程(栈帧)
2017-11-12 18:11
323 查看
认识c/c++程序占用内存的分布:
简单看一下下面的程序:
#include<stdio.h> int Add(int x, int y) { int z = 0; z = x + y; return z; } int main() { int a = 10; int b = 20; int res=Add(a, b); printf("%d\n", res); system("pause"); return 0; }
f10调试后,打开查看堆栈窗口:
说明:main函数也是被其他函数调用的。
下面进入主题,函数调用过程:
分析主函数的栈帧:
注意call指令:
执行call指令时,f11走到下图所示:
再按f11,进入Add函数:
再看返回z是如何返回的
出栈的时候,就使用pop指令依次让edi,esi,ebx,出栈。再将ebp赋给esp,pop 出edp,再回到main函数。
相关文章推荐
- 栈帧与函数调用过程的分析
- 函数的调用过程(栈帧的创建和销毁)
- 函数的调用过程(栈帧)
- 栈帧——函数的调用过程
- 函数的调用过程,栈帧的创建和销毁。
- 函数调用过程:EBP、ESP等栈帧的变化
- c函数调用过程原理及函数栈帧分析
- 函数的调用过程(栈帧)
- C函数调用过程原理及函数栈帧分析
- 谈谈函数的调用过程,栈帧的创建和销毁。
- 函数的调用过程(栈帧结构)—C语言版
- 小结 | 函数的调用过程(栈帧)
- 堆栈、栈帧与函数调用过程分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- MIPS架构上函数调用过程的堆栈和栈帧
- 函数调用过程的栈帧
- [C++反汇编] 栈帧(函数调用过程)
- 【C语言】函数运行过程-----栈帧调用
- 函数调用的具体过程以及栈帧的创建和销毁