编译原理 第10章 运行时的存储组织与分配课件_第1页
编译原理 第10章 运行时的存储组织与分配课件_第2页
编译原理 第10章 运行时的存储组织与分配课件_第3页
编译原理 第10章 运行时的存储组织与分配课件_第4页
编译原理 第10章 运行时的存储组织与分配课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章运行时的存储组织与分配要求明确静态存储分配和动态存储分配的含义明确活动记录的含义及组成了解静态、动态存储分配的策略教学目标第10章运行时的存储组织与分配要求明确静态存储分配和动态存1S.PO.P语义分析、生成中间代码生成目标程序代码优化语法分析程序词法分析程序错误处理符号表管理编译程序在编译阶段要为源程序中出现的变量、常量等组织好在运行阶段的存储空间将这种组织形式通过生成的目标代码体现出来为运行阶段实现存储奠定基础S.PO.P语义分析、生成中间代码生成目标程序代码优化语法分210.1存储组织概述10.2静态存储分配10.3栈式动态存储分配10.4堆式动态存储分配教学内容10.1存储组织概述教学内容310.1存储组织概述运行时存储空间的划分代码空间数据空间目标代码空间静态数据空间栈自由空间堆10.1存储组织概述运行时存储空间的划分代码空间数据空间目4过程的活动和活动记录一个过程的活动:该过程的一次执行。即每次执行一个过程体,就产生该过程的一个活动。活动记录:为了管理过程在一次执行中所需要的信息,使用一段连续的存储区过程的活动和活动记录一个过程的活动:该过程的一次执行。活动5活动记录的结构活动记录的结构610.2静态存储分配在编译阶段由编译程序实现对存储空间的管理,为源程序中的变量分配存储单元。条件在编译时能够确定变量在运行时的数据空间大小运行时不改变10.2静态存储分配在编译阶段由编译程序实现7FORTRAN程序的静态分配FORTRAN程序的静态分配8动态存储分配在目标程序运行阶段由目标程序实现对存储空间的组织与管理,为源程序中的变量分配存储单元特点在目标程序运行时进行分配编译时为运行阶段设计好存储组织形式,即为每个数据项安排好它在数据区中的相对位置动态存储分配在目标程序运行阶段由目标程序实现对存910.3栈式动态存储分配变量生存期具有嵌套特性,即后进先出的特性(如递归)进入时:在栈顶为其分配一个数据区退出时:撤消过程数据区10.3栈式动态存储分配变量生存期具有嵌套特性,即后进先10练习下面程序的运行结果是什么?如果把第6行的(i+1)*fact()改成fact()*(i+1)的话,则程序的运行结果是有什么变化?试分析为什么会有这两种不同的结果。intfact(){staticinti=5;if(i==0)return1;else{i--;return((i+1)*fact());//第6行}}main(){printf("factorof5!=%d\n",fact());}练习下面程序的运行结果是什么?如果把第6行的(i+1)*fa1110.4堆式动态存储分配变量生存期具有随机交叉特性,即非后进先出的特性(如程序运行时动态申请存储空间)给运行的程序划分一个大的存储区(称为堆)每当需要时可从堆中分得一块用完之后再退还给堆10.4堆式动态存储分配变量生存期具有随机交叉特性,即非12小结重点掌握:静态存储分配(Fortran)和动态存储分配(C、Pascal)的含义活动记录的含义及组成静态、动态存储分配的策略小结重点掌握:13第10章运行时的存储组织与分配要求明确静态存储分配和动态存储分配的含义明确活动记录的含义及组成了解静态、动态存储分配的策略教学目标第10章运行时的存储组织与分配要求明确静态存储分配和动态存14S.PO.P语义分析、生成中间代码生成目标程序代码优化语法分析程序词法分析程序错误处理符号表管理编译程序在编译阶段要为源程序中出现的变量、常量等组织好在运行阶段的存储空间将这种组织形式通过生成的目标代码体现出来为运行阶段实现存储奠定基础S.PO.P语义分析、生成中间代码生成目标程序代码优化语法分1510.1存储组织概述10.2静态存储分配10.3栈式动态存储分配10.4堆式动态存储分配教学内容10.1存储组织概述教学内容1610.1存储组织概述运行时存储空间的划分代码空间数据空间目标代码空间静态数据空间栈自由空间堆10.1存储组织概述运行时存储空间的划分代码空间数据空间目17过程的活动和活动记录一个过程的活动:该过程的一次执行。即每次执行一个过程体,就产生该过程的一个活动。活动记录:为了管理过程在一次执行中所需要的信息,使用一段连续的存储区过程的活动和活动记录一个过程的活动:该过程的一次执行。活动18活动记录的结构活动记录的结构1910.2静态存储分配在编译阶段由编译程序实现对存储空间的管理,为源程序中的变量分配存储单元。条件在编译时能够确定变量在运行时的数据空间大小运行时不改变10.2静态存储分配在编译阶段由编译程序实现20FORTRAN程序的静态分配FORTRAN程序的静态分配21动态存储分配在目标程序运行阶段由目标程序实现对存储空间的组织与管理,为源程序中的变量分配存储单元特点在目标程序运行时进行分配编译时为运行阶段设计好存储组织形式,即为每个数据项安排好它在数据区中的相对位置动态存储分配在目标程序运行阶段由目标程序实现对存2210.3栈式动态存储分配变量生存期具有嵌套特性,即后进先出的特性(如递归)进入时:在栈顶为其分配一个数据区退出时:撤消过程数据区10.3栈式动态存储分配变量生存期具有嵌套特性,即后进先23练习下面程序的运行结果是什么?如果把第6行的(i+1)*fact()改成fact()*(i+1)的话,则程序的运行结果是有什么变化?试分析为什么会有这两种不同的结果。intfact(){staticinti=5;if(i==0)return1;else{i--;return((i+1)*fact());//第6行}}main(){printf("factorof5!=%d\n",fact());}练习下面程序的运行结果是什么?如果把第6行的(i+1)*fa2410.4堆式动态存储分配变量生存期具有随机交叉特性,即非后进先出的特性(如程序运行时动态申请存储空间)给运行的程序划分一个大的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论