北京工商大学编译原理第013章.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一. 数据参数(3种参数传递方式) 引址调用 值调用 名调用 传值 得结果 传值得结果 program main var A , B :integer ; procedure P ( x , y , z ) ; begin y:= y + 1 ; z:= z + x end ; begin A := 2 ; B:= 3 ; P(A + B, A , A ) ; write ( A ) end 将实参的地址传递给对应的形参, 作为形参的地址 形参与实参是别名。 PASCAL:变量参数 C++:引用参数 1. 引用调用(传地址) (1)传值(单向): 实参的值?形参 (2)结果调用(单向): 形参的结果值?实参 (3)传值得结果(双向): 实参的值?形参 形参的结果值?实参 2. 值调用 3. 名调用(换名) 用实参名字原样替换形参 把实参用括号括起来 若被调用单元的局部变量名与主调单元的变量名发生冲突,则对局部名重新命名 二. 过程参数的传递 (略) 三.类型参数(略) 第十三章习题 13-2、13-4 课程结束 谢谢同学们! 祝 学业更进一步 考 前 答 疑 安 排 时间、地点 另行通知! 0 1 2 3 4 5 common main X I 返回地址 J 返回地址 K J ip=5 数据存储器 2 D[3]:=ip+2 ip:=5 ip:=3 noop halt D[4]:=5 D[0]:=6 D[5]:=D[0]+D[4] ip:=D[3] halt 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 common main X I 返回地址 J 返回地址 K J ip=7 数据存储器 6 2 5 D[3]:=ip+2 ip:=5 ip:=3 noop halt D[4]:=5 D[0]:=6 D[5]:=D[0]+D[4] ip:=D[3] halt 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 common main X I 返回地址 J 返回地址 K J ip=2 数据存储器 6 2 5 11 D[3]:=ip+2 ip:=5 ip:=3 noop halt D[4]:=5 D[0]:=6 D[5]:=D[0]+D[4] ip:=D[3] halt 0 1 2 3 4 5 6 7 8 9 第三节 栈式分配 语言特点: 允许递归 允许半动态数组 允许过程嵌套定义 1. 特点: 仅允许递归调用 变量及活动记录长度可静态确定 一个单元可多次激活而有多个实例 单元每次激活时动态建立活动记录 一. 只含半静态变量的栈式分配 (1)设置当前栈指针current 表示当前活动记录的开始位置 (2)指针free 表示数据存储器下一个可用单元 (3)变量绑定于它在活动记录中的常数位移, 通过current变址访问 2. 处理方法 (4)A调用B时, 在A活动记录的栈顶之上建立绑定于B的的活动记录 (5)B结束时 释放其活动记录 ?动态连接: A调用B时,B的活动记录中保存的A的活动记录地址 ?动态链: 由动态连接组成的一个调用链 3. 动态连接和动态链 A E F G F A call E; E call F; F call G; G call F; ... ... ... ... ... (1)保存返回地址 D [ free ] := ip + 5 或 20 (2)保存主调过程的current D [free + 1] := current (3)建立P的current current := free (4)调整free free := free + L (5)转子 ip := C[P,0] P的代码段首地址 4. CALL P 的处理 翻译为5条中间代码 返回地址 动态连接 返回地址 动态连接 A的活动记录 即将建立的 P的活动记录 current free 过程A中调用P时 还未进入过程P 返回地址 动态链 返回地址 动态链 A的活动记录 P的活动记录 current free 进入过程P以后(执行完5条指令)

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档