编译原理第九章——运行时存储空间组织.ppt

编译原理第九章——运行时存储空间组织.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第九章 运行时存储空间组织 第一页,共四十一页。 目标程序运行时的活动 过程的活动 一个过程的活动指该过程的一次执行。 参数传递 1. 参数 形参:过程定义时出现 实参:过程调用时出现 2. 参数传递的途径: 传地址(call by reference) 传值 (call by value) 传名(换名)(call by name) 第二页,共四十一页。 参数传递途径——传地址 把实参的地址传递给相应的形参。 过程段中每个形参都有相应单元,称为形式单元,用来存放相应实参的地址。 若实参是变量则直接传递地址,若实参是常数或表达式,则先计算其值并存放于某一临时单元,再传递临时单元的地址。 传结果(call by reference)与传地址相似,其实质:每个形参对应两个单元,第一个单元存放实参地址,第二个存放实参的值。过程体中对形参的动作均看成对第二个单元的直接访问,在过程完成返回前必须把第二个单元的内容存放到第一个单元所指的实参单元中。 第三页,共四十一页。 Procedure s); var j:real; begin j:=n; n:=m; m:=j; end 传地址过程 调用s(i))的过程: (1)将i,k(i)地址传递到已知单元J1和J2中 (2) n:=J1; m:=J2; (3) j:=n↑; (4) n↑:=m↑; (5) m↑:=j; 第四页,共四十一页。 参数传递途径——传值 Procedure s); var j:real; begin j:=n; n:=m; m:=j; end 传值过程 a:=1;b:=2;调用s)执行过程: n:=a m:=b j:=n n:=m m:=j 局部变量m,n,j的值改变,但不影响a,b的值 第五页,共四十一页。 参数传递途径——传名 把被调用段的过程体抄到调用出现的位置,并将形参替换成相应实参(文字替换)。 Procedure s); var j:real; begin j:=n; n:=m; m:=j; end 传名过程 调用s(i))的过程: j:=i; i:=k(i); k(i):=j; 第六页,共四十一页。 对于下面程序: Procedure p (x,y,z) ; begin y:=y+1; z:=z+x; end; {p} begin a:=2; b:=3; p (a+b , a , a) print a end. 若参数传递的方法分别为 (1)传名(2)传地址 (3)传结果 (4)传值。 执行时所输出的a分别是什么? 第七页,共四十一页。 参数传递方式为“传名” Procedure p (a+b,a,a) ; begin a:=a+1; a:=a+a+b; end; {p} 此时调用者数据区为(a): 执行a:=a+1后数据区为(b): 执行a:=a+a+b后数据区为(c): 3 2 b: a: (a) 3 3 b: a: (b) 3 9 b: a: (c) 程序输出结果a为9 第八页,共四十一页。 参数传递方式为“传地址” 3 2 b: a: 调用者数据区 5 临时单元T: (a+b的值) a T y: x: 被调用者数据区 a z: 执行语句y:=y+1后 3 3 b: a: 调用者数据区 5 临时单元T: (a+b的值) a T y: x: 被调用者数据区 a z: 第九页,共四十一页。 参数传递方式为“传地址” 执行语句z:=z+x后 3 8 b: a: 调用者数据区 5 临时单元T: (a+b的值) a T y: x: 被调用者数据区 a z: 程序输出结果a为8 第十页,共四十一页。 参数传递方式为“传结果” 3 2 b: a: 调用者数据区 5 临时单元T: (a+b的值) 执行语句y:=y+1后

文档评论(0)

虾虾教育 + 关注
官方认证
内容提供者

有问题请私信!谢谢啦 资料均为网络收集与整理,收费仅为整理费用,如有侵权,请私信,立马删除

版权声明书
用户编号:8012026075000021
认证主体重庆皮皮猪科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
91500113MA61PRPQ02

1亿VIP精品文档

相关文档