编译原理讨论课报告.doc
《编译原理讨论课报告.doc》由会员分享,可在线阅读,更多相关《编译原理讨论课报告.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、燕山大学 编译原理课程讨论课报告 题目:编译技术的过去现在未来(第12组)学 院 信息学院 年级专业 12计算机科学与技术 学 生 姓名 朱禹铭 应用2班、所完成工作量20张浩楠 应用2班、所完成工作量20王毅龙 应用2班 所完成工作量15 史万春 应用2班 所完成工作量15甄晓德 应用2班 所完成工作量10张政 应用2班 所完成工作量10池辰 应用2班 所完成工作量10 指导教师 张世辉 报告日期 2014年11月 20日 我们的讨论课的题目是编译技术的过去、现在和将来。其中又有3个小题目分别是(1) 早期的编译技术(2) 目前流行的编译技术(3) 未来的编译技术。接下来我们的报告也将分为这
2、三方面进行。一丶编译技术的过去编译技术的过去主要分成三部分,首先是编译技术出现的必要性,几种当时的编译原理和编译器的发展。我们将编译器的发展作为了主要部分。并且附加上国内的编译器发展。1. 编译技术出现的必要性在20世纪40年代,由于冯诺伊曼在存储-程序计算机方面的先锋作用,编写一串代码或程序已成必要,这样计算机就可以执行所需的计算。开始时,这些程序都是用机器语言(machine language )编写的。机器语言就是表示机器实际操作的数字代码,例如:C7 06 0000 0002 表示在IBM PC 上使用的Intel 8x86处理器将数字2移至地址0 0 0 0 (16进制)的指令。但编
3、写这样的代码是十分费时和乏味的,这种代码形式很快就被汇编语言(assembly language )代替了。在汇编语言中,都是以符号形式给出指令和存储地址的。例如,汇编语言指令 MOV X,2 就与前面的机器指令等价(假设符号存储地址X是0 0 0 0 )。汇编程序(assembler )将汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。汇编语言大大提高了编程的速度和准确度,人们至今仍在使用着它,在编码需要极快的速度和极高的简洁程度时尤为如此。但是,汇编语言也有许多缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另
4、一台计算机时必须完全重写。发展编程技术的下一个重要步骤就是以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。例如,前面的汇编语言代码可以写成一个简洁的与机器无关的形式 x = 2。第一个编译程序的出现是在20世纪50年代早期,很难讲出确切的时间,因为当初大量的实验和实现工作是由不同的小组独立完成的,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出
5、现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为
6、操作太复杂而人们又对其不甚了解。2. 几种当时流行的编译语言1) Fortran语言Fortran源自于“公式翻译”(英语:FormulaTranslation)的缩写,是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran 90之前的版本是人们所知晓的FORTRAN(全部字母大写),从Fortran 90以及以后的版本都写成Fortran(仅有第一个字母大写)。Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对
7、矩阵和复数进行运算,这一点类似MATLAB。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。2) Pascal语言 Pascal是一种计算机通用的高级程序设计语言。它由瑞士NiklausWirth教授于六十年代末设计并创立。以法国数学家命名的Pascal语言现已成为使用最广泛的基于DOS的语言之一,其主要特点有:严格的结构化形式;丰富完备的数据类型;运行
8、效率高;查错能力强。正因为上述特点,Pascal语言可以被方便地用于描述各种算法与数据结构。尤其是对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。IOI(国际奥林匹克信息学竞赛)把Pascal语言作为三种程序设计语言之一,NOI(全国奥林匹克信息学竞赛)把Pascal语言定为唯一提倡的程序设计语言,在大学中Pascal语言也常常被用作学习数据结构与算法的教学语言。在Pascal问世以来的三十余年间,先后产生了适合于不同机型的各种各样版本。其中影响最大的莫过于TurboPascal系列软件。它是由美国Borland公司设计、研制的一种适用于微机的Pascal编译系统。该
9、编译系统由1983年推出1.0版本发展到1992年推出的7.0版本,其版本不断更新,而功能更趋完善。3. 编译器的发展1.编译器的发展编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码(sourcecode)预处理(preprocessor)编译器(compiler)汇编程序(assembler)目标代码(object code)链接器(Linker)可执行程序(executables)。编译器将源程序(Sourceprogram)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高级语言(High-leve
10、llanguage),如Pascal、C、C+、C#、Java等,而目标语言则是汇编语言或目标机器的目标代码(Objectcode),有时也称作机器代码(Machinecode)。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(ChomskyHierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsingproblem,用于上下文无关文法
11、识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分有限状态自动机(FiniteAutomaton)和正则表达式(RegularExpression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(OptimizationTechnique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改
12、进技术(CodeImprovementTechnique)。 当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(ParserGenerator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(YetAnotherCompiler-compiler),它是由SteveJohnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(ScannerGenerator)的工具,Lex(与Y
13、acc同时,由MikeLesk为Unix系统开发)是这其中的佼佼者。在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包
14、括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。在九十年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个
15、编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。2. 国内编译器的研发历史 早在60年代初期,董韫美院士和杨芙清院士就分别在中科院和北大领导研究组开发编译器,那时面向的高级语言是ALGOL和FORTRAN,目标机是国产机。在改革开放前,由于国家需要,中科院、国防科大、江南计算所、北大等单位一直在研制国产计算机,包括大型机和高性能计算机(如向量机、并行机),相应的也在研制高级语言编译器。中科院计算所以董韫美院士领导的研究组先后开发了119机、109机的类ALGOL语言编译器BCY。国防科大开发了向量编译器和向量识别器。70年
16、代中科院计算所张兆庆教授研究组(以后称ACTGroup)开始在国产机上研制FORTRAN语言编译器,先后参与了众多的院级和国家级科研攻关项目,主持开发了013,757,KJ8920等国产大型机系统中的FORTRAN语言编译器,所研制的编译器支持了数百万行应用软件的运行。90年代以来ACTGroup承担科学院重大项目,国家攻关项目,863项目,以及国际合作项目,先后开发了共享内存多处理机的并行识别器,分布式内存多处理机的并行识别器,SIMD芯片和VLIW芯片的并行优化C编译器。将编译技术与图形学结合,ACTGroup还推出了集成化、可视化的并行编程环境。ACTGroup在先进编译技术和并行编程环
17、境方面的研究工作获国内外专家高度评价,国际著名学者评价此研究组居编译领域的世界先进行列。 (2) 目前流行的编译技术当今的编译技术飞速发展,出现越来越多的编译技术,并且在实际应用越来越广泛。接下来这样介绍几种流行的编译技术。1) 并行编译技术为了提高计算机体系结构的性能满足超大规模计算的日益增长的需求近几年并行机及多处理机的发展极其迅速而用户在这类计算机上能获得的实际运行速度在相当程度上还取决于并行程序设计和并行编译技术的水平。因此并行编译系统已成为现代高性能计算机系统中一个重要的部分。目前处理并行编译技术有以下两种方法。1利用重构技术将串行程序并行化。将已有的串行语言编写的程序经过相关分析分
18、解成可并行的成分分配到多CPU或多处理机上运行这种技术在国内已有FORTRAN语言和C语言的并行重构处理系统。2直接编写并行程序。编写并行程序要比编写串行程序的要求高编程者自己必须知道程序各模块之间的逻辑结构关系及调用关系以确定哪些模块可以并行执行。这种直接编写的并行程序要比利用重构技术改写的并行程序效率高。并行编译技术是针对并行机和并行程序的,是一种实现多个处理机同时执行一个程序的技术。不同的并行程序设计技术要用不同的并行编译技术来支持。可以把并行编译技术分成串行程序并行化技术,并行语言处理技术,并行程序组织技术三个方面。 并行编译系统的功能并行编译系统的功能是将并行源程序转换为并行目标代码
19、。可分为以下两类1. 不具有自动并行功能的系统2. 具有自动并行化功能的系统并行编译系统的结构向量编译系统包括向量化工具和向量编译器。并行编译系统包括并行化工具,并行编译系统和并行运行库等,其结构如下图所示。 国内的并行编译技术 90年代以来,国内主要以研制并行机为主,相应的并行编译器研制也在国内开展起来。代表性的成果有:上海复旦大学朱传琪教授研究组研制的面向共享存储并行机的并行优化编译器AFT达到世界领先水平。清华大学汤志忠教授研究组在软流水优化技术上做了很优秀的研究工作。清华大学郑纬民教授研究组开发了交互式并行化系统TIPSExplorer,北京大学许卓群教授、李晓明教授研究组在HPF(H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 讨论 报告
限制150内