编译原理与cmpl_08 .pptVIP

  • 2
  • 0
  • 约1.13万字
  • 约 72页
  • 2017-10-03 发布于浙江
  • 举报
编译原理与cmpl_08

第二章 高级语言及其语法描述 第二章 高级语言及其语法描述 第八章 运行时的存储组织与管理 【学习目标】 【学习指南】 概述 ★ 运行时存储区的划分 运行时的存储区常常划分成: 目标代码区、静态数据区、栈区和堆区 栈 堆 ★活动记录 数据空间的三种不同使用方法 和管理方法 §8.2 静态存储分配 【例】一个FORTRAN 77的例子 适于静态存储分配的语言必须满足以下条件 静态存储分配无法克服的问题 C 语言程序的外部变量 和程序中出现的常量都可以静态分配。 §8.3栈式存储分配 过程所需的数据空间包括两部分: §8.3栈式存储分配 §8.3.1 简单的栈式存储分配的实现 【例】利用Euclid算法的简单递归实现,计算两个非负整数的最大公约数。 【例】 §8.3.2 嵌套过程语言的栈式实现 语言的作用域规则确定了如何处理非局部名字的访问 PASCAL程序中过程定义的嵌套情况如下: ★ 非局部名字访问的实现(跟踪办法) ★一种是在过程活动记录中增设存取链 【例】 如何访问 a 的存储单元? ★另外一种:嵌套层次显示表(DISPLAY) 嵌套层次 display 是一个指针数组 词法作用域语言的作用域规则允许 display 通过以下步骤维护 维护步骤的验证 §8.1.3 堆式存储分配 堆式存储分配示意 对于堆式存储分配,需要解决两个问题 堆式存储管理的方法 使用可利用空

文档评论(0)

1亿VIP精品文档

相关文档