- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 1.3 编译程序的工作过程 1.3.5 代码生成 如果语义分析时把源程序表示成中间形式而不是表示成目标指令,则由本部分完成从中间形式到目标指令的转换。如果语义分析时,已直接生成目标指令,则无需另外再做代码生成工作。 目标指令可能是绝对指令代码,或可重新定位的指令代码或汇编指令代码。该阶段的工作有赖于硬件系统结构和机器指令含义。 * 目标代码生成 (* , id3 60.0 t1 ) (+ , id2 t1 id1 ) movf id3,R2 mulf #60.0,R2 movf id2,R1 addf R2,R1 movf R1,id1 * 1.3 编译程序的工作过程 1.3.6 表格管理 登记源程序中出现的每个名字以及名字的各种属性。有些名字的属性需要在各个阶段才能填入。 * 符号表管理 记录源程序中使用的名字 收集每个名字的各种属性信息 类型、作用域、分配存储信息 Const1 常量 值:35 Var1 变量 类型:实 层次:2 * 1.3 编译程序的工作过程 1.3.7 出错处理 源程序中的错误有语法错误和语义错误两种。 1.语法错误:源程序中不符合语法(或词法)规则的错误,它们可在词法分析或语法分析时检测出来。 2.语义错误:源程序中不符合语义规则的错误,一般在语义分析时检测出来,有的语义错误要在运行时才能检测出来。通常包括:说明错误、作用域错误、类型不一致等等 * 出错处理 检查错误、报告出错信息、排错、恢复编译工作 * 1.4 编译程序的结构 出 错 处 理 语法分析程序 语义分析程序 目标代码生成程序 词法分析程序 中间代码生成程序 代码优化程序 表 格 管 理 * 1.4 编译程序的结构 * 1.4 编译程序的结构 1.4.1 遍(趟,趟程) 所谓一趟或一遍是指一个编译程序在编译时刻把源程序或源程序的等价物(中间程序)从头到尾扫描一遍并转换成另一紧邻的等价物的全过程。 根据编译程序在完成翻译任务的过程中需要对源程序或其中间等价物扫描的遍数,可以把编译程序分为单遍扫描的编译程序(只需扫描一遍)和多遍扫描的编译程序(需扫描多遍)。 * 单遍扫描的编译程序 * 1.4 编译程序的结构 1.4.2 编译的前端和后端 前端主要由与源语言有关但与目标机器无关的那些部分组成,如词法分析、语法分析、语义分析与中间代码生成及部分代码优化工作。 后端主要包括编译中与目标机器有关的那些部分,如与目标机有关的代码优化和目标代码生成等。后端不依赖于源语言而仅依赖于中间语言。 可以通过改变编译程序的后端来实现编译程序的移植。 * 1.5 编译程序的组织方式 课本 图1.7 Page10 * 1.6 编译程序的其它有关技术 1.6.1 高级语言的自展技术 构造编译程序可以用机器言语、汇编语言和高级语言。 高级语言的自编译性:一个语言可以用来编写自己的编译程序。 * 1.6 编译程序的其它有关技术 1.6.1 编译的自展技术 ——通过一系列自展途径而形成编译程序的过程。 先对语言的核心部分构造一个小小编译程序(可用低级语言实现),再以它为工具构造一个能够编译更多语言成分的较大编译程序。如此扩展下去,越滚越大,最后形成所期望的整个编译程序。滚雪球! 课本 图1.8 Page10 * 1.6 编译程序的其它有关技术 1.6.2 编译的移植技术 ——将一个机器(宿主机)上的一个具有自编译性的高级语言编译程序移植到另一个机器(目标机)上。 利用A机器上的高级语言L编写能在B机器上运行的高级语言L的编译程序。 如下图: * 1.6 编译程序的其它有关技术 1.6.2 编译的移植技术 ——将一个机器(宿主机)上的一个具有自编译性的高级语言编译程序移植到另一个机器(目标机)上。 利用A机器上的高级语言L编写能在B机器上运行的高级语言L的编译程序。 * 1.6 编译程序的其它有关技术 1.6.3 编译程序自动化 1.词法分析生成器 如:LEX (接受正规表达式) 2.语法分析生成器 如:YACC (接受LALR(1)文法) 课本 图1.9 图1.10 Page12 * 1.6 编译程序的其它有关技术 1.6.4 程序的可再入性 ——程序执行过程中,可以随时中断其执行进程,也可随时从中
您可能关注的文档
- 计算机操作工初级教程剖析.ppt
- 基于QT的ktv点歌系统毕业论文剖析.doc
- 基于QT框架的通信制造公司桌面云管理系统的设计与实现改剖析.doc
- 计算机操作系统大学课堂展示剖析.pptx
- 基于QuartusII的数字时钟的设计剖析.docx
- 基于QUARTUS的EDA课程设计数字频率计的仿真剖析.doc
- 计算机操作系统第四剖析.ppt
- 基于RFID的门禁管理系统剖析.doc
- 计算机操作系统教程第四(张尧学著)清华大学出社剖析.ppt
- 计算机操作系统节复习题及答案剖析.doc
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- ansys结构声振耦合解决方案.pptx VIP
- ANSYS系统仿真与数字孪生解决方案.pptx VIP
- 第17课 电脑动画 教案 人教版 美术 五年级上册.docx VIP
- 湖北省黄冈市2025年八年级上学期1月期末英语试题(含答案).docx VIP
- 娱乐先锋II_高级KTV系统.pdf VIP
- 汽车软件简介演示.pptx VIP
- 水处理大法聚二甲基二烯丙基氯化铵在给水除藻中的作用应用的探讨.doc VIP
- 2026龙飞平面图形推理基础理论➕百大图形3.0版本.pdf VIP
- 连云港“高质发展、后发先至”-全面建设连云港小康社会继续教育题库及.pdf VIP
- 水污染控制工程第11章.ppt VIP
文档评论(0)