- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理课件new.ppt
目标代码生成 任务: 把中间代码变换成特定机器上的绝对指令代码或可重定位的机器指令代码或汇编指令代码。 特点: 1)与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。 2)高级语言?低级语言转换是基于语义的等价变换,不是结构上的变换。 ( * id3 10.0 t1 ) ( + id2 t1 id1 ) sum := first + count * 10 MOVF id3, R2 MULF #10.0, R2 MOVF id2, R1 ADDF R1, R2 MOV R1, id1 表格管理 任务:用于保存源程序的各种信息。因为上述各阶段工作均需要查找、更新、构造表格。 管理各种符号表(常数、标号、变量、过程、结构……),查、填(登记、查找)源程序中出现的符号和编译程序生成的符号,为编译的各个阶段提供信息。 辅助语法检查、语义检查 完成静态绑定、管理编译过程 Hash表、链表等各种查、填表技术 出错处理 任务:报告源程序中错误的性质、地点,将错误所造成的影响限制在尽可能小的范围。有些编译程序还可以自动纠错。 一个程序是正确的,包括两层含义: 1)书写正确(合乎语法规则) 2)含义正确(合乎语义规则) 说明 多数实用的编译程序都采用以上几个阶段的工作过程。 有些编译程序没有“中间代码生成”和“代码优化”。 词 法 分 析 语 法 分 析 语 义 分 析 中间代码生成 优 化 目标代码生成 目标代码 源 程序 符 号 表 管 理 错 误 诊 查 处 理 二、编译程序的结构 例 语句的翻译 how are you ?怎么是你 how old are you? 怎么老是你? 例 语句的翻译 你有两下子。 you have two down son。 我叫李老大,今年25。 I call Li old big. toyear 25. 心花怒放 heart flower angry open 表妹 watch sister 知之为知之,不知为不知… know is know noknow is noknow 你给我站住! You give me stop! 彼此彼此you me you me 咱俩谁跟谁啊 we two who and who? 例 一个语句的翻译 三、编译阶段的组合 前端:主要依赖于源语言而与目标机器无关的编译阶段。如:词法分析、语法分析、语义分析、中间代码生成、部分代码优化、与前端有关的出错处理工作和表格管理工作。 后端:依赖于目标机而一般不依赖于源语言,只与中间代码有关的编译阶段。如:目标代码生成,以及相关出错处理和表格处理。 遍(趟):对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成编译的一个阶段或多个阶段工作。 多遍编译:占内存少,逻辑结构清晰,耗时长 一遍编译:占内存多,逻辑结构不清晰,耗时短 1.3 解释程序和一些软件工具 一、解释程序 接受高级语言程序,并立即运行这个源程序。 例如:BASIC语言解释程序,LISP解释程序,SQL解释程序,Java语言中的BYTECODE解释程序 解释程序 源程序 输入数据 结果 编译程序 高级语言程序 (源程序) 低级语言程序 (目标程序) 解释程序 源程序 结果 输入数据 运行程序 输入数据 结果 编译与解释的根本区别:是否生成目标代码。 二、解释程序与编译程序的比较 三、解释程序的优、缺点 优点:可移植性较好。 缺点:(1)速度慢 (2)空间开销大 有些语言既有编译程序,又有解释程序。 四、处理源程序的软件工具 1 语言的结构化编辑器 正文编辑、修改 对源程序正文进行分析(检查用户输入是否正确、自动提供关键字、检查括号的匹配情况) 2 语言程序的调试工具 了解程序执行的结果与编程人员的意图是否一致 允许用户一行一行跟踪程序,查看变量值的变化 3 程序格式化工具 分析源程序,并使程序结构变得清晰可读(如缩排) 四、处理源程序的软件工具 4 语言程序测试工具 静态分析器:不运行源程序,就可以发现其中潜藏的错误或异常。 动态分析器:对源程序进行分析,把记录和显示程序执行轨迹的语句或函数插入源程序,将运行结果与期望结果进行比较和分析。 5 程序理解工具 对程序进行分析,确定模块间的调用关系,并画出控制流程图。 6 高级语言之间的转换工具 将一种高级语言程序转换成另一种高级语言程序 1.4 程序设计语言范型 一、强制式语言(过程式语言、命令
您可能关注的文档
最近下载
- 关于印发《关于推动中央企业加快司库体系建设进一步加强资金管理的意见》的通知.docx VIP
- 转炉和阳极炉讲解.ppt VIP
- 往届二外小升初分班数学测试卷(有答案).pdf VIP
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案.pdf VIP
- 《水利水电工程施工监理规范sl288-2014表格》2016年1月更新.docx VIP
- 线路题库维护考试题库汇总.docx VIP
- 轮毂设计验证计划和报告(DVP&R).xls VIP
- 2025年国家低压电工作业证理论考试题库(含答案).pdf
- 新版GMP口服固体制剂多品种共线生产风险评估报告.pdf VIP
- 重庆某220kv变电站工程施工组织设计(精品).doc VIP
文档评论(0)