网站大量收购独家精品文档,联系QQ:2885784924

编译原理实践c3.doc

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章. 基于框架的编译课程实验 3.1 BIT-MiniCC 3.1.1. 相关背景 编译原理课程是计算机学科的一门核心专业必修课程,课程通过介绍编译系 统构造的理论基础、构造方法和实现技术,不仅让学生掌握编译器的工作过程, 而且让学生掌握语法分析、语义分析、中间代码生成、代码优化和目标代码生成 的基本原理和方法,并具备设计一个基本编译系统的能力。该课程是理论与实践 结合的典型课程,通过理论学习指导实践,通过实践进一步加深对理论知识的理 解,也是在本科阶段培养学生动手能力的非常重要的环节。 然而,在日常的教学过程中,如何快速有效地掌握编译原理的基本理论和方 法成为了学生们的一大困难,很多学生都反映编译原理课程晦涩难懂,学习了很 多的理论却无法融会贯通,导致对编译原理的理解不够深入,无法将其理论和方 法转化为一个可以运行的编译器。经过多年的实践和总结,发现由于以下多种原 因,学生往往无法按照预定的步骤完成相应的课程实验: ? 从理论到实践的距离:学生虽然在课堂教学过程中掌握了基本理论和方法, 但是要从头设计一个编译器时,却不知从何处下手。主要原因在于,工业级 的编译器是一个大规模的复杂软件系统,不太可能成为大部分学生编译器的 一个工具,学生缺少轻量级、模块化的编译器实现作为参考; ? 从前端到后端的距离:编译器典型框架结构中包括了词法分析、语法分析、 语义分析和中间代码生成、代码优化、目标代码生成等多个阶段。阶段之间 按照顺序衔接工作,前端分析模块的实现质量将直接影响后端的设计和实现。 目前的现状是大部分学生的前端实现无法满足后端综合的要求,导致后端直 接无法实施。 ? 从理想到现实的距离:编译器的开设一般在计算机专业三年级,这个阶段学 生面临多个核心专业课的学习,又要考虑参加竞赛、实验室项目,以及面临 出国和就业的压力,因此没有足够的时间实现如此大型的软件项目,时间不 足是导致学生无法完成整个工作流程的一个重要影响因素。 为了解决上述问题,北京理工大学编译原理课程组教师根据实际教学工作的 需要,设计并实现了一个小型的C 语言编译器框架。该框架将编译器的工作流程 划分为多个阶段,并为每个阶段设计并实现了一个内嵌的参考实现。该参考实现 是黑盒的,并不对学生开放,但是学生可以运行每个模块,并查看到相应的输入 和输出。学生可以使用自己的模块实现替换框架内嵌的模块,也可以部分使用内 嵌模块,部分使用自己设计的模块。框架不仅为学生提供了一个参考实现,也很 好的解决了上述三个“距离”问题。 BIT-MiniCC 设计了规范的中间文件,全部使用XML 文件表示,另外框架本身 使用 Java 语言实现,因此具有较好的跨平台特性,但是框架并没有限定学生实 现自己的模块所使用的语言,学生可以使用 Java、C 或者 Python 实现自己的模 块并进行替换操作,运行框架并查看结果,极大地提高了框架的灵活性和兼容性。 BIT-MiniCC 集成了 MIPS 等处理器的模拟器,基于框架生成的汇编代码,可 以直接在模拟其中汇编并运行,通过模拟器,学生能够更直观的观测到程序运行 的过程,以及处理器内部的变化过程。经过验证后的程序,能够与其他课程进行 很好的衔接,例如:将生成的二进制程序下载到自己设计的基于 FPGA 的 CPU 上 运行。 综上所述,该框架的主要特点在于: (1)该框架将 C 语言的编译过程划分为多个阶段,相互衔接的模块通过 XML 文件进行数据交换。这样设计的目的是使学生能够更好的了解每个阶段的工作原 理,输入数据和输出数据。通过观察模块之间的交互和衔接,能够更直观的了解 编译器的工作过程。 (2)该框架包含了编译器各个阶段的内部实现,学生可以直接运行该框架, 查看多个阶段之间的输入和输出。内部集成的各个模块的源代码是不可见的,仅 供学生自己实现各个模块时参考。 (3)在使用框架的过程中,学生可以自由选择使用内部集成的模块或者自 己设计的模块。其原因及好处在于,编译器各个阶段是互相依赖的,如果前面部 分实现不好,后续工作较难进行,但是基于该框架,进行后端的实验时,可以直 接选择使用内部集成的前段模块,从而节省了时间。 (4)该框架集成了 MIPS 的汇编器和模拟器 MARS,生成代码后可以直接调 用该模块对生成的代码进行验证。如果验证成功,则可以与体系结构和组成相关 课程实验进行衔接,将生成的代码在自己设计的目标系统上运行。 (5)学生可以定义新的指令,并将高级语言程序翻译为新指令。 3.1.2. 框架结构 尽管编译程序的处理过程十分复杂,不同的编译程序实现方法也各不相同, 但任何编译程序的基本功能都是类似的,其基本逻辑功能以及必要的模块大致相 同,即都要经过预处理、词法分析、语法分析、语义分析和中间代码生成、代码 优化、

文档评论(0)

158****6415 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档