类C微小编译器的设计与实现-2016-5-20教程.docx

类C微小编译器的设计与实现-2016-5-20教程.docx

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类C微小编译器的设计与实现-2016-5-20教程

类C微小编译器的设计与实现 摘要 随着计算机的广泛应用,计算机编程语言从早期的机器语言到汇编语言进行不断地演进,以及到现在的各种高级语言的形态。 编译器技术是计算机技术发展的基石,同时也是进展速度最快的计算机科学,这个分支已经进行了几十年的研究,形成了非常成熟的体系,编译器的设计集中体现了计算机的本质和发展的成果。 其核心思想是在机器语言和算法的逻辑结构转换从一种基础到另一种代表语言的过程。最终形成高级别语言,甚至在高级语言上的虚拟平台上运行的机器语言,并且以硬件的机器指令实现,以上所述的改造涉及到的编译器技术的应用。本系统采用Go作为编程语言。介绍了开发的相关内容,完成的功能,以及实现的记录。着重解释了一些编写编译器的关键点和技术要点和理论。 关键词: 编译技术,编程程序,高级语言 第一节 绪论 1.1 开发背景 在计算机技术与科学的迅猛发展下, 计算技术应用在了非常广泛的领域当中, 相当的计算机应用层出不穷,极大地丰富了我们的生活,学习和工作。与此同时, 也有许多用于编写高级应用的编程语言作为支撑,才得以构建非常复杂的系统和架构。 程序设计是一门艺术,设计者通过特定语言的编译器将源代码翻译为体系结构相关的目标程序,,从而能够最终达到程序执行的目的,,一个好的程序语言要满足工程的需要也要搭配良好的语法设计。从 20 世纪 60 年代开始,编译器的设计就是计算机科学技术发展和研发中的一个热门主题。虽然编译器设计的历史很长,作为计算机技术来说相对成熟,编译器还是一个由高级抽象的源代码向计算机机器指令转换的高效映射工具,随着电脑软硬件水平的不断提高,编译器的设计也在不断地变化,目标机体系结构也在不断地改进,软件越来越复杂,其规模也越来越大。编译器设计问题在高级层次上大致稳定,例如面向对象语言,面向过程语言,函数语言都在各自的领域发挥着重要的作用,并且每个领域的研究都有着非常积极的意义,不同领域相互学习,相互弥补,并且结合工业界的积累,不断自我完善,从一个抽象的计算机科学问题,逐渐变成了一个计算机工业界不断追求和寻找优化的目标,大公司对于编程语言的要求非常高,因为一个良好的编程语言能很大的提高程序员的工作效率,良好的程序组织结构也能保证项目的可重用性,这样实际生产中的工程能够保证高效和稳定。当我们深入其内部研究编译器时会不断明白,编译器的内部结构同样也在顺应着需求一直在变化。此外,由于我们能够提供给编译器本身的计算资源,例如内存等,也在不断增加。所以,现代编译器可以采用比以前更加复杂的算法,却又不会损失过多的时间。除此之外,编译器前后端分离,能够提供一种更加合理的方式,把编程过程解耦,比如在编辑时就主动触发前端语法分析的过程,检查语法错误,而不需要等到最后编译的时候进行,或者通过解析条件自动生成代码,减少开发的工作量,很多编译“前端”技术,如文法、正则表达式、语法分析器以及语法制导翻译器等,仍然被广泛使用。 1.2 开发的目标和意义 GCC的复杂程度基本上可以和Linux操作系统比肩,代码量,工程量非常之大,是世界各地的优秀工程师合力通过版本控制系统贡献开发的,单凭一个人很难做到这样规模的编译器,所以编写甚至读懂这样的一个GCC的编译器是一件非常困难的事情。很多的计算机专业的同学从来没有编写过一个完整的编译器,但是,几乎任何程序都和编译器有关,而且任何一个软件工程师都应该知晓编译技术的基本结构和原理。编译设计的原理和技术还可以用于编译器设计之外的众多领域。因此,这些原理和技术会在工程实践中被反复使用。研究编译器的实现和设计程序语言、体系结构、算法和软件工程。编译器的设计从本质上来说是一项工程,它所使用的方法必须很好地解决现实中出现的各种解释逻辑(即用真实的语言编译且在真实的机器上能够执行的程序)。在一般情况下,开发编译器的人必须面对机器结构,很少能够去改善设计。在开发过程中做什么样的分析和转换,以及什么时候去做,这些都是工程上的选择,但正是这些选择决定了一个编译器的性能高低。本实验就建立在一个自主开发的微型编译器基础之上的,该编译器虽然功能类似于C语言这样的经典编译器,但是缺少必要的标准库和完整的实现,但也已经完全具备了一个编译器应有的所有特征。虽然本实验只是一个规模很小的微型编译器的开发,作为一次较为完整的编译开发实践,它已经足够透彻地了解一个编译器开发过程,又能更深刻地理解和运用编译开发过程中的众多技术和方法,并能在此基础上针对编译器的优化展开深入的讨论,这些对于自己以后的研究和发展方向将起到非常大的推动作用。 1.3 编译原理的发展情况 在编译器原理的进化历程里,提高编译的效率始终是编译器专家挖掘的领域之一,编译效率指的是根据编译

文档评论(0)

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

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

1亿VIP精品文档

相关文档