编译原理蒋宗礼课件第9章.ppt

编译原理蒋宗礼课件第9章.ppt

ID:51593428

大小:780.50 KB

页数:67页

时间:2020-03-25

编译原理蒋宗礼课件第9章.ppt_第1页
编译原理蒋宗礼课件第9章.ppt_第2页
编译原理蒋宗礼课件第9章.ppt_第3页
编译原理蒋宗礼课件第9章.ppt_第4页
编译原理蒋宗礼课件第9章.ppt_第5页
资源描述:

《编译原理蒋宗礼课件第9章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第9章运行时的存储组织9.1与存储组织有关的源语言概念与特征9.2存储组织9.3静态存储分配9.4栈式存储分配9.5栈中非局部数据的访问9.6堆管理9.7本章小结7/21/202119.1与存储组织有关的源语言 概念与特征编译程序必须准确地实现包含在源程序中的各种抽象概念,如名字、作用域、数据类型、操作符、过程、参数和控制流结构等,这些概念反映了源语言所具有的一些特征,对它们的支持往往会影响运行时的存储组织和分配策略给定一个源程序,编译程序必须根据源语言的特征(规定)为源程序中的许多问题做出决策,包括何时、怎样为名字分配内存地址。静态策略:在编译时即可做出决

2、定的策略动态策略:直到程序执行时才能做出决定的策略7/21/202129.1.1名字及其绑定“名字”、“变量”和“标识符”的区别与联系名字和变量分别表示编译时的名字和运行时该名字所代表的内存位置。标识符则是一个字符串,用于指示数据对象、过程、类或对象的入口。所有标识符都是名字,但并不是所有的名字都是标识符,名字还可以是表达式。例如,名字x.y可能表示x所代表结构的域y。同一标识符可以被声明多次,但每个声明都引入一个新的变量。即使每个标识符只被声明一次,局部于某个递归过程的标识符在不同的运行时刻也将指向不同的内存位置。7/21/20213名字的绑定从名字到值的

3、两步映射环境把名字映射到左值,而状态把左值映射到右值赋值改变状态,但不改变环境。如果环境将名字x映射到存储单元s,我们就说x被绑定到s名字内存位置(变量)状态值环境7/21/202149.1.2声明的作用域x的声明的作用域是程序中的这样一段区域,在该区域中,x的引用均指向x的这一声明。对于某种程序设计语言,如果只通过考察其程序就可以确定某个声明的作用域,则称该语言使用静态作用域;否则称该语言使用动态作用域。C++、Java和C#等还提供了对作用域的显式控制,其方法是使用public、private和protected这样的关键字。声明的作用域是通过符号表进行

4、管理的,详见8.4节的讨论。7/21/202151.静态作用域在具有程序块结构的语言中,变量声明的静态作用域规则如下:如果名字x的声明D属于程序块B,则D的作用域是B的所有语句,只有满足如下条件的程序块B‘除外:B’嵌套在B中(可以是任意的嵌套深度),且B‘中具有同一名字x的一个新的声明。令B1,B2,…,Bk是包围x的本次引用的所有程序块,Bk-1是Bk的直接外层程序块,Bk-2是Bk-1的直接外层程序块,如此类推。找到使x的某个声明属于Bi的最大i,则x的本次引用指向Bi中的这个声明。换句话说,x的本次引用处在Bi中的这个声明的作用域中。7/21/202

5、162.显式访问控制类和结构为其成员引入了一种新的作用域如果p是某个带有域(成员)x的类的对象,则p.x中x的引用将指向该类定义中的域x。与程序块结构类似的是,类D中成员x的声明的作用域将会扩展到D的任何子类D',除非D'中具有同一名字x的一个局部声明。7/21/202172.显式访问控制通过使用像public、private和protected这样的关键字,C++或Java类的面向对象语言提供了一种对超类中成员名字的显式访问控制。这些关键字通过限制访问来支持封装。因此,私有名的作用域只包含与该类及其友类相关联的方法声明和定义,保护名只对其子类是可访问的,而

6、公用名从类的外部也是可以访问的。7/21/202183.动态作用域动态作用域规则相对于时间而静态作用域规则相对于空间静态作用域规则要求我们找出某个引用所指向的声明,条件是该声明处在包围该引用的“空间上最近的”单元(程序块)中。动态作用域也是要求我们找出某个引用所指向的声明,但条件是该声明处在包围该引用的“时间上最近的”单元(过程活动)中。7/21/202199.1.3过程及其活动将“过程、函数和方法”统称为“过程”过程定义是一个声明,它的最简单形式是把一个标识符和一个语句联系起来。该标识符是过程名,而这个语句是过程体。当过程名出现在可执行语句中时,称相应的过

7、程在该点被调用。过程调用就是执行被调用过程的过程体。注意,过程调用也可以出现在表达式中。7/21/2021109.1.3过程及其活动出现在过程定义中的某些标识符具有特殊的意义,称为该过程的形式参数,简称为形参。调用过程时,表达式作为实在参数(或实参)传递给被调用的过程,以替换出现在过程体中的对应形式参数。9.1.4节将讨论实参和形参的结合方法。过程体的每次执行叫做该过程的一个活动。过程p的一个活动的生存期是从过程体执行的第一步到最后一步,包括执行被p调用的过程的时间,以及再由这样的过程调用其它过程所花的时间,等等。7/21/2021119.1.3过程及其活动

8、如果a和b是过程的活动,那么它们的生存期或者不交迭,

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

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

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