美文网首页
编译原理——运行环境

编译原理——运行环境

作者: 牛程程 | 来源:发表于2017-10-08 21:30 被阅读0次

    •运行时组织。为了实现源语言中的抽象,编译器会根据操作系统和目标机器来创建和管理运行时环境。运行时环境有数据对象的静态数据区域和用于编译时创建的目标代码静态数据对象的静态数据区域。它还有管理目标程序执行时创建和销毁对象的动态堆栈和堆区。
    •控制堆栈。表达式调用和返回通常由称为控制堆栈的运行时堆栈来管理。我们可以使用堆栈,因为表达式调用或激活临时嵌套;也就是说,如果p调用q,那么q的这种激活嵌套在p的激活之内。
    •堆栈分配。在运行时堆栈上可以分配局部变量的存储,可以允许或要求局部变量在其过程结束时变成不可用的语言。对于这样的语言,每个活动激活在控制堆栈上具有激活记录(或帧),激活树的根位于底部,堆栈上激活记录的整个序列对应于激活树中的路径到控制当前所在的激活。后者的激活在堆栈的顶部有其记录。
    •访问堆栈上的非本地数据。对于不允许嵌套过程声明的C语言,变量的位置是全局的,也可以在运行时堆栈顶部的激活记录中找到。对于具有嵌套过程的语言,我们可以通过访问链接访问堆栈上的非本地数据,这些链接是添加到每个激活记录的指针。通过跟踪到适当激活记录的访问链路链来找到所需的非本地数据。显示器是与访问链接一起使用的辅助阵列,为一系列访问链接提供了有效的快捷方式。
    •堆管理。堆是用于可以无限期生存的数据的存储部分,或者直到程序显式删除它。内存管理器分配并释放堆内的空间。
    垃圾收集在堆内找到不再使用的空间,因此可以重新分配以容纳其他数据项。对于需要的语言,垃圾收集器是内存管理器的重要子系统。

    相关文章

      网友评论

          本文标题:编译原理——运行环境

          本文链接:https://www.haomeiwen.com/subject/zzjyyxtx.html