网站大量收购独家精品文档,联系QQ:2885784924

第六章节运行时存储空间的组织跟管理.ppt

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

第六章 运行时存储空间的 组织和管理 编译程序在完成词法、语法和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来弄清楚将来在代码运行时刻,源代码中的各种变量、常量等用户定义的量是如何存放的,如何去访问它们。 在程序的执行过程中,程序中数据的存取是通过与之对应的存储单元来进行的。在程序语言中,程序使用的存储单元都是由标识符来表示的。它们对应的内存地址都是由编译程序在编译时或由其生成的目标程序运行时进行分配。所以对于编译程序来说存储组织与管理是一个复杂而又十分重要的问题。 本章内容: 讨论一个活动记录中的数据安排 程序执行过程中,所有活动记录的组织方式 存储器的组织与存储分配的策略 非局部名称的访问 参数传递 6.1 局部存储分配策略 过程的每一次运行称为一次活动(activation)。活动是一个动态的概念,它有有限的生存期。 活动的生存期是指从进入活动的第一条指令执行到离开此活动前的最后一条指令执行的这段时间,其中包括调用其它过程时其它活动的生存期。 6.1.2 名字的作用域和绑定 名字的作用域 一个声明起作用的程序部分称为该声明的作用域。 即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示不同的数据对象。 变量与值的两步映射 6.1.3 活动记录 为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,我们把这样的一个连续存储块称为活动纪录。 6.1.4 局部数据的安排 字节是可编址内存的最小单位。 6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。 6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。 局部数据的地址可以用相对于某个位置的地址来表示。 6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。 局部数据的地址可以用相对于某个位置的地址来表示。 数据对象的存储安排还有一个对齐问题。 6.1.5 程序块 本身含有局部变量声明的语句 可以嵌套 最接近的嵌套作用域规则 并列程序块不会同时活跃 并列程序块的变量可以重叠分配 main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/ main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/ main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/ 6.2 全局存储分配策略 介绍程序运行时所需的各个活动记录在存储空间的分配策略 6.2 全局存储分配策略 介绍程序运行时所需的各个活动记录在存储空间的分配策略 描述过程的目标代码怎样访问绑定到局部名字的存储单元 6.2 全局存储分配

文档评论(0)

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

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

1亿VIP精品文档

相关文档