- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大学,本科,专科,硕士,笔记,课件,期中试卷答案,期末试卷答案,教材答案,知识点,经济法,材料科学基础,材料力学,电路,电子技术基础,高频电子线路,宏观经济学,模拟电路基础,模拟电子技术,数字电路,数字电子技术,数字信号处理,通信原理,信号与系统,化工原理,机械设计基础,机械原理,机械制图,微机原理与接口技术,C++程序设计,JAVA技术与应用,MATLAB基础与应用,计算机网络,计算机组成原理,软件工程数据结构,工程力学,工程热力学,结构力学,力学,流体力学,水力学,工程测量,工程经济学,工程
CompilerPrinciples * 2.活动记录 C的活动纪录有以下四个项目: ? 连接数据,有两个: ?老SP值,即前一个活动纪 录的地址; ?返回地址。 ? 参数个数。 ?形式单元(存放实在参数的值或地址)。 ?过程的局部变量、数组内情向量和临时工作单元。 临时工作单元 内情向量 简单变量 形式单元 参数个数 返回地址 老SP Top SP CompilerPrinciples * 3. C的过程调用、过程进入、数组空间分配和过程返回 前面谈过,过程调用的四元式序列: par T1 par T2 … par Tn call P, n 现在我们考虑在运行时四元式par和call是如何执行的,或者说,对于par和call应该生成些什么目标代码。由于TOP总是指向栈顶,而形式单元和活动纪录起点之间的距离是确定的(等于3),因此每个par Ti (i= 1,2,…n ) 可直接翻译成如下指令: CompilerPrinciples * (i+3)[TOP]:=Ti (传递参数值) 或(i+3)[TOP]:=addr(Ti) (传递参数的地址) 这些指令的作用是将实参的值或地址一一传进新的过程的形式单元中。此处我们假定每个形式单元,不论用来存放实参的值或地址,均只用一个机器字。注意,在执行这些指令时TOP的值不受影响。 四元式call P, n应被翻译成: 1[TOP]:= SP (保护现行SP ) 3[TOP]:= n (传送参数个数) JSR P (转子指令,转向P的第一条指令 ) 转进过程P后,首先要做的工作是定义新活动纪录的SP,保护返回地址和定义这个纪录的TOP值。也就是说执行如下指令: SP:=TOP +1 (定义新SP ) 1[SP]:=返回地址 (保护返回地址 ) TOP:=TOP + L (定义新的TOP ) CompilerPrinciples * 其中,L是过程P 的活动纪录所需的单元数,这个数在编译是可静态地计算出来。 在过程段执行语句的工作过程中,凡引用形式参数、局部变量或数组元素都是以SP为变址器进行变址访问的。 C语言以及其它一些相似的语言含有下面形式的返回语句: return (E) 其中,E为表达式。假定E的值已计算出来并已放到某个特定的寄存器中(调用段将从这个特定的寄存器中获得被调用过程的结果值)。然后,剩下的工作是恢复SP和TOP为进入过程前的老值,并返回地址实行无条件转移。即执行下述指令序列: TOP := SP-1 SP := 0[SP] X := 2[TOP] (X为某一变址器) UJ 0[X] 此处 UJ为无条件转移指令,按 X 中的返回地址实行变址转移。 CompilerPrinciples * 二、嵌套过程语言的栈式实现 我们前面说过,C语言是不允许过程嵌套的,即不允许一个过程定义出现在另一个过程定义之内。而在Pascal中却允许过程嵌套,下面我们来谈一谈如何处理这一类的过程调用。 这里常常要用到过程定义的“嵌套层次”(简称层次),我们始终假定主过程的层次为0,因此,主程序称为第0层过程。如过程Q是在层数为i的过程P内定义,并且P是包围Q的最小过程,那么Q的层数为i+1 .这时,我们把P称为Q的直接外层过程,而Q称为P的内层过程。当编译程序处理过程说明时,过程的层数将作为过程名的一个重要属性登记在符号表中。计数每个过程的层数是很容易的。使用一个计数器level(初始值为0),每逢遇到proc Begin 时,将它累加1;每逢遇到 proc end 时将它递减1。于是对于每个过程说明我们就可用level来定义它的层数。 CompilerPrinciples * 由于过程的定义是嵌套的,一个过程可以引用包围它的任意过程所定义的变量或数组,也就是说,运行时,一个过程Q可能引用它的任意一个外层过程P的最新活动纪录中的某些数据(这些数据视为过程Q的非局部量)。 为了在活动纪录中查找
您可能关注的文档
- 中国传媒大学《编译原理》课件-第6-7章优化.ppt
- 中国地质大学(武汉)《编译原理》课件-第1-2章绪论.ppt
- 中国地质大学(武汉)《编译原理》课件-第7章LR分析法.ppt
- 中国地质大学(武汉)《编译原理》课件-第8章语法制导翻译和中间代码生成.ppt
- 中国农业大学《编译原理》课件-第1-2章引论.ppt
- 中国农业大学《编译原理》课件-第4章词法分析.ppt
- 中国农业大学《编译原理》课件-第5章自顶向下语法分析方法.ppt
- 中国农业大学《编译原理》课件-第9-10章符号表.ppt
- 中国农业大学《编译原理》课件-第11章代码优化.ppt
- 中央财经大学《编译原理》课件-第4章自顶向下的语法分析.ppt
最近下载
- 基于国家智慧教育云平台的移动学习环境下的学生自主学习习惯养成研究教学研究课题报告.docx
- 高中思想政治新旧课程比较研究.pdf VIP
- 高一的语文专题训练—辨析并修改病句练习题.docx VIP
- QC成果-浙江中烟技术中心:ZJ112卷烟机VE循环风冷却系统的研制.pdf VIP
- YYT 0472.2-2004 医用非织造敷布试验方法 第2部分 成品敷布.docx VIP
- 猪促黄体生成素的重组表达载体、重组细胞株、制备方法.pdf VIP
- 智慧社区规划设计方案.ppt VIP
- 中压岸电AMP系统的安全操作及管理.pptx
- 一、课程性质与基本理念——2025年版《普通高中课程标准》思想政治(wor.pptx VIP
- 质子治疗与护理.pptx
原创力文档


文档评论(0)