- 1
- 0
- 约6.58千字
- 约 46页
- 2017-06-13 发布于湖北
- 举报
第7章 目标程序运行时的存储组织 存储组织 运行时的分配策略 从逻辑上看,在代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。一般来讲,假如编译程序从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码和目标代码运行时的数据空间。 数据空间应包括:用户定义的各种类型的数据对象(变量和常数)所需的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需的连接单元,以及组织输入/输出所需的缓冲区。目标代码所占用空间的大小,在编译时能确定,有些数据对象所占用的空间也能在编译时确定,其地址可以编译进目标代码中。但有些数据对象具有可变体积和待编译性质,而无法在编译时确定存储空间的位置。 编译程序分配目标程序运行时的数据空间的基本依据是程序语言设计时对程序运行中存储空间的使用和管理办法的规定。 因此,源语言的结构特点、源语言数据类型、源语言中决定名字作用域的规则等因素影响存储空间的管理和组织的复杂程序,决定数据空间分配的基本策略。 术语 静态:如果一个名字的性质通过说明语句或隐或显规则而定义,则称这种性质是“静态”确定的。 动态:如果名字的性质只有在程序运行时才能知道,则称这种性质为“动态”确定的。 可变(动态)数组:若一个数组所需的存储空间的大小在编译时就已知道,则称它为确定数组,否则称为可变(动态)数组。 如像FORTRAN这样的语言, 其程序是段结构的,即由主程序段和若干子程序段组成。各程序段中定义的名字一般是彼此独立的(除公共块和等价语句说明的名字以外),也即各段的数据对象名的作用域在各段中,同一个名字在不同的程序段表示不同的存储单元,不会在不同段间互相引用、赋值。 过程所需的数据空间包括两部分,一部分是生存期在本过程这次活动中的数据对象,如局部变量、参数单元、临时变量等等;另一部分则是用以管理过程活动的记录信息,即当一次过程调用出现时,调用该过程的那个过程的活动即被中断,当前机器的状态信息,诸如程序计数器(返地址)、寄存器的值等,也都必须保留在栈中。 这种情况下通常使用一种称为堆式的动态存储分配方案。假设程序运行时有一个大的存储空间,每当需要时就从这片空间中借用一块,不用时再退还。 Program main; 全局变量的说明; proc R; …… end R; proc Q; …… end Q; 主程序执行语句 end.(main) 语句exchangel(m,n);表示了对过程exchangel的一次调用,其中m,n为实在参数,简称实参。我们所讨论的问题是,为执行 exchangel(m,n),形参i,j应按何种方式同实参m,n相联,换句话说,如何把实在参数传递给相应的形式参数呢? 在一个赋值语句a[i]:=a[j]中,表达式a[j]表示一个值,而a[i]表示一个存储位置,用于存放a[j]的值。通常术语左值(L—value)指 表达式代表的存储,右值(R—value)指该 存储位置中含有的值。“左”和“右”来自赋值语句的“左”端和“右”端。参数传递方法的不同主要基于实在参数是表达一个右值,一个左值,还是实在参数本身的文本。 传地址: 第五章: 编译程序的数据结构和符号表 5.1 分配型数据结构 5.2 查找型数据结构 概述 在编译过程中需要建立并保持一批表格-符号表。 从提高编译程序 的工作效率上考虑,有关的数据结构的设计就显得非常重要。 从使用角度上看可以分为:查找型数据结构和分配型数据结构。 查找型数据结构在编译过程中用于构造不同的信息表,保存源程序中不同实体的属性信息。特点是每个实体的项只创建一次,但可以查询多次,所以查询效率很重要。 分配型数据结构主要用于处理嵌套结构的程序。其特点是分配给实体的内存地址对实体用户是可知的。因此不会对其进行查询操作,但分配和回收的速度和内存的使用效率却是十分重要的。 5.2.1 查找型数据结构 (1)什么是符号表? 在编译过程中,编译程序用于记录源程序中各种名字的特性信息, 所以也称为名字特性表。 名字: 程序名、过程名、函数名、用户定义类型、变量名、符号名字。 特性信息:名字种类、类型、维数、参数个数及目标地址(存储单元地址)等。 (2) 建表和查表的必要性 (符号表在编译过程中的作用) 源程序中变量要先声明,然后才能引用。 用户通过声明语句,声明各种名字,以及给出它们的类型维数等信息,编译程序在出来这些声明语句时,因将声明中的名字以及信息登录到符号表中,同时编译还要给变量分配存储单元,而存储单元地址也必须登录在符号表中。 当编译程序编译到引用所声明的变量时(赋值或引用其值)要进行语法语义
您可能关注的文档
最近下载
- 音体美教学常规要求.doc VIP
- (2025)新课标《义务教育数学课程标准(2022年版)》测试题(附含答案) .pdf VIP
- 质量工程师中级培训教程.doc VIP
- 高中英语(北师大版)必修3—单词表.pdf VIP
- Unit 1 Time to Relax (第1课时) Section A 1a- 2d 课件 2026年春人教版英语八年级下册.pptx VIP
- QE质量工程师培训完整版教材.ppt VIP
- 杜曼教育——如何教宝宝学数学.pdf VIP
- 香港小学中文修辞手法练习.pdf VIP
- 2025-2026学年初中数学八年级上册(2024)沪教版(五四制)(2024)教学设计合集.docx
- GNSS接收机抗干扰技术研究.pptx VIP
原创力文档

文档评论(0)