《编译原理》课程教学资源:第四章 对象和环境

名字、绑定和作用域 1程序设计语言——实践之路 Michael L. Scott, Programming Languages Pragmatics Morgan Kaufmann, 2000, 2005) 中文版由裘宗燕译电子工业出版社出版,2005 2编译原理及实践 Kenneth c. louden机械工业出版社.1997
名字、绑定和作用域 1.程序设计语言——实践之路 Michael L. Scott, Programming Languages Pragmatics, Morgan Kaufmann, 2000, 2005) 中文版由裘宗燕译.电子工业出版社出版,2005 2.编译原理及实践.Kenneth C.Louden.机械工业出版社.1997

本节要点 ■名字、绑定、静态绑定、动态绑定 ■对象的生存期 ■典型的存储分配方式 ■作用域
本节要点 ◼ 名字、绑定、静态绑定、动态绑定 ◼ 对象的生存期 ◼ 典型的存储分配方式 ◼ 作用域

名字和绑定 名字 口助记符,如:标识符,符号(+) 口是程序语言里最基本的抽象机制 口用来指称程序中出现的各种“东西”:变量、常量、过程/函数 结构/记录的成分、类型等等。 绑定( binding)是两个东西之间的关联,如一个名字和 它所指的东西。 注:不是所有的数据都有名字,例:C、Ada95和 Fortran9O用指针 来引用动态存储;类似的,Java和C#用引用来间接访问
名字和绑定 ◼ 名字 助记符,如:标识符,符号(+) 是程序语言里最基本的抽象机制 用来指称程序中出现的各种“东西”:变量、常量、过程/函数、 结构/记录的成分、类型等等。 ◼ 绑定(binding)是两个东西之间的关联,如一个名字和 它所指的东西。 ◼ 注:不是所有的数据都有名字,例:C、Ada 95和Fortran 90用指针 来引用动态存储;类似的,Java和C#用引用来间接访问

声明和定义 名字与事物(包括程序对象)之间的约束关系由定义 或声明建立。 个定义或声明引进一个名字,被定义/声明的事物及 相关属性就是该名字的意义。这个声明/定义建立了名字 与相关事物和属性之间的约束关系。 例:C声明 const doub|ex=3.876; 将名字X约束于一个 double类型的变量, const和值 3.876为其属性 例:C声明 dint fun(int, double); 使名字fun约束于函数类型int× double→int。这 函数的定义应该具有这种类型,它的使用必须符合这一类 型
声明和定义 名字与事物(包括程序对象)之间的约束关系由定义 或声明建立。 一个定义或声明引进一个名字,被定义/声明的事物及 相关属性就是该名字的意义。这个声明/定义建立了名字 与相关事物和属性之间的约束关系。 例:C 声明const double x = 3.876; 将名字x 约束于一个double 类型的变量,const 和值 3.876 为其属性 例:C 声明int fun (int, double); 使名字fun 约束于函数类型int×double →int。这个 函数的定义应该具有这种类型,它的使用必须符合这一类 型

绑定时间(约束时间) ■绑定时间指一个绑定的活跃时间 ■与高级语言和程序有关的重要时间概念: 口语言设计时。如:程序结构、类型。 口语言实现时。如:ⅣO,算术溢出,类型等价 口编程时。如:算法和名字 口编译时。数据对象的布局,从程序中高级结构到机器代码的映射。 □连接时。整个程序在内存的布局,如:静态数据对象分配,跨模 块对象约束,库对象约束 口装载时。物理地址的选择,完成虚地址到实地址的映射 口运行时。变量的值绑定,运行时的其他事项
绑定时间(约束时间) ◼ 绑定时间指一个绑定的活跃时间。 ◼ 与高级语言和程序有关的重要时间概念: 语言设计时。如:程序结构、类型。 语言实现时。如:I/O,算术溢出,类型等价 编程时。如:算法和名字 编译时。数据对象的布局,从程序中高级结构到机器代码的映射。 连接时。整个程序在内存的布局,如:静态数据对象分配,跨模 块对象约束,库对象约束 装载时。物理地址的选择,完成虚地址到实地址的映射 运行时。变量的值绑定,运行时的其他事项

静态绑定和动态绑定 ■静态绑定:在程序运行前建立的约束 ■动态绑定:在程序执行过程中建立的约東 哪些特征能静态绑定,或者必须动态绑定,不同 语言之间差别很大 口一般而言,静态绑定效率高、意义清晰,动态绑定更 灵活 口静态绑定的语言一般是编译执行 口动态绑定的语言一般是解释执行 面重点讨论变量的绑定,以下用对象表示任何 有名字的东西
静态绑定和动态绑定 ◼ 静态绑定:在程序运行前建立的约束 ◼ 动态绑定:在程序执行过程中建立的约束 ◼ 哪些特征能静态绑定,或者必须动态绑定,不同 语言之间差别很大 一般而言,静态绑定效率高、意义清晰,动态绑定更 灵活 静态绑定的语言一般是编译执行 动态绑定的语言一般是解释执行 ◼ 下面重点讨论变量的绑定,以下用对象表示任何 有名字的东西

生存期和作用域 ■绑定的生存期是一个绑定从创建到销毁的时间。 口创建和销毁可能伴有特定的动作(例:常量创建时需 要给定值) ■绑定的作用域是一个绑定在程序中活跃的文本区 域 作用域本身指程序中没有绑定被销毁的一段最大 的程序区域。(后面再讨论) 常见作业域 口子程序(函数和过程) 口模块 口模块类型 类块
生存期和作用域 ◼ 绑定的生存期是一个绑定从创建到销毁的时间。 创建和销毁可能伴有特定的动作(例:常量创建时需 要给定值) ◼ 绑定的作用域是一个绑定在程序中活跃的文本区 域。 ◼ 作用域本身指程序中没有绑定被销毁的一段最大 的程序区域。(后面再讨论) ◼ 常见作业域 子程序(函数和过程) 模块 模块类型 类 块

