- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储组织
第十章 存储组织;10.1 概述;10.2 数据空间的使用方法;静态存储分配;栈式存储分配;堆式存储分配;对过程的语义处理;程序由过程组成,当过程被激活时,在运行栈的栈顶设置相应的AR:
临时值:例如计算表达式时的中间工作单元。
局部变量(数据)
保存运行过程前的状态(程序计数器,寄存器值……)
存取链(可选):对于非局部量的引用。
控制链(老SP)(可选):指向调用者的AR。
实参(形式单元)
返回值(对函数),有时可使用寄存器存放返回值
返回地址:保存该被调过程返回后的地址; 简单语言的分配方案;Main;R的活动记录;例(P236图10.11)
sort
var a;
readarray;
…a…;
exchange;
quicksort;
partition;
…a…;
exchange;
quicksort;
……;关键技术:解决对非局部变量的引用(存取)
也就是说,设法跟踪每个外层过程的最新活动
记录AR的位置。
跟踪办法:
1. 存取链。
2. DISPLAY表。;---指向定义该过程的直接外层过程(或主程序)运行时最新活动记录的基地址。
(例如:PL/0 )
注意与控制链(又名动态链 SP)相区别:
---控制链指向调用者的AR,
存取链指向定义者的AR。
--两链的指向位置有可能相同,也可能不同。;嵌套层次显示表(Display表); ;10.3 栈式动态存储分配的实现;用Display表的方案;用Display表的方案;分程序结构
Procedure A(m,n); integer m,n;
B1:begin real z; array B[m:n];
B2:begin real d, e;
L3:
end;
B4:begin array C[1:m];
B5:begin real e;
L6:
end;
end;
L8:end; ;分程序结构的存储分配方案;; ;:; ;峰适盘寺鞠除蓑疗泌井炒顺炬丈退违缓源阉礁米咖合闻戳魔霹它蓖畴母弱10_存储组织10_存储组织; ; ;数孙箔旺躯紫阵丹豆郸晃构踩因北延车宪芯颈谭颓盼吮社宴忙颈腿屋惑匀10_存储组织10_存储组织;10.4 过程调用的参数传递;(1) program reference(input,output);
(2) var a,b:integer;
(3) procedure swap({var} x,y:integer);
(4) var temp:integer;
(5) begin
(6) temp:=x;
(7) x:=y;
(8) y:=temp
(9) end;
(10) begin /*reference*/
(11) a:=1; b:=2;
(12) swap(a,b);
(13) writeln(‘a=‘,a);writeln(‘b=‘,b)
(14) end. /*swap*/;传地址(变量参数)
例如:过程 swap(var x,y:integer);
swap(a,b);( a,b为调用时的实参 )
调用结果a,b的值被改变。
传值(值调用)
例如:过程 swap(x,y:integer);
特点是对形式参数的任何运算不影响实参的值。
swap(a,b);其结果: a,b调用前的值不改变。;传值的实现;procedure swap( x,y:integer);
var temp:integer;
begin temp:=x; x:=y; y:=temp
文档评论(0)