9 2 1静态存储管理与动态存储管理 - 静态存储管理与动态存储管理_第1页
9 2 1静态存储管理与动态存储管理 - 静态存储管理与动态存储管理_第2页
9 2 1静态存储管理与动态存储管理 - 静态存储管理与动态存储管理_第3页
9 2 1静态存储管理与动态存储管理 - 静态存储管理与动态存储管理_第4页
9 2 1静态存储管理与动态存储管理 - 静态存储管理与动态存储管理_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、1、编译原理,第9章运行时存储空间组织,第2,第9章运行时存储空间组织,目标程序运行时活动运行时存储的分区静态存储管理简单堆栈型存储分配嵌套进程语言的堆栈型实现,第3,第9章运行时存储空间目标程序运行时活动运行时存储的划分静态存储管理简单堆栈型存储分配嵌套进程语言的堆栈型实现,4,编译器组织存储空间应考虑的问题,进程是否允许递归? 控件从进程活动返回时,如何处理本地名称的值呢? 过程可以引用非本地名称吗? 过程调用时传递参数的方法过程是作为参数传递的,还是作为结果返回? 存储空间是在程序控制下动态分配的吗? 我需要显式释放存储空间吗? 5、9.2执行时存储器的划分,一个目标程序执行所需的存储空

2、间,是存储目标代码的空间存储数据项目的空间存储程序执行的控制或连接数据所需的单元(控制堆栈),6、程序执行时的存储器划分,代码、静态数据堆栈9.2.2活动记录假定语言特征允许进程的递归调用,而进程不允许包含变量数组的进程定义嵌套。 例如,c语言采用堆栈型存储分配机构来执行活动记录的情况下,每次进入一个过程时对应的活动记录就积蓄在堆栈顶部,该记录包括连接数据、形式单元、局部变量、局部排列的内部矢量和临时作业单元等。 8对局部变量x的引用可以表示为索引访问: dxSP dx:变量x的活动记录起点的地址,并在编译时确定。 参数、回复地址、形式单元、临时单元、内部向量、局部变量、SP0、1、2、老sp

3、、TOP、各进程的活动记录内容(非嵌套语言)、9、连接数据回复地址动态链路:调用此进程前的最新活动记录地址静态链:静态直接指向外部最新的活动记录地址的指针。 被用于访问非本地数据. 静态链接、动态链接、形式单元、临时单元、内部向量、局部变量、sp0、1、2、返回地址、TOP、各进程的活动记录内容(嵌套语言)、10、形式单元:存储相应实际参数的地址或值。 局部数据区:局部变量、内情向量、临时工作单元(存储评价公式的结果等)。 静态链接、动态链接、形式单元、临时单元、内部向量、局部变量、sp0、1、2、返回地址、TOP、每个进程的活动记录内容、11、如果在静态分配策略(FORTRAN )编译时能够

4、确定数据空间的大小,则静态分配方法: 如果在编译动态分配策略(PASCAL )时不知道数据空间在运行时的大小,则必须采用动态分配方法。 可以通过递归进程和动态请求释放内存。堆栈动态分配堆栈动态分配,9.2.3存储分配策略,第12章,第9章运行时存储空间组织,目标程序运行时分割活动运行时存储静态存储管理简单堆栈存储分配嵌套进程语言的堆栈程序主整合器x,y通用/c/a b最终辅助x,z通用/c/a1,B1结束,9.3静态存储管理,14,9.3静态存储管理, FORTRAN程序的整个特征程序所需的数据空间的总量是在编译时完全确定各数据名的地址,静态地分配各FORTRAN程序段并可以独立地进行编译的执

5、行前,加载程序将各段可以连续执行的整体作为数据吨定义了本地数据区域,每个公共块定义了公共数据区域,其中存储着未出现在公共中的本地名称值的段中的每个名称值。 15、每个数据区有一个编号,每个数据名称都有其所属的数据区编号和该区域中每个相对位置的本地数据区的内容和存储顺序、寄存器保护区、返回地址、格式单元、暂定变量、数组、简单变量、0 16、考虑子程序段:子程序交换(a,b ) t=a=b=返回结束,寄存器保护区,返回地址,a,t,b,0,1,a,a 2,a 4,AlanJ.Perlis, tomanumargromustombethemachinesandtheprogram .17, 第九章运

6、行时存储空间组织目标程序运行时分割活动运行时存储器静态存储管理简单堆栈存储分配嵌套进程语言堆栈的实现,分配18,9.4简单堆栈存储,语言特征是进程例如,在利用堆栈存储分配机构的活动记录来执行c语言的情况下,每进入一个处理,就将一个活动记录积蓄在堆栈顶部,该记录中包含连接数据、形式单元、局部变量、局部排列的内部矢量和临时工作单元等,19、标记Main中的数据说明void Q() Q中的数据说明void Q() Q中的数据说明、主进程q进程r、q的活动记录主程序的活动记录、TOP、r的活动记录、SP、全局数据区、TOP、SP、TOP、SP、20, 各进程的活动记录内容如图:所示,对任意的局部变量x

7、的引用可以表现为对活动记录的开始点的索引访问: dxSP dx:变量x的地址,可以在编译时确定。参数、返回地址、形式单元、临时单元、内部矢量、局部变量、SP0、1、2、老sp、TOP、9.4.1 C的活动记录、21、进程调用语句P(T1、T2、Tn )为四元式序列par t1 pa 要翻译成n的9.4.2 C进程调用、进程条目、数组空间分配和进程返回、22,1 ) parti (I=1,2, n )能够直接翻译成下一个命令: (i 3)TOP:=Ti (传递值) (i 3)TOP:=addr(Ti ) (地址传递)2) call P的n是: 1TOP:=SP (保护当前sp )3top 3330 然后,在为par和call生成的目标代码为:形式单元、老的SP、参数23、3移至过程p之后,首先,以下命令SP:=TOP 1(定义新sp )-1sp :=返回地址、呼叫手续的活动记录、返回地址、TOP、SP、TOP、SP、24、4 )手续返回时,下一个命令: TOP:

温馨提示

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

评论

0/150

提交评论