总结:编译原理--第七章 运行时刻环境

本文介绍了编译器如何在目标机上实现源程序的抽象概念,重点关注运行时刻环境的作用,包括控制栈、栈分配、堆管理、垃圾回收等机制。详细阐述了不同类型的垃圾回收器,如引用计数、标记清扫、拷贝和增量式回收器,旨在帮助读者理解程序执行时的内存管理策略。
摘要由CSDN通过智能技术生成

第七章  运行时刻环境

编译器必须准确地实现源程序语言中包含的各个抽象概念。这些抽象概念通常包括我们前面内容曾经讨论过的那些概念,如名字、作用域、绑定、数据类型、运算符、过程、参数以及控制流构造。编译器还必须和操作系统以及其他系统软件协作,在目标机上支持这些抽象概念。

为了做到这一点,编译器创建并管理一个运行时刻环境,它编译得到的目标程序就运行在这个环境中。这个环境处理很多事务,包括为在源程序中命名的对象分配和安排存储位置,确定目标程序访问变量时使用的机制。过程间的连接,参数传递机制,以及与操作系统、输入输出设备及其他程序的接口。

  • 运行时刻组织。为了实现源语言中的抽象概念,编译器与操作系统及目标机器协同,创建并管理了一个运行时刻环境。
  • 控制栈。过程调用和返回通常由称为控制栈的运行时刻栈管理。
  • 栈分配。对于那些允许或要求局部变量在它们的过程结束之后就不可访问的语言而言,局部变量的存储空间可以在运行时刻栈中分配。
  • 访问栈中的非局部数据。像 C 这样的语言不支持嵌套的过程声明,因此一个变量的位置要么是全局的,要么可以在运行时刻栈顶的活动记录中找到。
  • 堆管理。堆是用来存放生命周期不确定的,或者可以生存到被明确删除时刻的数据的存储区域。
  • 利用局部性。通过更好地利用存储的层次结构,存储管理器可以影响程序的运行时间。
  • 减少碎片。随着程序分配和回收存储&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值