- 9
- 0
- 约9.47千字
- 约 6页
- 2016-12-07 发布于贵州
- 举报
编译原理 第九章 目标程序运行时的存贮组织
第九章 目标程序运行时的存贮组织
从逻辑上看,在代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。一般来讲,假如编译程序从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码和目标代码运行时的数据空间。数据空间应包括:用户定义的各种类型的数据对象(变量和常数)所需的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需的连接单元,以及组织输入/输出所需的缓冲区。目标代码所占用空间的大小,在编译时能确定,有些数据对象所占用的空间也能在编译时确定,其地址可以编译进目标代码中。但有些数据对象具有可变体积和待编译性质,而无法在编译时确定存储空间的位置。
因此运行时的存储区常常划分成:目标区、静态数据区、栈区和堆区,如图9-1就是一种典型划分,代码(code)区用以存放目标代码,这是固定长度的,即编译时能确定的。静态数据区(static data)用以存放编译时能确定所占用空间的数据,堆栈区(stack and heap)用于可变数据以及管理过程活动的控制信息。
编译程序分配目标程序运行时的数据空间的基本依据是程序语言设计时对程序运行中存储空间的使用和管理办法的规定。所谓数据空间的分配,本质上看,是将程序中的每个名字与一个存储位置关联起来,该存储位置用以容纳名字的值。我们知道,即便有些名字在程序中只声明了一次,
原创力文档

文档评论(0)