武汉理工大学计算机科学系林泓第10章 目标程序运行时的存储组织 10.1 数据空间的三种不同使用方法和管理方法10.2 栈式存储分配的实现10.3 参数传递10.4 过程调用、过程进入和过程返回武汉理工大学计算机科学系林泓 从逻辑上看,在代码生成前,编译程序必须进行目标程序运行环境的配置和数据空间的分配。 数据空间应包括:u用户定义的各种类型的数据对象(变量和常数)所需的存储空间;u作为保留中间结果和传递参数的临时工作单元;u调用过程时所需的连接单元;u以及组织输入/输出所需的缓冲区。 目标代码所占用空间的大小在编译时能确定。有些数据对象所占用的空间也能在编译时确定,其地址可以编译进目标代码中。而有些数据对象具有可变体积和待分配性质,无法在编译时确定存储空间的位置。 武汉理工大学计算机科学系林泓 因此运行时的存储区常常划分成:目标区、静态数据区、栈区和堆区,如图10.1 。目标代码区静态数据区栈Stack堆heap图10.1 目标程序运行时存储区的典型划分武汉理工大学计算机科学系林泓所谓数据空间的分配,本质上看,是将程序中的每个名字与一个存储位置关联起来,该存储位置用以容纳名字的值。编