8-第八章存储空间组织-3节-缩减版.ppt
《8-第八章存储空间组织-3节-缩减版.ppt》由会员分享,可在线阅读,更多相关《8-第八章存储空间组织-3节-缩减版.ppt(34页珍藏版)》请在三一文库上搜索。
1、8.3 静态存储分配FORTRAN语言,如果编译时能确定一个程序在运行时所需的存贮空间大小,则可以在编译时安排目标程序的全部数据空间,并确定每个数据项的单元地址。这种存贮空间分配方法称为 “静态存储分配”。 静态存储分配特点 1). 编译时刻确定存储位置; 2). 目标程序执行时不必进行存储管理。目标程序 代码特别简单、高效。,FORTRAN语言的特点:(FORTRAN 77) 1). 过程不允许递归调用 一个过程的两个活动的生存期不相交,因此一 个过程的所有活动可以使用同一个活动记录; 2). 每个数据名所需的存储空间大小是常数,没有 可变数组等; 3). 数据名的性质完全确定;不能动态地建
2、立数据 结构; 因此可以采用“静态存储分配”。,由于每个FORTRAN 程序段可以独立编译,运行前由 装入程序把各段连成可运行的整体。 通常按数据区组织存储: 每个程序段定义一个局部数据区,用来存放程序段中未出现在COMMON里的局部名的值。 每个公用块定义一个公用数据区,用来存放公用块里各个名字的值。 每个数据区有一个编号,地址分配时,在符号表中,对每个数据名登记: (所属数据区编号,在该区中的相对位置),8.3.1 FORTRAN数据区,数据区=局部区(1个/程序段)全局区,编 译,. . .,.,.,1.各数据区编号,并统计 长度,便于分配空间; 2.数据区仅分配地址,构 成映象(虚空间
3、),真正 的空间运行时才建立, 并可以使用;,局部数据区的内容: 返回地址:存放此程序段结束时的返回地址。 寄存器保护区:调用本程序段时寄存器中的信息,当 本程序段结束后,可以恢复到调用前的状态; 形式单元:存放实在参数的地址或值。FORTRAN语言 采用两种方式共存的形式。 传地址:一个单元,存放地址; 得结果:二个单元,存放地址、值; 数组:按列存放; 临时变量:语义分析引入。,寄存器保护区,返回地址,A,T,B,a,例:子程序段: SUBROUTINE SWAP(A,B) T=A A=B B=T RETURN END 设:实型量占2个机器字,8.3.2 公共语句、等价语句介绍,数据对象的
4、物理存储空间管理,对程序的空间利用效率有很大的影响,COMMON 和E QUIVALENCE 这两个语句提供了足够强大的控制存储空间的功能。 COMMON :处理不同程序单位之间的数据共享。通常 用于在不同程序单位之间进行数据的批量传递,它 比采用参数传递的方式效率要高。,EQUIVALENCE : *)处理同一个程序单元中的多个对象共享一个存 储空间,以节省内存。 因此,主程序和过程之间;过程相互之间不同 变量不能用EQUIVALENCE语句来指定共用存储 单元。 *)允许用两个或更多的变量名代表同一个量。 COMMON、EQUVILENCE: 这两个语句功能过于强大,滥用会导致对程序的理解
5、和维护变得非常困难。,FORTRAN语言存储空间的模式描述: 1).存储单位:存储单个FORTRAN数据值的内存空间; integer,real,boolean:占一个机器字; Complex(复数),double(双精度实型): 占两个相继的机器字;,例:INTEGER I, J, K(3) COMPLEX X REAL A,数据区,2).存储序列: 任意多个连续的数据单位就构成了一个存储序列; 一个数组对象构成一个存储序列; 一个公用块构成一个存储序列; 等价语句中的等价列表的所有对象构成一 个存储序列; 3).两个数据对象如果共享了同一个存储序列,那么它 们就称为具有存储关联的关系。如果
6、它们只是共享 了同一个存储序列的部分存储单位,那么它们称为 具有部分存储关联的关系。,公共区:一块有名字的、被共享的存储空间。 无名公共区:一个; 有名公共区:多个; 公共语句: COMMON /公共块名1/ 变量名表1 , /公共块名2/变量名表2. 其中: *)变量名不得是哑元、可分配数组、自动对象等。 *)不同程序单元中,同一公用区中的变量名可以不同。 按位置一一对应共享同一存储单元中的数值。 *) COMMON语句是说明语句,必须在可执行语句之前。,主: common /X,Y common /B1/A,B,C/D,E,F(5),子1: common /I,Q(5) common /B
7、1/F(5)/B2/P(3),子2: common /B1/X(4) common /B2/Y,Z Complx Y,Z,F、Q部分存储关联,X、I存储关联,COMMON /COM/M(5),N(4) CALL FIB WRITE(*,(1X,4I3)N END SUBROUTINE FIB COMMON /COM/J(5),K(4) DO 10 I=1,4 K(I)=J(I+1) J(I) 10 CONTINUE END BLOCK DATA COMMON /COM/K(5),L(4) DATA K/8,7,10,4,13/ END,答案: -1 3 -6 9,等价语句: EQUIVALEN
8、CE (变量名表1),(变量名表2), 其中: 1)等价语句是说明语句,应出现在执行语句之前; 2)每一个 (变量名表),称为一个等价片; 3)等价片中的名字称为等价元。等价元可以是简单 变量或下标为常数的下标变量。,例:INTEGER I, J, K(3) COMPLEX X REAL A(3,3) EQUIVALENCE (X,A(2,3) ,(I,J,A(1,2),K(2),等价片,4)等价片中的每一个等价元都被分配到同一个存储单 元,只要某一个等价元赋予某值,其它的等价元 也就同时具有相同的值。 如有赋值:I=2 则 J,A(1,2)值也为2。 (注意:这种效果不是数学上的等值,而是由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 存储空间 组织 缩减
链接地址:https://www.31doc.com/p-3470908.html