函数调用过程,栈帧的创建和销毁
来源:互联网 发布:c语言网络编程 编辑:程序博客网 时间:2024/06/05 17:04
#include<stdio.h>#include<windows.h>int myadd (int x,int y){ int z = x + y; return z;}int main(){ int a = 0xAAAAAA; int b = 0xBBBBBB; int c = myadd(a,b); printf("you should run here!\n"); printf("result:%d\n",c); system("pause"); return 0;}
最初的栈结构
定义a,b
将b放在eax,将eax push入栈,esp下移
将a放在ecx,将ecx push入栈,esp下移
执行call命令,将当前正在执行的指令的下一条地址压入栈中
执行call指令,通过jump命令跳转到指定函数处,myadd函数的地址是00401020,则eip变为00401020
将mian函数的ebp压入栈底,mov ebp,esp
形成一个新空间myadd函数的栈帧
将[ebp+8]加上[ebp+0ch]放入eax,再把eax放入[ebp-4]
mov esp,ebp
将ebp弹出
把00401093弹入eip中,esp上移,执行main函数当前执行的指令
add esp,8,把eax的值z放入[ebp-0ch],回到最初
阅读全文
0 0
- 函数的调用过程,栈帧的创建和销毁
- 函数的调用过程,栈帧的创建和销毁。
- 函数的调用过程,栈帧的创建和销毁
- 函数的调用过程,栈帧的创建和销毁。
- 函数的调用过程,栈帧的创建和销毁
- 函数的调用过程,栈帧的创建和销毁
- 函数调用过程,栈帧的创建和销毁
- 函数调用过程,栈帧的创建和销毁
- 函数的调用过程,栈桢的创建和销毁
- 函数的调用过程,栈桢的创建和销毁。
- 函数的调用过程、栈帧的创建以及销毁
- 函数的调用过程,栈帧的创建与销毁
- 【C】函数的调用过程,栈帧的创建和销毁
- 谈谈函数的调用过程,栈帧的创建和销毁。
- 函数的调用过程(栈帧的创建和销毁)
- 浅谈函数的调用过程,栈帧的创建和销毁,附图讲解
- 函数调用的具体过程以及栈帧的创建和销毁
- 第三篇 函数的调用过程 栈帧的创建和销毁
- Flask学习笔记
- 可用的linux源
- 【我的Java笔记】网络编程
- Mac上python2和python3的版本切换的简单处理方式
- 【温故知新】BZOJ复习计划
- 函数调用过程,栈帧的创建和销毁
- XCode下Object C和C++混合编译
- #define 定义 宏
- 【Linux】后台进程管理
- Quartz集群原理及配置应用
- 【51nod 1279 扔盘子】(单调栈)
- java异常
- BZOJ2115 [Wc2011] Xor 【线性基】
- 1136. A Delayed Palindrome (20) 大数模拟