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

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;  
    }  

 

 

 


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

 

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

 

posted @ 2018-03-12 16:54  demoblog  阅读(703)  评论(0编辑  收藏  举报