编译原理cha9 运行时存储组织.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理cha9 运行时存储组织

第九章 运行时存储空间组织 概述 目标程序运行时的活动 运行时存储器的划分(Partition) 存储分配策略(重点) 静态存储分配(Static Allocation) 动态存储分配(Dynamic Allocation) 栈式(Stack)存储分配 简单的栈式存储分配 嵌套过程语言的栈式实现(重点 难点) 堆式(Heap)存储分配策略 本章练习 作业 概述 p238 任务 对目标程序运行时的数据空间的组织和管理 逻辑阶段 在目标代码生成前,作准备 实质:解决关联问题 绑定(Binding) 源程序的文本——程序运行动作的实现 源文件中的名字N——运行时的存储单元S 9.1 目标程序运行时的活动 p239 过程的活动举例 为方便讨论,程序和函 数也看作过程。有C程序: 定义 过程的活动 p240 一个过程的活动 是指该过程的一次执行 每次执行一个过程体,产生该过程体的一个活动 一个活动的生存期 是指从该过程体的第一步操作到最后一步操作之间的操作序 包括执行该过程时调用其它过程花费的时间 名字说明作用域 一个说明在程序里能起作用的范围 参数传递 p241 调用与被调用者之间的信息传递 实在参数 形式参数 传递的三种不同途径 传地址(call by refrence) 传值(call by value) 传名(call by name) 9.2 运行时存储器的划分 p243 活动记录(Activation Record) p244 临时单元 内情向量 局部变量 形式单元 静态链 动态链 返回地址 活动记录结构与主要内容 p244 存储分配策略 P245 9.3 静态存储分配 p245 无法解决的问题 递归调用问题 ——栈式存储分配 动态申请存储空间 ——堆式存储分配 9.4 简单栈式存储分配 p255 用途 过程的局部环境 (活动记录) 对语言的限制 没有分程序结构 过程定义不许嵌套 允许过程的递归调用 适用语言 C语言 C语言栈式存储组织举例 p255 C的活动记录 p256 临时工作单元 内情向量 局部变量 形式单元 n个 参数个数 n 返回地址 老SP(动态链) C过程调用实现 p257 临时工作单元 内情向量 局部变量 形式单元 n个 参数个数 n 返回地址 老SP(动态链) 9.5 嵌套过程语言的栈式实现 p259 非局部名字的访问实现 静态链和活动记录 display表和活动记录 程序举例 p259 静态链和AR p259 临时工作单元 内情向量 局部简单变量 形式单元 参数个数 n 静态链 返回地址 老SP(动态链) 静态链举例 p260(图d) display表和AR p261 解决办法——display表(过程嵌套层次显示表) display表和AR p261 display表(过程嵌套层次显示表) 每当进入一个过程,在建立它的AR和display表 设现行过程为i层,则display表含有i+1项 display表的实现 p261 两种方式:外置display表 内嵌display表 内嵌display表:放入AR中,作为AR的一部分 display表举例 全局display和display表的建立 p262 全局display display表 运行时AR和display表的课堂练习 p270 6. program main; var a,b,c:integer; procedure X(i,j:integer); var d,e:real; procedure Y; var f,g:real; begin … end;{Y} procedure Z(k:integer); var h,i,j:real; begin … end;{Z} begin … 10: Y; … 11: Z;…end;{X} begin … X(a,b);…end.{main} 运行时AR和display表的课堂练习答案 p270 6. 9.6 堆式(Heap)动态存储分配 p265 用于动态数据结构 存储空间的动态分配和释放 实现方法 将内存空间分为若干块,根据用户要求分配 无法满足时,调用无用单元收集程序将被释放的块收集起来重新分配 堆式存储分配方法 p266 要解决主要问题 申请一块大小为N的空间 若有大小超过N的空闲空间时,应该分配哪些给它? 若所有空闲块的总和也不够N,应该如何分配? 操作系统中存储器管理将详细介绍,这里略 本章练习 1.常见得三种存储分配策略:

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档