zoukankan      html  css  js  c++  java
  • C语言过程活动记录

    C 语言自动提供的服务之一就是跟踪调用链——哪些函数调用了哪些函数,当下一个return语句执行后,控制将返回何处等。解决这个问题的经典机制是堆栈中的活动记录。

    当每个函数被调用时,都会产生一个过程记录(或者类似的结构)。过程活动记录是一种数据结构,用于支持过程调用,并记录调用结束以后返回调用点所需要的全部信息。
    过程活动记录

    每当有一个函数调用时,就会在堆栈(Stack)上准备一个被称为AR(activation recored)的结构,抛开具体编译器实现细节的不同,这个AR基本结构如下所示。 
    这里写图片描述

    每当遇到一次函数调用的语句,C编译器都会产生出汇编代码来在堆栈上分配这个AR。例如下面的C代码:

    void a(int i)
    {
        if(i > 0){
            a(--i);
        }
        else
        {
            printf("i = %d 
    ", i);
        }
    }
    
    int main(int argc, char** argv)
    {
        a(1);
    }

    在这一段代码中: 
    调用的顺序如下:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    整体框图为:

    这里写图片描述

    参考:

    https://blog.csdn.net/smstong/article/details/50728022

    https://blog.csdn.net/uncle_gy/article/details/77920264

    C专家编程 6.5节

  • 相关阅读:
    MicroPython的开发板
    python 安装mysql报错
    30个mysql千万级大数据SQL查询优化技巧详解
    PHP针对数字的加密解密类,可直接使用
    form表单公用
    生成随机邀请码
    Tp5自动验证
    protected和private的区别
    中国俗语大全
    更改Unity项目新建模板
  • 原文地址:https://www.cnblogs.com/zzdbullet/p/9932057.html
Copyright © 2011-2022 走看看