子程序 ■在大多数带子程序的语言中,子程序入口 打开一个新的作用域。 □在子程序入口,为局部变量创建绑定,使被重 复声明的全局变量的绑定无效,然后建立到局 部变量的索引。 □在子程序出口,销毁局部变量的绑定,激活那 些被变无效的非局部变量的绑定
子程序 ◼ 在大多数带子程序的语言中,子程序入口 打开一个新的作用域。 在子程序入口,为局部变量创建绑定,使被重 复声明的全局变量的绑定无效,然后建立到局 部变量的索引。 在子程序出口,销毁局部变量的绑定,激活那 些被变无效的非局部变量的绑定

对象的创建和销毁 ■对象的创建( creation)可能是 口静态创建,包括编译时完成,连接时完成,或者装载时完 成 口动态创建,运行中创建 ■对象的销毁可能在 口运行中完成 口程序终止时完成 ■生存期跨越程序运行期的对象称为永久( persistent 对象
对象的创建和销毁 ◼ 对象的创建(creation)可能是 静态创建,包括编译时完成,连接时完成,或者装载时完 成 动态创建,运行中创建 ◼ 对象的销毁可能在 运行中完成 程序终止时完成 ◼ 生存期跨越程序运行期的对象称为永久(persistent) 对象

静态对象和非静态对象 静态对象:静态创建,程序终止时销毁 非静态对象:程序运行中创建和销毁。 Fortran中的所有变量都是静态对象。 c中的外部变量(用 exteri声明)和局部 static变量是静态对象,自 动变量(用auto声明或默认)是非静态对象。 ■创建和初始化动作完全可能不同时做。例如C++的局部 static变量是 静态创建的,但在执行首次进入变量所在函数时进行初始化。 生存的对象通常有一个固定标识,最常见的就是用对象的存储位 置表示。对象总占据着一块存储空间,在其中保存自己的“值”。 因此,对象创建有时也称为分配( allocation) 存储位置 值
静态对象和非静态对象 ◼ 静态对象:静态创建,程序终止时销毁。 ◼ 非静态对象:程序运行中创建和销毁。 ◼ Fortran 中的所有变量都是静态对象。 ◼ C 中的外部变量(用extern声明)和局部static 变量是静态对象,自 动变量(用auto声明或默认)是非静态对象。 ◼ 创建和初始化动作完全可能不同时做。例如C++ 的局部static 变量是 静态创建的,但在执行首次进入变量所在函数时进行初始化。 生存的对象通常有一个固定标识,最常见的就是用对象的存储位 置表示。对象总占据着一块存储空间,在其中保存自己的“值”。 因此,对象创建有时也称为分配(allocation) 存储位置 值
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《编译原理》课程教学资源:第五章 YACC.ppt
- 《编译原理》课程教学资源:第二章(2-4-1)One parse tree only.ppt
- 《编译原理》课程教学资源:第二章(2-4)语法分析一自上而下分析.ppt
- 《JavaScript》权威指南简介.ppt
- 《编译原理》课程教学资源:第三章 正则表达式常应用于文本匹配:.ppt
- 《编译原理》课程教学资源:第二章(2-3-1)对于词法分析器的要求.ppt
- 《编译原理》课程教学资源:第二章 词法分析 2.6 利用Lex自动生成扫描程序.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.1 程序语言的语法描述.ppt
- 《编译原理》课程教学资源:第一章(1-2)编译简介.ppt
- 《编译原理》课程教学资源:语义分析和中间代码产生.ppt
- 《编译原理》课程教学资源:Chapter 5 Procedure Activations.ppt
- 《互联网软件应用与开发》综合复习材料.doc
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第四章 门电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第六章 时序逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第五章 组合逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第二章 半导体基本器件.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第三章 开关理论基础.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第七章 存储器和可编程逻辑器件.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第一章 课程简介.ppt
- 清华大学:《数据通信原理》课程教学资源(学习讲义)软件无线电体系结构的新趋势.doc
- 《编译原理》课程教学资源:第八章 符号表.ppt
- 《编译原理》课程教学资源:第六章 属性文法.ppt
- 《编译原理》课程教学资源:第五章(5-2)过程激活.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.5 语法分析——自下而上分析.ppt
- 《编译原理》课程教学资源:教学计划.doc
- 《编译原理》课程教学资源:第十章 优化.ppt
- 《编译原理》课程教学资源:属性文法.ppt
- 《体系结构》第二章 计算机指令集结构设计.doc
- 《体系结构》第三章 流水线技术.doc
- 《体系结构》第五章 存储层次.doc
- 《体系结构》第六章 输入输出系统.doc
- 《体系结构》第一章 计算机体系结构的基本概念.doc
- USB系统研究(学位论文)USB System Study.pdf
- 《微型计算机原理与接口技术》第10章 串行通信接口.ppt
- 《微型计算机原理与接口技术》第11章 人机交互接口技术.ppt
- 《微型计算机原理与接口技术》第12章 模拟量输入输出接口技术.ppt
- 《微型计算机原理与接口技术》第1章 微型计算机基础知识.ppt
- 《微型计算机原理与接口技术》第2章 典型微处理器.ppt
- 《微型计算机原理与接口技术》第3章 指令系统与汇编语言程序设计.ppt
- 《微型计算机原理与接口技术》第4章 半导体存储器及其接口.ppt