- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 目标程序运行时的组织 10.1 概述10.2 数据表示10.3 目标程序运行时的栈式存储组织10.4 参数传递10.5 堆式存储组织的讨论概述-代码生成解决语义gap目标机支持的概念 bits bytes wordsRegistersStack addressRoutine(sub routine)高级语言支持的概念Type value expressionVariable procedureFunction parameters概述代码生成前如何安排目标机资源运行时组织的几个问题数据表示-如何在目标机中表示每个源语言类型的值表达式求值-如何组织表达式的计算存储分配-如何组织不同作用域变量的存储过程实现-如何以例程实现过程,函数,参数传递任务:编译程序对目标程序运行时的组织(设计运行环境和分配存储) 如 通常存储区布局可为: 目标代码区 静态数据区 Stack heap 运行环境和存储分配设计分析逻辑阶段:在目标代码生成前,作准备实质: 关联(Binding)将源程序的文本? 程序运行动作的实现 源文件中的名字N? 运行时的存储S在语义学中,使用术语environment函数表示env: N→S (N到S的映射)决定运行管理复杂程度的因素——源语言本身1. 允许的数据类型的多少2 .语言中允许的数据项是静态确定 动态确定3 .程序结构决定名字的作用域的规则和结构A. 段结构B. 过程定义不嵌套,只允许过程递归调用C. 分程序结构分程序嵌套过程定义嵌套GlobalStaticLocaldynamic4存储类别的多少 术语静态:如果一个名字的性质通过说明语句或隐或显规则而定义,则称这种性质是“静态”确定的。动态:如果名字的性质只有在程序运行时才能知道,则称这种性质为“动态”确定的。例 procedure A(m,n:integer); begin real z; array B[m:n]; begin · · · end; end;数据表示各种数据对象的存储分配数据对象的属性 name 名字,名称 type类型 location 内存地址 value值 component 成分 数据表示(固定长度,直接或间接表示)简单变量: char: 1 byteintegers: 2 or 4 bytesfloats: 4 to 16 bytesbooleans: 1 bit (but usually 1 byte)指针:unsigned integers一维数组:一块连续的存储区多维数组:一块连续的存储区,按行存放结构(记录):把所有域(field)存放在一块连续的存储区对象:类的实例变量象结构的域一样存放在一块连续的存储区, 但方法(成员函数)不存在该对象里指令:可变 (动态)数组:若一个数组所需的存储空间的大小在编译时就已知道,则称它为确定数组,否则称为可变(动态)数组。 数组内情向量:编译将数组的有关信息记录在一些单元中,称为数组的“内情向量”。A[l :u ,l :u , … ,l: u]1122n n l u1 1 l u2 2 : : type a(首地址) n C目标程序运行时的存储组织存储分配策略:简单的栈式分配方案 嵌套过程的栈式分配方案 分程序结构的存储分配方案静态存储分配动态存储分配——栈式堆式术语-过程活动记录:AR为说明方便,假定程序是由过程组成,过程区分为源文本,运行时称作过程的激活。一个过程的一次执行所需要的信息使用一个连续的存储区来 frame管理,这个区(块)叫做一个活动记录或(帧)一般这个段要记录: l临时值,如计算表达式时的中间工作单元。 l局部变量(数据) l保存运行过程前的状态(返回地址,寄存器值……) l存取链(可选)对于非局部量的引用。 l控制链(可选)指向调用者的活动记录,释放栈。 l实参(形式单元) l返回值(对函数)(有时可使用寄存器存放返回值) 简单的栈式分配方案程序结构特点:过程定义不嵌套,过程可递归调用,含可变数组; 例: main 全局变量的说明proc R……end R;proc Q…… end Q;主程序执行语句 end main 嵌套过程语言的栈式分配方案主要特点:(语言)一个过程可以引用包围它的任一外层过程所定义的标识符(如变量,数组或过程等)。(实现)一个过程可以引用它的任一外层过程的最新活动记录中的某些数据。 关键技术:解决对非局部量的引用(存取)。设法跟踪每个外层过程的最新活动记录AR的位置。跟踪办法: 1. 用静态链(如PL/0的SL)。 2. 用DI
您可能关注的文档
最近下载
- 禁止、限制、非限制三类医疗技术的目录清单.docx VIP
- IATF16949-2016质量管理体系各过程内部审核检查表IATF16949内审检查表.docx VIP
- 名著《红星照耀中国》知识梳理60问.doc VIP
- 《企业内部控制》教学课件最终版 1章 基本规范 1.9第一章企业内部控制的方法.ppt VIP
- 药学职业生涯规划4篇 .pdf VIP
- 南京工程学院电路原理A期末考试试卷附答案.pdf VIP
- 名著《红星照耀中国》知识梳理60问.docx VIP
- 2025年综合评标专家-浙江-浙江综合评标专家(工程勘察、工程设计类)历年参考题典型考点含答案解析(.docx VIP
- (服装产业分析)2021年我国纺织品服装出口趋势分析.docx VIP
- G14 内部审核检查表(IATF16949:2016).xls VIP
原创力文档


文档评论(0)