- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
符 号 表 position … initial … rate … … … 代码生成器 代码优化器 语义分析器 中间代码 目标代码 中间代码 中间代码生成器 + id1 := * id2 Inttoreal 60 id3 生成的中间代码为: temp1:= inttoreal ( 60 ) temp2:= id3 * temp1 temp3:= id2 + temp2 id1 : = temp3 生成的代码为: MOVF id1 , R2 MULF #60.0 , R2 MOVF id2 , R1 ADDF R1 , R2 MOVF R1 , id1 优化: 生成的中间代码为: temp1:= inttoreal ( 60 ) temp2:= id3 * temp1 temp3:= id2 + temp2 id1 : = temp3 temp1:= id3 * 60.0 id1 : = temp1 编译程序的工作过程过程 目标代码生成 优 化 语义分析与中间代码生成 语法分析 词法分析 源程序 单词符号 语法单位 中间代码 目标代码 中间代码 输入源程序,扫描、分解源程序中的字符串, 根据词法规则识别出单词符号串。 在词法分析基础上,把单词符号串分解为各类语法单 位。通过语法分析, 判别它是否为语法上正确的程序。 分析语法分析产生的各类语法单位,进行初步翻 译,生成中间代码。 依据等价变化原则,对中间代码进行加工变换, 以期在后面产生更高效的目标代码。 把中间代码变换为特定机器行的低级语言代码。 这5个阶段只是从逻辑功能上的一种划分,实际情况要具体问题具体分析。 (1) 词法分析: 主要任务:从左到右扫描源程序,识别单词及其有关属性 , 并转换成属性字 (2) 语法分析: 主要任务:分析源程序的结构, 判别它是否为相应程序设计 语言中的一个合法程序 (3)语义分析和中间代码生成: 根据语法结构分析其含义,并用某中间语言表示出来,亦就生成中间代码,或者直接生成目标代码。 使用中间语言的好处: 使编译算法更加清晰,便于优化,还使编译程序的更多部分不依赖于目标机器 常见的中间代码形式: 逆波兰表示 三元式 四元式 树形结构等等 三元式定义为如下形式:(op, a1, a2) 对于表达式:a + b * c / d 则有三元式: (1) ( *, b, c) (2) (/, (1), d) (3) (+, a , (2) ) 于是 x : = 2 * a + b 的中间代码形式为: (1) ( *, 2, a) (2) (+, (1), b) (3) (:=, (2), x) (4)代码优化: 为了提高目标程序的质量而进行的工作。所谓目标程序的优化,就是尽量缩短运行时间和尽量最少占用存储空间 (5)目标代码生成: 完成从中间代码到目标代码的生成工作。如果在语义分析时已直接生成了目标代码,则无需做此项工作 编译程序框架 目标代码生成器 优化器 语义分析与中间代码生成器 语法分析器(分析器) 词法分析器(扫描器) 源程序 单词符号 语法单位 中间代码 目标代码 中间代码 表 格 管 理 出 错 处 理 记录源程序的各类信息和编译各阶段的进展情况 一组出错处理程序完成错误发现、报告、处理工作 信息表管理程序: 主要任务:建立一批不同用途的表格 + 保持一些专用的表格 一般信息表的登记项由关键字和与之相关联的信息组成 错误检查和处理程序: 主要任务:查错和纠错 出错处理程序:发现源程序的错误,把错误信息报告给用户 遍 对源程序或源程序的中间结果从头到尾扫描一次。并作有关加工处理,生成新的中间结果或目标程序。 (既可将几个不同阶段合为一遍,也可把一个阶段的工作分为若干遍。) 编译程序的功能和组织结构 表 处 理 词 法 分 析 源 程 序 目 标 程 序 错 误 处 理 语 法 分 析 语 义 分 析 目 标 代 码 生 成 前 端 后 端 中 间 代 码 优 化 中 间 代 码 生 成 编译程序的前端 ——与源语言有关,而与目标机无关的编译程序 ——主要完成分析工作(机器无关) 前端的组成部分: (1)词法分析:识别各个最小语法单位。 (2)语法分析:识别出各个语法结构。 (3)语义分析:确定类型,类型/运算合法性检查,识别含义和相应处理,静态语义检查。 (4)中间代码生成 编译过程分成前端和后端两部分 编译程序的后端
您可能关注的文档
最近下载
- 《防范遏制矿山领域重特大生产安全事故的硬措施》解读.pptx VIP
- [运行]-污水处理运营费用明细.docx VIP
- 《中华人民共和国标准化法》专业解读课件.pptx VIP
- 高中数学精品讲义:三角函数的概念(五大题型).pdf VIP
- 2025无创正压通气临床研究年度进展.pdf VIP
- 20240320可用性工程(人因设计)研究报告 空白模版.docx VIP
- GB_T 32151.14-2023 碳排放核算与报告要求 第14部分:其他有色金属冶炼和压延加工企业.pdf VIP
- 医务人员职业安全防护措施.pdf VIP
- 12J6 外装修标准图集.pdf VIP
- 兽医内科病 兽医学教材.ppt VIP
文档评论(0)