编译原理(全套课件下).ppt

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

全册完 586 四元式call p,n应翻译成: 1[top]=sp(保护现行SP) 3[top]=n(传送参数个数) jsr p (转向P的第一条指令) 转入P后,建立自己的新的活动记录: SP=top+1 1[sp]=返回地址 top=top+L //L为P的活动记录所需单元数 587 返回序列,return目标代码完成的任务是: 1.被调用者将返回值放入临近主调者的活动记 录的地方 2.利用状态域中的信息,被调用者恢复 sp和其它寄存器,并且按返回地址转 移到调用者的代码之中。 3.调用者复制返回值到自己的活动记录中。 588 返回语句:return(E) E为返回值,放在临时单元T中 首先:将T送入特定寄存器 接下来恢复调用现场: top=sp-1 sp=0[sp] x=2[top] Uj 0[x] 589 任务的划分,根据源语言、目标机器和 操 作系统等具体情况而定。 上述任务,由运行支持子程序完成,可 视为虚机指令。 590 a=0;S;…… Begin end Procedure Q(b:integer); Var i:integer; Procedure R(u:integer;var v:integer) Var c,d:integer; Begin If u=1 then R(u+1,v);…v=(a+c)*(b-d);end Begin ….R(1,x);…..end Procedure S Var c,i:integer; Begin a=1; Q( c);………;end 1 Program p; Var a,x:integer 2 2 3 3.2.2 嵌套过程 语言的栈式实 现 554 可以说,函数environment把一个名字映射为 一个l-value(左-值), state把存储单元映射到那里所存放的值上。 而函数state把一个 l-value(左-值)映射为一个r-value(右-值)。 如下图所示。 1.5名字与存储的绑定 名字与存储单元的绑定是指把源程序中的数 据名字映射到目标机存储单元的过程。 引进两个函数,environment和state。 environment把名字映射到一个存储单元上; 555 名字 environment state 存储单元 l-value 存储分配 值 r-value 程序运行 图:从名字到值的两个阶段映射 过程活动 名字的绑定 活动的生存期 过程定义 名字说明 说明的作用域 动态对应 静态概念 556 557 1.6 参数传递 实在参数和形式参数结合的方法: 传值调用(call-by-value) 引用调用(call-by-reference) 复制恢复(copy-restore) 传名调用(call-by-name) 558 1.7 提出的问题 编译程序组织存储分配所采用策略和方 法主要取决于对源程序中下面的问题的回答。 1.过程可以是递归的吗? 2.当控制从过程的一次活动返回时,局部 名的值将发生什么 变化? 3.一个过程可以访问非局部名吗? 4.当调用过程时参数是怎样传递的? 559 5.过程可以作为参数被传递吗? 6.过程可以作为结果被返回吗? 7. 可以在程序控制下进行动态存储分配吗? 8. 显式的存储重新分配(指撤除分配后的 分配)是必须的吗? 上面的问题对运行时的存贮分配有很大的影 响, 我们将在后面章节里,对以上问题进 行讨论并介绍与之相应的存贮分配策略 560 7.2 存储组织 2.1 运行时刻内存的划分 运行时刻的存储空间必须划分成块,用 来存放: 1. 生成的目标代码; 2. 数据目标; 3. 用于保存过程活动踪迹的一个控制栈。 561 目标代码 静态数据 栈 存储空间划分的各部分: 1. 编译后知道目标 代码的大小。 2. Pascal, c , Fortran 3. 栈:Pascal,c 4. 堆: Pascal,c 堆 562 2.2 活动记录 把过程的一个活动所需要的信息组织成 一块连续的存储单元,称为活动记录。 一个活动所需要的信息的每个数据项有 相同的生存期,因此,组织成一个活动记录 是很自然的。 对于pascal

文档评论(0)

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

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

1亿VIP精品文档

相关文档