编译原理实验指导课件.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验指导 Yu Zhang, USTC Yu Zhang, USTC Yu Zhang, USTC 编译原理实验指导 张昱 计算机科学与技术学院 中国科学技术大学 合肥 2009.5.13 编译原理实验指导 * 资源 编译原理实验教程及实验软件包 /~yuzhang/compiler 开发环境与工具(参见实验教程1.3节) Java语言规范(第3版)--JLS3 /docs/books/jls/ Java 1.5的文法规范文件:java15.cup,java15.jj Eclipse AST JDT Plug-in Developer Guide Reference?API Reference ?org.eclipse.jdt.core.dom JDK+Ant Eclipse IDE JFlex,Java CUP(LALR)/JavaCC(LL(k)) GCC/SPIM 编译原理实验指导 * 编译器实现框架 编译原理实验指导 * 实验入门指南—初步了解 开发基础 Eclipse IDE + JDK + ant 命令控制台+JDK + ant 汇编码的运行:GCC、SPIM 自主研发的实验平台及支持库 实验语言 SimpleMiniJOOL语言的特点(见实验教程2.1节) SkipOOMiniJOOL语言的特点 词法:实验教程3.2节;语法:4.1节;语义:5.1节 中间表示 Eclipse AST:(见实验教程2.4,2.5节) LIR:(见实验教程6.2节) 编译原理实验指导 * 实验入门指南—初步了解 目标机 X86 CISC 生成的汇编码能由GCC编译生成可执行文件 MIPS RISC 生成的汇编码能由SPIM模拟器解释执行 汇编码简介:实验教程7.2和7.3节 汇编码的内部表示 AIR(实验教程7.4节) 实验软件包:课程设计开发包目录 编译原理实验指导 * 课程设计开发包目录 实验软件包:实验支持库的构成 编译原理实验指导 * 实验运行平台 编译原理实验指导 * 参见实验教程2.3节 目的 提供各类编译器组件及组件间信息访问的接口,简称实验平台接口。 提供一个实验运行平台,它能够将若干个编译器组件连接装配成一个完整的编译器或解释器并控制它们的运行。 用户可以通过平台配置文件灵活地定制待装配的各个编译器组件以及待编译或解释执行的源程序文件等。 实验平台接口 编译原理实验指导 * 实验任务(1) 每一学生可选的待开发组件 组件1:带语义检查的分析器(生成AST) 组件2:带语义检查的分析器(生成LIR) 组件3:基于AST的x86汇编代码生成器 组件4:基于AST的MIPS汇编代码生成器 组件5:基于LIR的x86汇编代码生成器 组件6:基于LIR的MIPS汇编代码生成器 合作伙伴的组合方式 组件1+组件3+GCC???? 组件1+组件4+SPIM 组件2+组件5+GCC???? 组件2+组件6+SPIM 编译原理实验指导 * 实验任务(2) 前端任务:组件1或组件2 词法分析、语法分析、静态语义分析、中间表示的生成 其中涉及符号表的设计与实现 后端任务:组件3~组件6之一 需要考虑动态语义检查(如数组下标越界)、短路计算、寄存器分配等,但是对代码优化不作要求。 独立开发后端时,需要设计和实现符号表 生成的x86汇编代码应能直接用gcc汇编连接得到可执行文件,生成的MIPS汇编代码则应能在SPIM上执行 若需要使用其他目标平台,必须在6月13日前与张昱老师联系并确认是否可以使用。 编译原理实验指导 * 实验任务(3) 最终的编译器 自行选择前后端 定义好接口,不开放源代码,只提供jar文件和接口说明,运行时应能输出作者名 你的前端(后端)被采用得越多,则得分越高 每个同学只负责自己提交的编译器的质量。 组件发布人不必考虑其发布的版本被使用的所有编译器的质量。 编译原理实验指导 * 提交和发布时间节点 提交节点 5月15 提交系统设计书,包括进度表和拟开发的组件 5月22前 经老师认可学生可调整拟开发的组件 5月31 提交已完成源代码和前后端接口描述 6月10 再次提交已完成源代码和进度报告 6月20 提交源文件、类库文件、测试程序、设计文档等 6月22 提交课程实践的收获、体会和建议(发邮件给张昱老师) 发布节点 6月13 发布测试程序 6月16 发布测试环境,对最终提交文档的规定 编译原理实验指导 * 每次提交时需要说明当前的执行进度与计划中的出入与原因,以及对计划的调整(如果有的话)! 课程设计成绩评定(1) 评分方式和过程 10?12个学生一组,大家参与,公开评分 评委:1个教师、助教、同组所有同学 教师主导测试过程、学生自己动手按老师要求操作,并

文档评论(0)

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

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

1亿VIP精品文档

相关文档