哈工大编译原理第七章.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈工大编译原理第七章

第七章 运行时刻环境 ;  序 7.1 源语言中的一些问题 7.2 存储组织 7.3 运行时刻存储分配策略 7.4 非局部名字的访问 7.5 符号表; 序 计算环境 运行时的环境 计算 目标代码; 在过程的语句序列执行之前,过程中访问的对象构成此过程的运行环境,由运行支持程序组织好。; f;中间代码 * i j t1 * (sp ,20) (sp ,21) (sp ,29) + e t1 t2 + (sp ,27) (sp ,29) (sp ,30) itor t2 – t3 itor (sp ,30) – (sp ,31) := t3 – f := (sp ,31) – (sp ,28);7.1 有关源程序中的一些问题 目的: 构造运行程序的策略和方法 1.1 过程 1.2 活动树 1.3 控制栈 1.4 说明的作用域 1.5 名字的绑定 1.6 参数传递 1.7 构造运行程序和源程序有关的 一些问题;1.1 过程 ;1.2 活动树 ? ? ;一个过程p的一次活动的生存期: ; 这种活动生存期的嵌套性质可以通过在每一个过程中插入两个打印语句来加以跟踪。;program sort(input,output); ? ?var a : array[0..10] of integer; ? ??procedure readarray; ? ?????var i : integer; ? ??????begin … ??end; ? ?function partition (y ,z : integer ):integer; ? ??????var i,j ,x,v: integer; ? ?????begin ?… ? end; ? ?procedure quicksort(m,n : integer); ??????var i : integer; ? ??????begin ???end ?? … ???end; ????begin ??? … ? end.;执行开始 ??? enter readarray ??? leave readarray ?? ? enter quicksort(1,9) ??? enter partition(1,9) ??? leave partition(l,9) ??? enter quicksort(1,3) ??? ................ ??? leave quicksort(1,3) ??? enter quicksort(5,9) ??? ................ ??? leave quicksort(5,9) ??? leave quicksort(1,9) ?执行结束;递归:一个过程是递归的,如果同一过程的一次新的活动可以在前面活动结束以前???始。;s;结论: ;1.3 控制栈 ;例2 栈和活动树的变化;结点序列: ??? ??s,q(1,9),q(l,3),q(2,3);结论:扩充控制栈可用来实现如Pascal语言的栈式存储分配,进入一个活动,在栈顶建立这个活动所使用的存储空间;这个活动结束,从栈顶弹出其使用的存储空间。; 一个名字在源程序行文中可能有几处说明,语言的作用域规则规定了: ; 3 . 编译时,处理说明语句时,把名字及其属性信息填写进符号表(add(id.entry,id.vul)); ;可以说,函数environment把一个名字映射为一个l-value(左-值), ;名字;静态概念 动态对应 过程定义 过程活动 名字说明 名字的绑定 说明的作用域

文档评论(0)

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

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

1亿VIP精品文档

相关文档