编译原理运行时存储空间的组织和管理学习培训模板课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理运行时存储空间的组织和管理学习培训模板课件.ppt》由用户(林田)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 运行 存储空间 组织 管理 学习 培训 模板 课件
- 资源描述:
-
1、第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 过程的过程的活动活动过程的一次执行称为过程的一次活动过程的一次执行称为过程的一次活动第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 过程的过程的活动活动过程的一次执行称为过程的一次活动过程的一次执行称为过程的一次活动活动记录活动记录过程的活动需要可执行代码和存放所需信息过程的活动需要可执行代码和存放所需信息的存储空间的存储空间,后者称为活动记录后者称为活动记录第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 过程的过程的活动活动过程的一次执行称为过程的一次活动过程的一次执行称为过程的一次活
2、动活动记录活动记录过程的活动需要可执行代码和存放所需信息过程的活动需要可执行代码和存放所需信息的存储空间的存储空间,后者称为活动记录后者称为活动记录本章内容本章内容 讨论一个活动记录中的数据安排讨论一个活动记录中的数据安排第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 过程的过程的活动活动过程的一次执行称为过程的一次活动过程的一次执行称为过程的一次活动活动记录活动记录过程的活动需要可执行代码和存放所需信息过程的活动需要可执行代码和存放所需信息的存储空间的存储空间,后者称为活动记录后者称为活动记录本章内容本章内容 讨论一个活动记录中的数据安排讨论一个活动记录中的数据安排 程序
3、执行过程中,所有活动记录的组织方式程序执行过程中,所有活动记录的组织方式 第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过
4、程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量 过程调用的参数传递方式过程调用的参数传递方式第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略
5、的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量 过程调用的参数传递方式过程调用的参数传递方式 过程能否作为参数被传递过程能否作为参数被传递第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量 过程调用的参数传递方式过程调用的参数
6、传递方式 过程能否作为参数被传递过程能否作为参数被传递 过程能否作为结果值传递过程能否作为结果值传递第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量 过程调用的参数传递方式过程调用的参数传递方式 过程能否作为参数被传递过程能否作为参数被传递 过程能否作为结果值传递过程能否作为结果值传递 存储块能否在程序控制下动态地分配存储块能否在程序控制下动态地分配第六章
7、第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征 过程能否递归过程能否递归 当控制从过程的活动返回时,局部变量的值当控制从过程的活动返回时,局部变量的值是否要保留是否要保留 过程能否访问非局部变量过程能否访问非局部变量 过程调用的参数传递方式过程调用的参数传递方式 过程能否作为参数被传递过程能否作为参数被传递 过程能否作为结果值传递过程能否作为结果值传递 存储块能否在程序控制下动态地分配存储块能否在程序控制下动态地分配 存储块是否必须显式地释放存储块是否必须显式地释放6.1 局部存储分配局部存储分配6.1.1 过程过程过程定义、
8、过程定义、过程过程调用、形式参数、实在参数、调用、形式参数、实在参数、活动的活动的生存期生存期6.1 局部存储分配局部存储分配6.1.2 名字的作用域和绑定名字的作用域和绑定名字的作用域名字的作用域 一个声明起作用的程序部分称为该声明的一个声明起作用的程序部分称为该声明的作作用域用域 即使一个名字在程序中只声明一次,该名字即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示不同的数据对象在程序运行时也可能表示不同的数据对象6.1 局部存储分配局部存储分配 从名字到值的两步映射从名字到值的两步映射名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配 从名字到值的两
9、步映射从名字到值的两步映射 环境把名字映射到左值,而状态把左值映射环境把名字映射到左值,而状态把左值映射到右值到右值名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配 从名字到值的两步映射从名字到值的两步映射 环境把名字映射到左值,而状态把左值映射环境把名字映射到左值,而状态把左值映射到右值到右值 赋值改变状态,但不改变环境赋值改变状态,但不改变环境 名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配 从名字到值的两步映射从名字到值的两步映射 环境把名字映射到左值,而状态把左值映射环境把名字映射到左值,而状态把左值映射到右值到右值 赋值改变状
10、态,但不改变环境赋值改变状态,但不改变环境 过程调用改变环境过程调用改变环境名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配 从名字到值的两步映射从名字到值的两步映射 环境把名字映射到左值,而状态把左值映射环境把名字映射到左值,而状态把左值映射到右值到右值 赋值改变状态,但不改变环境赋值改变状态,但不改变环境 过程调用改变环境过程调用改变环境 如果环境将名字如果环境将名字x映射到存储单元映射到存储单元s,我们就我们就说说x被被绑定绑定到到s名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配静态概念和动态概念的对应静态概念和动态概念的对应静静
11、 态态 概概 念念 动动 态态 对对 应应 过程的定义过程的定义 过程的活动过程的活动 6.1 局部存储分配局部存储分配静态概念和动态概念的对应静态概念和动态概念的对应静静 态态 概概 念念 动动 态态 对对 应应 过程的定义过程的定义 过程的活动过程的活动 名字的声明名字的声明 名字的绑定名字的绑定 6.1 局部存储分配局部存储分配静态概念和动态概念的对应静态概念和动态概念的对应静静 态态 概概 念念 动动 态态 对对 应应 过程的定义过程的定义 过程的活动过程的活动 名字的声明名字的声明 名字的绑定名字的绑定 声明的作用域声明的作用域 绑定的生存期绑定的生存期 6.1 局部存储分配局部存储
12、分配6.1.3 活动记录活动记录一般的活动记录的布局一般的活动记录的布局返返 回回 值值临临 时时 数数 据据参参 数数控控 制制 链链访访 问问 链链机机 器器 状状 态态局局 部部 数数 据据6.1 局部存储分配局部存储分配6.1.4 局部数据的安排局部数据的安排 字节是可编址内存的最小单位字节是可编址内存的最小单位6.1 局部存储分配局部存储分配6.1.4 局部数据的安排局部数据的安排 字节是可编址内存的最小单位字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态变量所需的存储空间可以根据其类型而静态确定确定6.1 局部存储分配局部存储分配6.1.4 局部数据的安排局部数据
13、的安排 字节是可编址内存的最小单位字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态变量所需的存储空间可以根据其类型而静态确定确定 一个过程所声明的局部变量,按这些变量声一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配明时出现的次序,在局部数据域中依次分配空间空间6.1 局部存储分配局部存储分配6.1.4 局部数据的安排局部数据的安排 字节是可编址内存的最小单位字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态变量所需的存储空间可以根据其类型而静态确定确定 一个过程所声明的局部变量,按这些变量声一个过程所声明的局部变量,按这些变量声明
14、时出现的次序,在局部数据域中依次分配明时出现的次序,在局部数据域中依次分配空间空间 局部数据的地址可以用相对于某个位置的地局部数据的地址可以用相对于某个位置的地址来表示址来表示6.1 局部存储分配局部存储分配6.1.4 局部数据的安排局部数据的安排 字节是可编址内存的最小单位字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态变量所需的存储空间可以根据其类型而静态确定确定 一个过程所声明的局部变量,按这些变量声一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配明时出现的次序,在局部数据域中依次分配空间空间 局部数据的地址可以用相对于某个位置的地局部数据的
15、地址可以用相对于某个位置的地址来表示址来表示 数据对象的存储安排还有一个对齐问题数据对象的存储安排还有一个对齐问题6.1 局部存储分配局部存储分配在在SPARC/Solaris工作站上下面两个结构的工作站上下面两个结构的size分别是分别是24和和16,为什么不一样?,为什么不一样?typedef struct _atypedef struct _bchar c1;char c1;long i;char c2;char c2;long i;double f;double f;a;b;6.1 局部存储分配局部存储分配在在SPARC/Solaris工作站上下面两个结构的工作站上下面两个结构的siz
16、e分别是分别是24和和16,为什么不一样?,为什么不一样?typedef struct _atypedef struct _bchar c1;0 char c1;0long i;4 char c2;1char c2;8 long i;4double f;16 double f;8a;b;6.1 局部存储分配局部存储分配在在X86/Linux机器的结果和机器的结果和SPARC/Solaris工作工作站不一样,是站不一样,是20和和16。typedef struct _atypedef struct _bchar c1;0 char c1;0long i;4 char c2;1char c2;8
17、long i;4double f;12 double f;8a;b;6.1 局部存储分配局部存储分配6.1.5 程序块程序块 本身含有局部变量声明的语句本身含有局部变量声明的语句 可以嵌套可以嵌套 最接近的嵌套最接近的嵌套作用域规则作用域规则 并列程序块不会同时活跃并列程序块不会同时活跃 并列程序块的变量可以重叠分配并列程序块的变量可以重叠分配6.1 局部存储分配局部存储分配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=
18、3;/end of B3 /end of B1 /end of B0 /6.1 局部存储分配局部存储分配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 B3 int a=2;B2int b=3;B3 6.1 局部存储分配局部存储分配main()/
19、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 B3 int a=2;B2int b=3;B3 a0b0b1a2,b3重叠分配存储单元重叠分配存储单元 6.2 全局栈式存储分配全局栈式存储分配 介绍程序运行时所需的各个活动记录在存储介绍程序运行时所需的各个活动
20、记录在存储空间的分配策略空间的分配策略6.2 全局栈式存储分配全局栈式存储分配 介绍程序运行时所需的各个活动记录在存储介绍程序运行时所需的各个活动记录在存储空间的分配策略空间的分配策略 描述过程的目标代码怎样访问绑定到局部名描述过程的目标代码怎样访问绑定到局部名字的存储单元字的存储单元6.2 全局栈式存储分配全局栈式存储分配 介绍程序运行时所需的各个活动记录在存储介绍程序运行时所需的各个活动记录在存储空间的分配策略空间的分配策略 描述过程的目标代码怎样访问绑定到局部名描述过程的目标代码怎样访问绑定到局部名字的存储单元字的存储单元 介绍三种分配策略介绍三种分配策略 静态分配策略静态分配策略6.2
21、 全局栈式存储分配全局栈式存储分配 介绍程序运行时所需的各个活动记录在存储介绍程序运行时所需的各个活动记录在存储空间的分配策略空间的分配策略 描述过程的目标代码怎样访问绑定到局部名描述过程的目标代码怎样访问绑定到局部名字的存储单元字的存储单元 介绍三种分配策略介绍三种分配策略 静态分配策略静态分配策略 栈式分配策略栈式分配策略6.2 全局栈式存储分配全局栈式存储分配 介绍程序运行时所需的各个活动记录在存储介绍程序运行时所需的各个活动记录在存储空间的分配策略空间的分配策略 描述过程的目标代码怎样访问绑定到局部名描述过程的目标代码怎样访问绑定到局部名字的存储单元字的存储单元 介绍三种分配策略介绍三
22、种分配策略 静态分配策略静态分配策略 栈式分配策略栈式分配策略 堆式分配策略堆式分配策略6.2 全局栈式存储分配全局栈式存储分配6.2.1 运行时内存的划分运行时内存的划分代代 码码静静 态态 数数 据据堆堆栈栈6.2 全局栈式存储分配全局栈式存储分配静态分配静态分配 名字在程序被编译时绑定到存储单元,不需名字在程序被编译时绑定到存储单元,不需要运行时的任何支持要运行时的任何支持6.2 全局栈式存储分配全局栈式存储分配静态分配静态分配 名字在程序被编译时绑定到存储单元,不需名字在程序被编译时绑定到存储单元,不需要运行时的任何支持要运行时的任何支持 绑定的生存期是程序的整个运行期间绑定的生存期是
23、程序的整个运行期间6.2 全局栈式存储分配全局栈式存储分配静态分配给语言带来限制静态分配给语言带来限制 递归过程不被允许递归过程不被允许6.2 全局栈式存储分配全局栈式存储分配静态分配给语言带来限制静态分配给语言带来限制 递归过程不被允许递归过程不被允许 数据对象的长度和它在内存中位置的限制,数据对象的长度和它在内存中位置的限制,必须是在编译时可以知道的必须是在编译时可以知道的6.2 全局栈式存储分配全局栈式存储分配静态分配给语言带来限制静态分配给语言带来限制 递归过程不被允许递归过程不被允许 数据对象的长度和它在内存中位置的限制,数据对象的长度和它在内存中位置的限制,必须是在编译时可以知道的
24、必须是在编译时可以知道的 数据结构不能动态建立数据结构不能动态建立6.2 全局栈式存储分配全局栈式存储分配 C语言程序的外部变量和程序中出现的常量语言程序的外部变量和程序中出现的常量都可以静态分配都可以静态分配 声明在函数外面声明在函数外面外部变量外部变量 静态分配静态分配静态外部变量静态外部变量 静态分配静态分配 声明在函数里面声明在函数里面静态局部变量静态局部变量 也是静态分配也是静态分配自动变量自动变量 不能静态分配不能静态分配6.2 全局栈式存储分配全局栈式存储分配6.2.2 活动树和运行栈活动树和运行栈活动树活动树:用树来描绘控制进入和离开活动的方式用树来描绘控制进入和离开活动的方式
25、mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)q(2,1)q(3,3)p(2,3)q(5,9)q(5,5)p(5,9)q(7,9)q(7,7)q(9,9)p(7,9)6.2 全局栈式存储分配全局栈式存储分配活动树的特点活动树的特点 每个结点代表某过程的一个活动每个结点代表某过程的一个活动 根结点代表主程序的活动根结点代表主程序的活动 结点结点a是结点是结点b的父结点,当且仅当控制流从的父结点,当且仅当控制流从a的活动进入的活动进入b的活动的活动 结点结点a处于结点处于结点b的左边,当且仅当的左边,当且仅当a的生存期的生存期先于先于b的生存期的生存期6.2 全局栈式
展开阅读全文