1 / 34
文档名称:

目标程序运行时的存储组织.ppt

格式:ppt   大小:286KB   页数:34页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

目标程序运行时的存储组织.ppt

上传人:AIOPIO 2021/4/10 文件大小:286 KB

下载得到文件列表

目标程序运行时的存储组织.ppt

相关文档

文档介绍

文档介绍:第10章 目标程序运行时的
存储组织
目标程序运行时的存储组织
1

为了使目标程序运行,编译程序从操作系统得到一块内存存储区,存储区容纳:
1. 生成的目标代码空间;
2. 目标代码运行需要的数据空间,包括用户定义的变量和常量,临时工作单元,过程调用所需的联系单元,输入输出缓冲区;
3. 用于保存过程活动踪迹的一个控制栈。
目标程序运行时的存储组织
2
目标代码
静态数据

活动记录

1. 编译后知道目标代码的大小。如 Pascal, C ,Fortran;
2. 静态数据区存放编译时就能确定所占用空间大小的数据;
3. 栈堆区:用于存放可变数据以及管理过程活动记录的控制信息,如Pascal,C语言。

数据空间
目标程序运行时的存储组织
3

对于pascal语言来说,运行过程中,当调用一个过程时,在栈顶构筑它的活动记录;
一个活动所需要的信息的每个数据项有相同的生存期,因此,组织成一个活动记录是很自然的。
当这个过程的活动执行完后,把它从栈顶弹出。
把过程的一个活动所需要的信息组织成一块连续的存储单元,称为活动记录。
目标程序运行时的存储组织
4
返回值
实在参数
控制链
访问链
保存机器状态
局部变量
临时变量
临时变量:编译产生。
保存机器状态:调用过程的活动在调用点的机器状态,包括计数器,各种寄存器的值。
局部数据:过程中定义的 局部量。
访问链:指向本活动要访问的非局部数据所在的活动记录.
控制链:指向主调过程的活动记录的首地址。
形式单元
内情向量
连接数据
局部数据
sp
top
Pascal的活动记录
目标程序运行时的存储组织
5
函数environment把一个名字映射为一个l-value(左-值),

引进两个函数,environment和state。
environment把名字映射到一个存储单元上;
state把存储单元映射到那里所存放的值上。
而函数state把一个l-value(左-值)映射为一个r-value(右-值)。
如下图所示。
名字与存储单元的绑定是指把源程序中的数据名字映射到目标机存储单元的过程。
目标程序运行时的存储组织
6
名字
存储单元

存储分配
程序运行
environment
state
l-value
r-value
图:从名字到值的两个阶段映射
目标程序运行时的存储组织
7
编译结束,知道每个过程的活动记录的长度,将其填写到相应的过程符号表中;
运行时,调用哪个过程,就在运行栈顶,推进那个过程的活动记录。
一个名字所需的存贮空间的数量是由它的类型确定的;
多字节对象存放于连续的字节中,以第一个字节的地址作为该对象的地址;
目标程序运行时的存储组织
8
数据空间的三种不同管理方法
3 .1 静态存储分配:FORTRAN
3 .2 栈式存储分配:PASCAL, C
3 .3 堆式存储分配: PASCAL, C
采用哪种分配策略是由源语言的语义决定的。
目标程序运行时的存储组织
9
.1 静态存储分配
如Fortran语言,各子程序段中的局部变量彼此独立,不会在不同子程序间引用、赋值,每个变量的存储空间大小都是常量,整个程序所需的数据空间的总量在编译时完全确定,从而每个变量的内存空间可以静态分配。
在编译时刻为每个数据项目确定出在运行时刻的存储空间中的位置,且这种绑定在运行时刻不再发生变化。
目标程序运行时的存储组织
10