第六章运行时存储空间的组织和管理.pptx

第六章运行时存储空间的组织和管理.pptx

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 运行时存储空间的 组织和管理 编译程序在完成词法、语法和语义分析后,在生成目标代码之前,需要把程序的静态正文和实现这个程序的运行时的活动联系起来弄清楚将来在代码运行时刻,源代码中的各种变量、常量等用户定义的量是如何存放的,如何去访问它们。 在程序的执行过程中,程序中数据的存取是通过与之对应的存储单元来进行的。在程序语言中,程序使用的存储单元都是由标识符来表示的。它们对应的内存地址都是由编译程序在编译时或由其生成的目标程序运行时进行分配。所以对于编译程序来说存储组织与管理是一个复杂而又十分重要的问题。本章内容: 讨论一个活动记录中的数据安排程序执行过程中,所有活动记录的组织方式 存储器的组织与存储分配的策略非局部名称的访问参数传递 6.1 局部存储分配策略过程的每一次运行称为一次活动(activation)。活动是一个动态的概念,它有有限的生存期。活动的生存期是指从进入活动的第一条指令执行到离开此活动前的最后一条指令执行的这段时间,其中包括调用其它过程时其它活动的生存期。6.1.2 名字的作用域和绑定名字的作用域一个声明起作用的程序部分称为该声明的作用域。即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示不同的数据对象。名字的绑定 运行时为名字X分配存储空间S,这一过程称为绑定(binding)。 换句话说,绑定是名字X与存储空间S的结合。X是一个对象: 既可以是数据对象,如变量,与之结合的是一个存储单元; 也可以是操作对象,如过程,与之结合的是可执行的代码。我们的讨论仅限于X是一个数据对象。静态与动态 名字的声明与名字的绑定均需要有对应的存储空间,而存储空间的对应方式,一个是静态的,一个是动态的。 声明时关心的是声明的作用域,即当一个名字被引用时,在不同的作用域中与该名字的不同声明结合; 绑定时关心的是绑定的生存期,即当一个名字在运行时被实际分配的存储单元,名字与存储单元结合的这段时间被称为绑定的生存期,显然此生存期应该和名字的生存期一致。 静 态 动 态过程的定义 过程的活动 名字的声明 名字的绑定声明的作用域 绑定的生存期符号表 活动记录 变量与值的两步映射 环境改变存储,状态改变值。例5.3 若有变量声明x: real和常量声明const pi=3.14,则赋值句中变量和常量的映射关系: 常量没有左值(存储空间),所以不能被赋值。返 回 值参 数控 制 链访 问 链机 器 状 态局 部 数 据临 时 数 据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 ?/声 明 作 用 域 int a = 0; B0 ? B2 int b = 0; B0 ? B1 int b = 1; B1?

文档评论(0)

文单招、专升本试卷定制 + 关注
官方认证
服务提供商

专注于研究生产单招、专升本试卷,可定制

版权声明书
用户编号:8005017062000015
认证主体莲池区远卓互联网技术工作室
IP属地河北
统一社会信用代码/组织机构代码
92130606MA0G1JGM00

1亿VIP精品文档

相关文档