大学程序设计语言下载课件集中复习(373KB).pptVIP

  • 2
  • 0
  • 约9.12千字
  • 约 47页
  • 2018-04-10 发布于广东
  • 举报

大学程序设计语言下载课件集中复习(373KB).ppt

前缀语义表示法计算利用执行堆栈处理,规则是: 如果是操作符,则压栈; 如果是操作数,则压栈; 如果栈顶有n个操作数,且仅挨n个操作数的是一个n元操作符,则n个操作数和n元操作符弹栈,并操作计算,并将操作结果压栈。 前缀计算的优缺点: 优点: 可在一次扫描后计算出结果。 省略了括号; 机械解码相对容易。 缺点: 但由于需要知道操作数的数目,一元操作符与二元操作符需要语义分开。 需要进行操作数项数与操作符的元数匹配检查。 后缀语义表示计算仍然使用执行堆栈处理,规则是: 如果是操作数,则压栈; 如果是n元操作符,那么其操作数必然是栈顶的n个项目,则n个操作数弹栈,操作计算,并将操作结果压栈。 后缀计算的优点: 可在一次扫描后计算出结果。 省略了括号; 机械解码相对容易。 无需进行操作数项数与操作符的元数匹配检查。 结构定理:任何基本程序都能转换成仅仅用while和if 语句构成的程序。 结构化程序并不等于好程序。它仅仅意味着使用了具有少量框的基本控制结构,如果开始是差劲的意大利面条式代码,那么变换后仍然是差劲的结构代码。 子程序的定义是指程序中的子程序声明和实现语句代码段,用户可见。子程序活动是每次子程序被激活而生成可执行代码段和记录,它包含两个部分:具有静态特性的代码段和具有动态特性的活动记录。 简单的call-return子程序的实现可分为以下阶段: 主程序执行阶段:为主程序生成一个活动记录。 子程序被激活阶段:控制权转交子程序。 断点保护阶段:将断点保存在被调用子程序活动记录的返回点数据对象中。 子程序执行阶段:解释器将按CIP中的内容读取和执行指令。 子程序返回阶段:从该子程序活动记录的返回点取出存储的IP和EP并赋值给CIP和CEP。将控制权交回调用程序。 (主程序)调用程序继续运行阶段:调用程序重新获得控制权后从断点开始继续执行。 引用环境是指:供程序或子程序执行期间使用的标识符关联。子程序的引用环境在子程序被调用时创建,且在执行期间保持不变。其主要组成部分是:局部引用环境、非局部引用环境、全局引用环境和预定义引用环境。 如果一个标识符的关联是子程序的引用环境的一部分,则该关联在子程序中可见,否则称之为不可见(或隐藏)。 数据对象在其生存期中可能存在多个名字。当一个可见数据对象在单一引用环境中有多个名字时,每个名字成为该数据对象的别名。互为别名的数据对象拥有相同的引用环境。 别名使程序的可读性变差,同时由于别名相互依赖,使得编译过程中的代码优化相当麻烦。 别名与同名有很大的区别。别名是指:相同数据对象具有不同的名字,这些不同名字的右值是相同的。他们的引用环境相同。而同名是指:相同的名字对应着不同的数据对象,从虚拟机的角度看,它们是完全互不相关的。 程序中的每个声明或其他标识符的定义都有一定的作用范围,我们称之为静态作用域。静态作用域将程序文本中名字的声明和引用相联系;而动态作用域在程序运行期间将引用和名字相联系。这两者的关系是:作用域规则必须一致。 静态作用域能够提高程序的运行效率,保证可靠性。静态作用域规则提高了程序的可读性。它无需跟踪程序的执行就可将程序中引用的名字和其声明相关联。 有两种方式来实现动态作用域规则:保留、删除。保留方式的实现方法是:将包含保留变量的局部环境表作为子程序代码段的一部分而生成。删除方式的实现方法是:将包含删除变量的局部环境表作为子程序活动记录的一部分。 按名调用:将子程序调用看做是用子程序体替代该调用。该方式可能会引起二义性问题。 按引用调用:该方法是最常用的参数传递机制。它将数据对象的地址指针(即左值)传递子程序,而不改变数据对象本身在内存中的位置。 按值调用:将实参的值(即右值)传递给形参。 按值-结果调用:将形式参数与实际参数一样看作是相同数据类型的局部变量(数据对象)。 按常数调用 :该方法是通过常数传递参数,形式参数在子程序执行期间类似于局部常数。 按结果调用:类似于按值-结果调用,但是从子程序中返回结果。 存储管理需要研究的的三个主要方面是:初始分配;存储单元回收;压缩和再用。、 静态分配的基本思想是:存储器的分配在翻译过程中完成,而且在程序的执行过程中保持不变。翻译器可以为所有的数据产生直接的左值地址。静态存储不需要运行时的存储管理软件的支持,因而没有必要考虑存储空间的回收和再用。它的优点是:效率比较高;缺点是:1)静态存储分配无法处理递归子程序的调用.2)无法处理大小依赖于所计算值或输人值的数据结构。3)静态存储分配无法满足语言中的其他一些重要特色。 引用计数通过提供了一个检查指向一给定元素的指针个数的方法来解决悬挂引用问题。其优点是:大多数情况下避免无用单元的产生和悬挂引用。其缺点是:维护开销和额外存储开销太大。 无用单元回收通过调用无用单元回收器来寻找并恢复其所占用

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档