- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理(十)
第十章 目标程序运行时的组织 10.1概述-代码生成解决语义gap 高级语言支持的概念 Type value expression Variable procedure Function parameters 目标机支持的概念 bits bytes words Registers Stack address Routine(sub routine) 概述 概述 概述 10.2 数据表示各种数据对象的存储分配 10.3目标程序运行时的存储组织 存储分配策略: 静态存储分配 动态存储分配——栈式 和 堆式 注:可以混合使用 简单的栈式分配方案 嵌套过程的栈式分配方案 分程序结构的存储分配方案 堆式存储 静态存储分配 静态存储分配举例 静态存储分配举例 动态存储分配 动态存储分配举例 目标代码的解释执行(运行栈S) M调用过程P 10.3.1简单的栈式分配方案 程序结构特点:过程定义不嵌套,过程可递归调用,含可变数组; 例: main 全局变量的说明 proc R …… end R; proc Q …… end Q; 主程序执行语句 end main 10.3.2嵌套过程语言的栈式分配方案 主要特点: (语言)一个过程可以引用包围它的任一外层过程所定义的标识符(如变量,数组或过程等)。 (实现)一个过程执行时可以引用它的任一外层过程的必威体育精装版活动记录中的某些数据。 例子1 例子1(简略图) 例子1(问题) 关键技术:解决对非局部量的引用(存取) 用静态链解决对非局部量的引用(存取) 用Display表解决对非局部量的引用(存取) 例子2 例子2:用Display表解决对非局部量的引用 例子3:用Display表解决对非局部量的引用 例子4 DISPLAY表的维护和建立 过程的活动记录(AR) 习题:画出栈式存储分配图 * * 10.1 概述 10.2 数据表示 10.3 目标程序运行时的栈式存储组织 10.4 参数传递 10.5 堆式存储概述 在代码生成前,编译程序必须进行目标程序运行环境的配置和数据空间的分配。 一般来讲,假如从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码和目标代码运行时的数据空间。 数据空间应包括:用户定义的各种类型的数据对象(变量和常数)所需的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需的连接单元,以及组织输入/输出所需的缓冲区。 目标代码所占用空间的大小在编译时能确定。有些数据对象所占用的空间也能在编译时确定,其地址可以编译进目标代码中。而有些数据对象具有可变体积和待分配性质,无法在编译时确定存储空间的位置。 目标代码区 静态数据区 Stack heap 运行时的存储区常常划分成:目标区、静态数据区、栈区和堆区,如下图就是一种典型划分,代码(code)区用以存放目标代码,这是固定长度的,即编译时能确定的;静态数据区(static data)用以存放编译时能确定所占用空间的数据;堆栈区(stack and heap)用于可变数据以及管理过程活动的控制信息。 代码生成前如何安排目标机资源 运行时组织的几个问题 数据表示-如何在目标机中表示每个源语言类型的值 表达式求值-如何组织表达式的计算 存储分配-如何组织不同作用域变量的存储 过程实现-如何以例程实现过程,函数,参数传递 1. 允许的数据类型的多少 2 .语言中允许的数据项是 静态确定 动态确定 3 .程序结构 (决定名字的作用域的规则和结构) A . 段结构(Fortran) B . 过程定义不嵌套,只允许过程递归调用 C . 分程序结构 分程序嵌套 过程定义嵌套 4.存储类别的多少 Global Static Local dynamic 决定运行管理复杂程度的因素—源语言本身 静态:如果一个名字的性质通过说明语句或隐或显规则而定义,则称这种性质是“静态”确定的。 动态:如果名字的性质只有在程序运行时才能知道,则称这种性质为“动态”确定的。 数据对象的属性 name 名字/名称 type 类型 location 内存地址 value 值 component 成分 简单变量: char: 1 byte integers: 2 or 4 bytes floats: 4 to 16 bytes booleans: 1 bit (but
您可能关注的文档
最近下载
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版).pdf VIP
- 华为ICT大赛云赛道认证考试复习题库(含答案).pdf VIP
- 北师大版六年级数学上册期中期末试题及答案.pdf VIP
- 2021-2022年中国ESG行业研究报告.pptx
- 第一单元峥嵘岁月 第1课情感表达 教学设计 人教版初中美术七年级上册.pdf
- 2024年秋新人教版地理七年级上册课件 4.1 多变的天气.pptx
- 人教版九年级全册英语Unit 14大单元整体教学设计.docx
- 大单元教学中的项目化学习——以五年级上册民间故事单元为例.docx
- 全员专项学习培训试题题库单选、多选试题附答案.doc VIP
- 22G101-3 混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础).docx
文档评论(0)