博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android Pro] 深入理解函数的调用过程——栈帧
阅读量:6683 次
发布时间:2019-06-25

本文共 587 字,大约阅读时间需要 1 分钟。

cp :

每一个函数被调用时,都会为函数开辟一块空间,这块空间就称为栈帧

首先,我们了解一下不同种类的寄存器

(1)eax,ebx,ecx,edx :通用寄存器

(2)ebp:存放指向函数栈帧栈底的地址

(3)esp:存放指向函数栈帧栈顶的地址

(4)eip:程序计数器——保存程序当前正在执行指令的下一个指令的地址

 

接着我们以下面这段代码为例,深入到函数的调用过程中去:

 

#include 
#include
int Add(int x, int y) { int z = 0; z = x + y; return z; } int main() { int a = 10; int b = 20; int ret = Add(a, b); printf("a+b=%d\n", ret); system("pause"); return 0; }

 

 

 

函数调用完成后,释放栈帧。

 

以上就是函数的整个调用过程

 

你可能感兴趣的文章
Android应用程序消息处理机制(Looper、Handler)分析(4)
查看>>
用RedisStore解决session的问题
查看>>
输入函数input()和raw_input()的区别
查看>>
Spark源码研读-散篇记录(一):SparkConf
查看>>
2015下半年中项-yuansy-10月15日作业
查看>>
JQuery 1.4.2 'index.html'跨站脚本漏洞
查看>>
我的友情链接
查看>>
云计算IDC未来的四个发展阶段
查看>>
CentOS 系统自动化安装
查看>>
美国当地做seo优化工资,做一样的事情,区别这么大
查看>>
Flex_Gird列表信息源码
查看>>
桌面小部件 widget
查看>>
text-overflow
查看>>
Dns服务的简单配置
查看>>
浏览器兼容--input标签
查看>>
C# 语言规范
查看>>
用Nagios监控AIX
查看>>
【源码学习】time.Timer 和 time.Ticker
查看>>
spring-mvc restful web services
查看>>
我的友情链接
查看>>