《《编译程序设计原理》》教案

《《编译程序设计原理》》教案

ID:41362152

大小:216.50 KB

页数:43页

时间:2019-08-22

《《编译程序设计原理》》教案_第1页
《《编译程序设计原理》》教案_第2页
《《编译程序设计原理》》教案_第3页
《《编译程序设计原理》》教案_第4页
《《编译程序设计原理》》教案_第5页
资源描述:

《《《编译程序设计原理》》教案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章运行环境标识符与数据目标的关系变量名──数据存储单元地址过程名、函数名──程序段地址相关问题变量和过程的作用域过程调用的实现方法7.1绑定的完成何时进行空间分配:全局变量:程序装入时局部变量:进入过程或分程序时变量名的绑定静态绑定:编译时指定(相对地址)如:多数变量名动态绑定:运行时指定如:C++的引用变量过程和函数的绑定为过程指定程序代码段地址静态绑定编译时指定相对地址如:多数各种函数、子例程动态绑定运行时指定如:虚函数(C++)、Java变量的静态绑定词法分析在符号表建立变量的表项说明语句的语义分

2、析通过类型计算空间需求填写变量的地址(供引用)过程的静态绑定词法分析在符号表建立过程的表项过程体的语义分析统计目标代码长度填写过程的地址(供引用)7.2存储组织目标程序数据空间的典型分配静态存储分配特点编译时刻确定存储位置访问效率高主要用途子程序的目标代码段全局数据目标(全局变量)栈式存储分配用途过程的局部环境(活动记录)特点嵌套调用次序先进后出生存期限于本次调用自动释放活动记录活动记录活动记录运行栈过程调用的活动记录相关的语义处理过程说明的翻译计算实在参数、返回值的空间过程体的翻译计算局部变量、临时变量

3、的空间堆式存储分配用于动态数据结构存储空间的动态分配和释放实现方法:将内存空间分为若干块,根据用户要求分配无法满足时,调用无用单元收集程序将被释放的块收集起来重新分配7.3说明语句的翻译高级语言中的说明语句变量的数据类型、作用域过程和函数的原型、作用域常数的标识、记录的结构类型内部类型(built-in)用户定义类型类型的作用引入数据抽象、隐蔽数据的基本表示从二进制位串抽象为整数、实数、记录等形成不同的程序设计风格规定可用的运算类型检查(强类型、弱类型)数据精度控制规定存储单元尺寸,优化空间管理变量说明的翻

4、译在符号表中填写变量的属性类型、相对地址、作用域等相对地址全局变量表示为静态数据区的偏移值局部变量表示为局部数据域(活动记录的部分)的偏移值例7-1:存储布局realx[8];integeri,j;名字相对地址x0i64j68设计翻译方案类型描述符T的属性type类型width占用的字节数语义过程insert:设置变量的类型和地址array:计算数组类型全局量off:已分配空间尺寸(字节数)说明语句的翻译模式P→{off:=0}DD→D;DD→id:T{insert(id.entry,T.type,off)

5、;off:=off+T.width}T→integer{T.type:=integer;T.width:=4}T→real{T.type:=real;T.width:=8}T→array[num]ofT1{T.type:=array(num.val,T1.type);T.width:=num.val*T1.width}T→^T1{T.type:=pointer(T1.type);T.width:=4}例7-2:x:real;i:integer的翻译insert(x,real,0)insert(i,integ

6、er,8)off=0off=8T.type=realT.width=8off=12T.type=integerT.width=47.4组合数据类型的翻译同质数据结构多维数组、枚举异质数据结构记录、结构、联合抽象数据类型类、模块功能与实现操作元素的引用、维护;结构的引用、维护描述说明方法、引用方法实现的分类静态:语句的翻译动态:过程调用、内存管理数组说明的翻译空间分配首地址、空间尺寸表格管理维数、下标上界、下标下界存放方式按行存放、按列存放数组元素的引用数组元素的翻译完成上下界检查生成代码完成参照相对地址的计

7、算目标x:=y[i]和x[i]:=yi是相对地址,不是数组下标记录说明的翻译空间分配设置首地址、各元素的相对地址大于所需的空间(对齐)例:structNode{floatx,y;structnode*next;}node;048记录说明的翻译表格管理各元素的名字、类型、尺寸生成代码,完成参照元素的相对地址的计算目标x:=y[i]和x[i]:=yx是记录名,i是相对地址7.5过程调用程序设计语言的子程序子例程、函数语言现象函数原型的说明(参数、返回值)函数的定义(分程序结构)函数的调用(表达式)工作方式调用方

8、:当前环境的保存与恢复被调方:构造环境,绑定参数Main(){Sub1(10)}Sub1(x){Sub2(x+1)}Sub2(y){Sub3()}实现需求简单过程调用实在参数的计算和保存控制转移、返回地址的保存实在参数和形式参数的结合(多种结合方式)局部变量的处理返回值的处理递归过程调用每层过程调用信息的保存处理方法使用控制栈为每次过程调用准备一活动记录语义处理需求计算过程调用信息的空间需求过程名及其每个参数的相

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。