码迷,mamicode.com
首页 > 移动开发 > 详细

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

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

标签:iss   指令   time   tar   pre   函数   roi   art   href   

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] 深入理解函数的调用过程——栈帧

标签:iss   指令   time   tar   pre   函数   roi   art   href   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!