C函数调用的栈内容分析
来源:互联网 发布:大数据服务器搭建 编辑:程序博客网 时间:2024/05/15 14:05
C中函数默认使用_cdecl方式,即函数的参数是从右到左方式进行压栈。
int main(int argv,char*argc[]){ int a , b. Printf("hello world");}
压栈的顺序
SP (main 函数的return address)
a (4 字节)
b (4字节)
char* (4字节)
SP (Printf 函数的return address)
.... (Pritnft 内部声明的变量)
函数的压栈顺序为
最右参数
...
最左参数
SP 函数return address
局部变量 从上至下
例如
void swap (int *x, int *y){ int temp = *x *x = *y; *y = temp;}int main (){ int a = 6; int b = 8; swap(&a,&b);}
1. 压a入栈
2. 压b入栈
3 压b的地址入栈
4 压a的地址入栈
call swap 压函数的返回地址入栈
压temp 入栈
弹出temp
RET (弹出函数的返回地址,控制权重新到main函数)
弹出swap的参数以及main函数的局部变量
SP = SP-4
R1 =SP
SP=SP
- C函数调用的栈内容分析
- C函数调用栈过程分析
- C函数调用过程分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- C函数调用原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- C函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- c函数调用过程原理及函数栈帧分析
- [C/C++] 函数调用的栈分配
- 函数调用栈桢内容
- C/C++与汇编的函数相互调用分析
- Eclipse中如何恢复已删除文件
- poj 1730 Perfect Pth Powers(枚举)
- Java学习之多线程
- J2ME 处理图片半透明
- poj 1061 青蛙的约会(exGCD+模线性方程)
- C函数调用的栈内容分析
- 生活~~~!!!
- VM虚拟机跟主机间共享文件
- eval 解析 json 数据
- 转载 便利的开发工具 CppUnit 快速使用指南
- Android之Menu菜单 onCreateOptionsMenu使用Menu按键显示不了问题
- Integer缓存问题
- Flex框架:RSL和主程序(swf)是并行下载的?
- xcode打开sqlite3数据库的遇到的问题以及数据库操作方法