首页 > 移动平台 > 详细

[Android Pro] 深入理解函数的调用过程——栈帧

时间:2018-03-12 18:06:03      阅读:238      评论:0      收藏:0      [点我收藏+]

cp : http://blog.csdn.net/x_perseverance/article/details/78897637

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


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

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

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

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

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

 

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

 

    #include <stdio.h>  
    #include <windows.h>  
      
    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 Pro] 深入理解函数的调用过程——栈帧

原文:https://www.cnblogs.com/0616--ataozhijia/p/8550223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!