1 / 27
文档名称:

编译原理课件chap9.ppt

格式:ppt   大小:90KB   页数:27页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理课件chap9.ppt

上传人:1314042**** 2021/3/3 文件大小:90 KB

下载得到文件列表

编译原理课件chap9.ppt

相关文档

文档介绍

文档介绍:第九章运行时存储空间组织
编译程序在完成词法、语法和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来弄清楚将来在代码运行时刻,源代码中的各种变量、常量等用户定义的量是如何存放的,如何去访问它们。
在程序的执行过程中,程序中数据的存取是通过与之对应的存储单元来进行的。在程序语言中,程序使用的存储单元都是由标识符来表示的。它们对应的内存地址都是由编译程序在编译时或由其生成的目标程序运行时进行分配。所以对于编译程序来说存储组织与管理是一个复杂而又十分重要的问题。这一章就是对目标程序运行时的活动和运行环境进行讨论,主要讨论存储组织与管理, 包括活动纪录的建立与管理、存储器的组织与存储分配的策略、非局部名称的访问等问题。
呛额训淡兑擅边圃末椽般话键信月纹瞅鞘卵权规尉卫学饼胰正鼠座捏梨胳编译原理课件chap9编译原理课件chap9
第九章 运行时存储空间组织
9。1 目标程序运行时的活动
9。1。1 过程的活动
这一节讨论一个过程的静态源程序和它的目标程序在运行时的活动之间的关系。
一个过程的活动指的是该过程的一次执行。
关于过程P一个活动的生存期,指的是从执行该构成体第一步操作到最后一步操作之间的操作序列,包括执行P时调用其他过程化费的时间。一般来说,术语“生存期”指的是在程序执行过程中若干步骤的一个顺序序列。
一个说明在程序里能起作用的范围成为该说明的作用域。
9。1。2 参数传递
要掌握在过程调用时出现的:形式参数, 实在参数等基本概念。
轮逾攻抡频厘意维囚烯谱押厄湃卖拳疲延咨透卤票疼教幻遇哑腆唾拍摩赤编译原理课件chap9编译原理课件chap9
第九章 运行时存储空间组织
传地址, 传值, 传名 三种参数传递方法。由于传递参数的方法不同,同样的程序运行的结果可能大不相同。
9。2 运行时存储器的划分
9。2。1 运行时存储器的划分
编译程序为了使它编译后得到的目标程序能够运行,要从操作系统中获得一块存储空间。从上一节的讨论我们知道,对这块提供运行的空间应该进行划分以便存放其中包括生成的目标代码、数据对象和跟踪过程活动的控制栈。
9。2。2 活动纪录
为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,我们把这样的一个连续存储块称为活动纪录。
戏话倡楚楼液贮奎寸进美芦搞峦板市您乓册佐域蒸灯闸窃芜炕际****置邵足编译原理课件chap9编译原理课件chap9
第九章 运行时存储空间组织
当前活动纪录一般包括如下内容:
连接数据
返回地址
动态链:指向调用该过程前的最新活动纪录地址的 指针。运行时,是运行栈上各数据区按动态建立的次序结成链。链头为栈顶起始位置。
静态链:指向静态直接外层最新活动纪录地址 的指针,用来访问非局部数据。
形式单元:存放相应的实在参数的地址或值。
局部数据区:局部变量、内情向量、临时工作单元(如存放对表达式求值的结果)。
柯汀硫陨吻避恐阻纤姨帧捶湿王哇换页拈渗卿煽札哼泊矾浅陀蚊寡纠储汰编译原理课件chap9编译原理课件chap9
第九章 运行时存储空间组织
9。2。3存储分配策略
不同的编译程序关于数据空间的存储分配策略可能不同。静态分配策略在编译是对所有对象分配固定的存储单元。且在运行是保持不变。栈式动态分配策略在运行时把存储器作为一个栈进行管理,运行时,每当调用一个过程,它所需要的存储空间就动态的分配于栈顶,一旦退出,它所占空间就予以释放。堆式动态存储策略在运行时把存储器组织成堆结构,以便用户关于存储空间的申请与归还(回收),凡申请者分给一块,凡释放者退回给堆。
评竭胚麻丙丑籽恳年挚鸯圃套帘环堑审亚被彦那裁肿捆搀懒逞惕戊整菇码编译原理课件chap9编译原理课件chap9
第九章 运行时存储空间组织
9。3静态存储分配
如果在编译时就能够确定一个程序在运行时所需要的存储空间的大小,则在编译时就能够安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址。存储空间的这种分配方法叫做静态分配。
这一节要特别注意临时变量的地址分配方法。
尽管在翻译时大量引进了临时变量名,但是并不是对每一个名字分配一个不同的存储单元,那样做太浪费空间了。一个一般的原则是如果两个临时变量的名字作用域不相交,则他们可分配在同一单元中,一个临时