编泽原理 第九章程序运行期间的存储空间组织 2005/6112
编译原理 2005/6/12 第九章 程序运行期间的存储空间组织
编译原理 本节内容与要点 墨运行时存储空间的划分 活动记录概念 存储空间分配策略 1、静态存储分配 2、动态存储分配 简单栈式存储分配 嵌套过程语言的栈式分配 典型范例解析 第2觉
编译原理 第2页 本节内容与要点 运行时存储空间的划分 活动记录概念 存储空间分配策略 1、静态存储分配 2、动态存储分配 简单栈式存储分配 嵌套过程语言的栈式分配 典型范例解析
编泽原理 运行时存储空间的划分 编译程序为了使它编译后得到的目标程序能够运行, 要从操作系统中获得一块存储空间。 对这块提供运行的空间应该进行划分以便存放:生成 的标代码、数据对象和跟踪过程活动的控制栈。目 标代码的大小在编译时可以确定,所以编译程序可以 把它放在一个静态确定的区域。 慧有一些数据对象的大小在编译时也能确定,因此它们 也可以放在静态确定的区域。 第3页
编译原理 第3页 运行时存储空间的划分 编译程序为了使它编译后得到的目标程序能够运行, 要从操作系统中获得一块存储空间。 对这块提供运行的空间应该进行划分以便存放:生成 的目标代码、数据对象和跟踪过程活动的控制栈。目 标代码的大小在编译时可以确定,所以编译程序可以 把它放在一个静态确定的区域。 有一些数据对象的大小在编译时也能确定,因此它们 也可以放在静态确定的区域
编译原理 返回 运行时存储空间的划分(续) 目标代码 静态数据 栈 ↓ 堆 第4负
编译原理 第4页 运行时存储空间的划分(续) 目 标 代 码 静 态 数 据 栈 ↓ ↑ 堆 返回
编泽原理 活动记录 为了管理过程在一次执行中所需要的信息, 使用一个连续的存储块,这样的一个连续存储 块称为活动记录(Activation Record)。 当过程调用时,产生一个过程的新的活动, 用一个活动记录表示该活动的相关信息,并将 其压入栈。 第5列
编译原理 第5页 活动记录 为了管理过程在一次执行中所需要的信息, 使用一个连续的存储块,这样的一个连续存储 块称为活动记录(Activation Record)。 当过程调用时,产生一个过程的新的活动, 用一个活动记录表示该活动的相关信息,并将 其压入栈