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

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

ID:57022031

大小:105.00 KB

页数:32页

时间:2020-07-26

目标程序运行时的存储组织课件.ppt_第1页
目标程序运行时的存储组织课件.ppt_第2页
目标程序运行时的存储组织课件.ppt_第3页
目标程序运行时的存储组织课件.ppt_第4页
目标程序运行时的存储组织课件.ppt_第5页
资源描述:

《目标程序运行时的存储组织课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章目标程序运行时的存储组织10.1临时变量的存储分配存储分配的原因:四元式产生大量临时变量(每个运算产生一个),如不采取措施就会浪费大量存储单元。例:c[i]的四元式1.(-,i,1,T1)2.(*,T1,5,T2)3.([],c,T2,T3)四元式QT[i]定义变量Y,则称i为Y的定义点;如果四元式QT[j]使用变量Z的值,则称j为Z的使用点。临时变量的存储分配可在中间代码一级进行,也可在目标代码一级进行。现在的目标是让更多的临时变量共享内存单元。采用动态分配法,不直接给变量分配单元,只是确定抽象地址

2、。定义点和使用点全部落在一个基本块内的临时变量称之为良型临时变量。只被定义一次,且只被定义一次。定义点与使用点在一个基本块内。良性临时变量的特点:基本块1基本块2定义点使用点设i为临时变量T的定义点,j为最后一个使用点,则称区间[i,j]为T的活动区。设[i,j]和[k,l]是两个活动区,如果j<=k或l<=i,则称两个活动区不相交。基本块T1的活动区ijklT2的活动区T1的活动区ikjlT2的活动区例子:设有语句Y:=(A*B+C)*B-D,则四元式为:1.(*,A,B,T1)A*B2.(+,T1,C,T

3、2)A*B+C3.(*,T2,B,T3)(A*B+C)*B4.(-,T3,D,T4)(A*B+C)*B-D5.(=:,T4,—,X)各临时变量的定义点分别为:T1—1,T2—2,T3—3,T4—4各临时变量的最后使用点分别为:T1—2,T2—3,T3—4,T4—5各临时变量的活动区分别为:T1—[1,2],T2—[2,3],T3—[3,4],T4—[4,5]结论:每个临时变量的活动区均不相交。T1,T2,T3和T4将占用同一存储单元,从而实现节省存储的目标。尽管在四元式中出现了很多临时变量,但实际占用存储单元

4、的还是极少数。10.2静态链、动态链1.以过程为单位的动态存储分配所谓以过程为单位的动态存储分配就是以过程调用为单位来设置数据区。即设计一个数据空间栈,当程序运行时,每调用某过程一次,就根据该过程的说明为该过程在数据区栈的顶部分配一定数量的数据单元,称为该过程的数据区。当调用完毕,则释放该过程的数据区。设有源程序:programmain(input,output)consta=10;varb,c:integer;d,e:real;procedurep(x:real);varf:real;procedureq(

5、y:real);constg=5;varh:boolean;procedurer(z:integer);pqrvari:integer;begin……ife<0thenq(f);……end;{r}beginr(a);end;{q}beginq(e);end;{p}pqrproceduret();varj:real;beginp(e);end;{t}begin……t;……end;{main}t程序运行顺序和建立的数据区:主程序→t→p(e)→q(e)→r(a)q(f)当e<0时主程序ttttt主程序主程序主程序

6、主程序主程序p(e)p(e)p(e)p(e)q(e)q(e)q(e)r(a)r(a)q(f)1236542.以过程为单位的存储分配方案的实现主ptqr0层1层2层3层程序运行顺序:主程序→t→p→q→r静态链:指向定义该过程的直接外层过程(或主程序)运行时刻的数据区的首(基)地址。静态链作用:当动态地为某个过程在运行栈顶部建立数据区后,其中静态链为相应过程体内引用的所有变量提供了寻址途径,使得这些变量能以它们各自拥有的存储单元参与运算。动态链:指向调用该过程前正在运行的过程的数据区的首(基)地址。返回地址:记

7、录了调用该过程时目标程序的断点,即当时的程序地址寄存器的值,是调用语句指令的下一条指令的地址。动态链和返回地址的作用:为了当一个过程运行结束后,恢复其调用前的运行状态。主ptqr0层1层2层3层静态层次:主程序pqr0层1层2层3层一个过程的静态外层是唯一的,而动态外层不唯一。运行顺序可以是:主程序→t→p→q→r→主程序主程序→t→p→q→r→q→主程序主程序→t→p→q→r→q→r→主程序动态层次:调用该过程前正在运行的过程。10.3过程的活动记录过程的一次调用将占用内存的一片单元。在没有可变长度数据类型

8、的情况下对于每个过程来说,其单元片长度是固定的。在四元式方案里该长度被记录在过程函数说明的头四元式中,称上述单元片为过程的活动记录。Display表如下图:top→外层sp地址先行DISPLAY地址返回地址函数值形参单元本层DSPLAY表临时变量单元局部变量单元N321sp→0l+1项d项编译时可确定设一个变量X的抽象地址为(k,off),则它所对应的动态地址addr(k,off)可按下式计算:ad

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。