《编译第一章.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目标代码生成:编译的最后阶段 把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码,它的工作与硬件系统和指令含义有关,这个阶段的工作很复杂,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后续缓存器的调度等。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例如使用两个寄存器R1和R2,可将图1.8所示的中间代码生成如图1.9的某种汇编代码 MOV id3 , R2 MUL #10.0 , R2 MOV id2 , R1 ADD R1 , R2 MOV R1 , id1 图1.9 目标代码 第1条指令将id3的内容送至寄存器R2; 第2条指令将其与实常数10.0相乘,#表明把10.0处理为常数; 第3条指令将id2移至寄存器R1; 第4条指令将R1和R2中的值相加; 第5条指令将寄存器R1的值移到id1的地址中。 这些代码实现了本节开头给的源程序片段的赋值。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 1.2.2 编译程序的结构 上述编译过程的六个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。从而可以给出一个典型的编译程序结构框图,如图1.10所示。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 源程序 词法分析程序 语法分析程序 语义分析 中间代码生成程序 代码优化程序 目标代码生成程序 目标程序 表 格 管 理 程 序 出 错 处 理 程 序 语义分析程序 图1.10 编译程序结构框图 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 符号表管理 记录源程序中使用的名字 收集每个名字的各种属性信息 出错处理 检查错误、报告出错信息、排错、恢复编译工作 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 1.2.3 编译阶段的组合 在前面讨论的编译过程中阶段的划分是编译程序的逻辑组织。有时,常常把编译的过程分为前端(front end)和后端(back end)。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 前端:由主要依赖于源语言而与目标机无关的阶段组成。通常这些阶段包括词法分析,语法分析,语义分析,中间代码生成,某些优化工作也可以在前端做,也包括与前端每个阶段相关的出错和表格管理程序 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和表格管理程序。 遍:对源程序或源程序的中间表示形式从头到尾扫描一次,生成新的中间结果或目标程序。每一遍扫描可以完成上述一个阶段或多个阶段的工作。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 相同的前端,不同的后端,可为不同的机器生成构造同一个语言的编译程序。 不同的前端,相同的后端,可为同一机器生成几个语言的编译程序。

文档评论(0)

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

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

1亿VIP精品文档

相关文档