




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章目标程序运行时的存储组织110.1 临时变量的存储分配存储分配的原因:四元式产生大量临时变量(每个运算产生一个),如不采取措施就会浪费大量存储单元。例:ci的四元式 1.(-, i, 1, T1) 2.(*, T1,5, T2) 3.(, c, T2,T3)2四元式QTi定义变量Y,则称i为Y的定义点;如果四元式QTj使用变量Z的值,则称j为Z的使用点。临时变量的存储分配可在中间代码一级进行,也可在目标代码一级进行。现在的目标是让更多的临时变量共享内存单元。采用动态分配法,不直接给变量分配单元,只是确定抽象地址。 3定义点和使用点全部落在一个基本块内的临时变量称之为良型临时变量。只被定
2、义一次,且只被定义一次。定义点与使用点在一个基本块内。良性临时变量的特点:基本块1基本块2定义点使用点4设i为临时变量T的定义点,j为最后一个使用点,则称区间i,j为T的活动区。设i,j和k,l是两个活动区,如果j=k或l=i,则称两个活动区不相交。 基本块T1的活动区ijklT2的活动区T1的活动区ikjlT2的活动区5例子:设有语句Y:=(A*B+C)*B-D,则四元式为: 1.(*, A, B, T1) A*B2.(+, T1,C, T2) A*B+C3.(*, T2,B, T3) (A*B+C)*B4.(-, T3,D, T4) (A*B+C)*B-D5.(=:,T4,X )6各临时变
3、量的定义点分别为:T11,T22,T33,T44各临时变量的最后使用点分别为: T12,T23,T34,T45各临时变量的活动区分别为:T11,2,T22,3,T33,4,T44,57结论: 每个临时变量的活动区均不相交。T1,T2,T3和T4将占用同一存储单元,从而实现节省存储的目标。 尽管在四元式中出现了很多临时变量,但实际占用存储单元的还是极少数。810.2 静态链、动态链1. 以过程为单位的动态存储分配 所谓以过程为单位的动态存储分配就是以过程调用为单位来设置数据区。即设计一个数据空间栈,当程序运行时,每调用某过程一次,就根据该过程的说明为该过程在数据区栈的顶部分配一定数量的数据单元,
4、称为该过程的数据区。当调用完毕,则释放该过程的数据区。9设有源程序:program main(input, output) const a =10; var b, c: integer; d, e: real; procedure p ( x: real ); var f: real; procedure q ( y: real ); const g = 5; var h: boolean; procedure r ( z:integer );pqr10 var i: integer; begin if e0 then q ( f ); end; r begin r ( a ); end; q
5、 begin q ( e ); end; p pqr11 procedure t ( ); var j: real; begin p ( e ); end; t begin t; end; maint12程序运行顺序和建立的数据区:主程序tp(e)q(e)r(a) q(f) 当e0时主程序ttttt主程序主程序主程序主程序主程序p(e)p(e)p(e)p(e)q(e)q(e)q(e)r(a)r(a)q(f)123654132. 以过程为单位的存储分配方案的实现主ptqr0层1层2层3层程序运行顺序:主程序tpqr14 静态链:指向定义该过程的直接外层过程(或主程序)运行时刻的数据区的首(基)地
6、址。 静态链作用:当动态地为某个过程在运行栈顶部建立数据区后,其中静态链为相应过程体内引用的所有变量提供了寻址途径,使得这些变量能以它们各自拥有的存储单元参与运算。15 动态链:指向调用该过程前正在运行的过程的数据区的首(基)地址。 返回地址:记录了调用该过程时目标程序的断点,即当时的程序地址寄存器的值,是调用语句指令的下一条指令的地址。 动态链和返回地址的作用:为了当一个过程运行结束后,恢复其调用前的运行状态。16主ptqr0层1层2层3层静态层次:主程序 p q r 0层 1层 2层 3层17一个过程的静态外层是唯一的,而动态外层不唯一。 运行顺序可以是: 主程序tpqr主程序 主程序tp
7、qrq主程序 主程序tpqrqr主程序动态层次:调用该过程前正在运行的过程。1810.3 过程的活动记录过程的一次调用将占用内存的一片单元。在没有可变长度数据类型的情况下对于每个过程来说,其单元片长度是固定的。在四元式方案里该长度被记录在过程函数说明的头四元式中,称上述单元片为过程的活动记录。 Display表如下图:19top外层sp地址先行DISPLAY地址返回地址函数值形参单元本层DSPLAY表临时变量单元局部变量单元N321sp0l +1项d 项编译时可确定20 设一个变量X的抽象地址为(k,off),则它所对应的动态地址addr(k,off)可按下式计算:addr(k,off)=DI
8、SPLAY(k)+off =CONTENT(sp+N+k)+off其中N是编译可确定的。当k为现役过程的层数时,有:addr(k,off)=sp+off 21例1:设有:主pqP0P1P2即静态链为:主程序pq,假设动态链也为:主程序pq。播放动画22DL外层SP的地址,主程序特殊直接定义外层过程的Display表的首地址RA返回地址函数值、形参单元本层Display表(主程序首地址)局部变量、临时变量单元主程序23DL先行Display表,存主程序Display表的首地址SPRA返回地址函数值、形参单元主程序的Display表P过程活动记录首地址SPDisplay表变量单元主程序p24DL先
9、行Display表,存P过程Display表的首地址SPRA返回地址函数值、形参单元主程序的Display表P过程活动记录首地址SPP过程Display表q过程活动记录首地址SPDisplay表变量单元主程序pq25例2: 现有静态链和动态链相同的程序 静态链 主程序 p q 动态链 主程序 p q 已知x的抽象地址为x( k, off )。当程序运行到q时,求x的值。分析: 1. 当x为q过程的变量,求x的值。 2 . 当x为p过程的变量,求x的值。 3. 当x为主程序的变量,求x的值。26例3: 现有静态链和动态链不相同的程序 主程序 p q r t动态链为:主程序 t p q r27活动
10、记录: 主程序t 过程r 过程q 过程p 过程Display表主程序Display表本层首地址函数值、形参RA返回地址主程序Display表首地址变量DL动态链2810.4 活动记录的填写每当调用一过程时,要建立新的活动记录;每当退出一过程时,要删除现役活动记录;这些工作都要目标程序来完成,主要由过程语句、过程入口和过程出口部分来完成。过程语句所完成的工作:1. 在要建立的新活动记录里保存现役活动记录的始地址: 0top:=sp. (动态链)292.在要建立的新活动记录里记入先行DISPLAY表的始地址: (静态链) 1)实在过程语句情形: 1top:=sp+N. 2)形式过程语句情形: 1top:=(第二形参单元). 其中第二个形参单元是给过程语句名分配的第二个单元.3.把实参信息传送到新活动记录区的形参单元中.4.转向相应过程的目标程序.30过程入口处完成的工作:1. 在要建立的新活动记录里保存返回地址: 2top:=返回地址. (返回地址)2. 在要建立的新活动记录里生成DISPLAY表: 从1top所指的先行DISPLAY表自底向上抄录 l 个单元的内容( l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年马工学素质培养试题及答案
- 2024监理工程师考试全科指南试题及答案
- 提升陪诊师考试分数的试题及答案技巧
- 黑龙江省克东一中、克山一中等五校联考2025年第二学期高三年级期末统一考试物理试题含解析
- 黑龙江省哈尔滨市122中学2024-2025学年高三招生统考(二)生物试题模拟试卷含解析
- 黑龙江省哈尔滨市示范名校2024-2025学年高三下期4月月考复习生物试题试卷含解析
- 黑龙江省哈市名校2024-2025学年高三年级第二次诊断性测验历史试题试卷含解析
- 黑龙江省望奎县重点名校2024-2025学年普通高中初三调研测试物理试题含解析
- 黑龙江省青冈县一中2025届高考全真模拟卷生物试题第六套含解析
- 黑龙江省鹤岗市绥滨一中学2025年初三3月总复习质检(一模)物理试题含解析
- 《深度学习原理》课程教学大纲
- 沪教版数学八年级上册全册教案
- 特殊场所的消防安全知识培训
- 航海英语听力与会话
- 国家电网招聘2025-企业文化复习试题含答案
- 2024年官方兽医牧运通考试题库(含答案)
- 《hpv与宫颈癌》课件
- 【课件】校园安全系列之警惕“死亡游戏”主题班会课件
- 西安交通大学《程序设计思想方法与实践》2021-2022学年期末试卷
- 快乐读书吧:童年(专项训练)-2023-2024学年六年级语文上册(统编版)(含答案)
- 企业信息化建设管理制度
评论
0/150
提交评论