分享

浅谈编译原理近期发展

 贤人好客 2010-06-13

关键词:编译原理历史变更 编译工具 实践性 课程教材龙书发展

 

一、编译原理的历史发展

第一个编译程序的出现是在20世纪50年代早期,很难讲出确切的时间,因为当初大量的实验和实现工作是由不同的小组独立完成的,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。
  随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展.还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。

 

二、编译原理工具的具体发展

随着大规模集成电路、网络通讯和其它数字信息技术的迅速发展,目前嵌入式系统己经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术等各方面,在人们日常生活中的方方面面到处是嵌入式系统设备的身影,如手机、PDA、智能家电以及汽车电子等。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术和人们的生活结合越来越紧密,人们日常的工作、学习和生活方式终将不可避免地逐步改变,嵌入式产品正在逐步形成时尚,在当今的信息社会中扮演越来越重要的角色。

嵌入式系统一般指的是非PC系统,它包括完全植入嵌入式硬件内部的为特定应用设计的专用计算机系统,以及相应的硬件。嵌入式系统以应用为中心的,它的软硬件可以根据需求进行裁减,以此来适应目标系统对外形尺寸、功能、可靠性、成本、功耗、外部接口等方面的严格要求。简单地说,嵌入式系统集操作系统、应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合要求实时和多任务的应用。

    由于嵌入式系统资源有限,一般无法提供编译、汇编、链接等工具,同时也很难提供高级调试功能,因此嵌入式系统的应用软件一般不能直接在嵌入式系统平台上进行开发,而需要在交叉编译环境中开发。也就是说通常是在另外的开发平台上开发的,一般这种开发平台由通用的计算机系统和专用的嵌入式系统软件开发工具组成。

编译实现方式的发展主要分一下五类:手工、机器语言、汇编、系统程序设计语言、自动构造工具lex yacc gcc。推动编译技术发展的因素主要包括:语言范型(计算模式)、计算机体系结构语言范型主要包括:命令式(imperative language) 、应用式(applicative) 、基于规则的(rule-based)、面向对象的(object-oriented)、并行计算(parallel computing)。

体系结构主要包括:万诺曼机体系结构、并行体系结构、嵌入系统。编译程序执行环境主要包括:批处理、交互环境、嵌入系统环境、并行编译技术、交叉编译。  编译程序在一个机器(宿主机)上运行,产生另一个机器(目标机)的汇编语言。嵌入式系统中的应用程序正是借助这样的编译程序生成。

目标处理器MIPSX是MIPS系列芯片的种,属于RISC体系结构,来源于斯坦福大学的MIPS计划。由于该系列CPU不是采用加州大学伯克利分校的RISC窗口技术而是采用消除流水线各级互锁的微处理器MIPS(MicroprocessorWithout Interlocking Pipeline Stage)技术,因此而得名。MIPS是将IBM公司对优化编译程序的研究和加州大学伯克利分校的大规模集成电路的思想结合起来的产品。

  由于RISC指令集的简单和整齐,为了达到更好地利用计算机的性能,MIPS系列芯片中很好地应用了流水线策略。流水线是现代各类微处理器都采用的指令执行技巧,即将若干条指令的取指、译码和执行过程部分重叠在流水线中同时执行。以前在CISC计算机中,由于指令多而复杂,处理每条指令的所需时间不固定,当后面指令需要前条指令的结果时,往往造成指令互锁,因此无法实现流水线。而斯坦福大学的MIPS计划就是在编译的过程中,利用编译程序优化处理器的流水线以求提高处理器流水线的效率。由于采用了硬件连线控制来执行数目不多的简单指令,而且还能重组软件流水线,这样就减少了硬件复杂性。

来源:(http://blog.sina.com.cn/s/blog_5a5dec0a0100c8uz.html?retcode=0) - 浅谈编译原理近期发展_ruan_新浪博客

但是由于存在数据和指令转移的相关性,这会引起流水线的停顿,降低流水线整体的执行速率。为了调整这些相关性,又开发出了代码重组技术,其中一种是延迟转移(delayed branch),另一种叫延迟装入,提升了性能。

 MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品被很多计算机公司采用生产各种工作站和计算机系统。R系列遵循按比例提高性能设计技术,按不同工艺技术实现基本相同的体系结构,其适用范围从低端的嵌入式控制器、个人计算机到高端的超级小型机、服务器甚至大型机和巨型机,而且系统软件和应用程序都是兼容的。MIPS公司在1986年推出82000处理器,1988年推出83000处理器,1991年推出第一款64位商用微处理器84000。之后,又陆续推出88000(于1994年)、810000(于1996年)和812000(于1997年)等型号。1999年,MIPS公司发布MIPS 32和MIPS 64架构标准。2000年,MIPS公司发布了针对MIPS 32 4Kc的新版本以及未来64位MIPS 64 20Kc处理器内核。

 在整个R系列中82000/82010是最基础的原型;83000/83010是82000/82010的增强型产品;由于84000采用高精度的CMOS工艺,因此其性能很高,用途很广;而86000/86010是ECL电路化的高速品种,但是由于86000/86010的功耗大,成本高,所以其应用受到很大限制。但是MIPSX并不属于以上提到的CPU中的任何一种,它是由20世纪80年代后期由美国国防部高级研究项目署(DARPA)资助的一个项目的成果。因此,基于MIPSX的交叉编译工具链研究虽然现有的GNU交叉编译工具链对MIPS公司R系列芯片的支持很好,但还是缺乏对MIPSX的有效支持,所以还是需要进行移植。进行移植工作前,必须首先了解MIPSX的体系结构。经过实验室前几届师兄的分析,我们得知MIPSX的体系结构与MIPS公司R系列芯片中的82000最为接近,当然它们在很多地方还是存在着差别,比如具体指令集的不同,比如MIPSX没有浮点操作;MIPSX指令的基本操作码只占5位;MIPSX在跳转指令中的延时槽有两条等。

 

三、编译原理课程教材和实践性的发展

“编译原理”课程分析编译原理课程一般利用常用软件如C,Pascal等来构建编译的各部分程序,编译原理的构成包括词法分析,语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。编译原理课程的学习可以对程序设计语言的设计和实现有深刻的理解,还可以有助于快速理解定位和解决在程序编译、测试与运行中出现的问题。编译程序规模大。由于编译原理是一个极其复杂的系统,程序规模大,将它肢解开来一部分一部分地研究。理论知识抽象。要完整地构造一个编译系统并不是一件容易的事情,它不仅需要具有较完备的软件知识,并需要掌握现有的软件工具的使用,而且更重要的是要有丰富的实践经验,了解硬件系统结构和操作系统的功能。算法的理解和实现。编译原理这门课包含许多理论知识和算法,这些理论的学习和理解都存在着一定的难度。其中理论知识包括:词法分析器的构造,语法中各种分析器(LR,LL,SLR,LALR等)实现与完成。

在编译原理的不断发展和完善过程中,一本本课程教材接踵而至,其中不乏非常优秀的“名书”。编译领域里程碑式的经典著作——龙书,20年后终于出新版!这是一个延绵30年的故事,这是一部关于龙书的传奇!最新版本,增添三章节内容,使龙书地位更权威! 1977年,Alfred V. Aho 和Jeffrey D. Ullman 出版《Principles of Compiler Design 》,封面是一名骑士和一只恐龙,因此第一次被人称为龙书,但因为那条龙是绿色的,所以称为绿龙书。过了9年,1986年,原来的两位作者加上Ravi Sethi, 升级了前一本书,书名改为《Compilers: Principles, Techniques and Tools》,封面依然沿用骑士和恐龙,那头龙是红色的,因此被叫做龙书二或者是红龙书。又过了一个9年,又一个9年,编译领域的巨无霸--龙书始终都没有升级。终于在2006年年底,龙书升级了。作者又增加了Monica S. Lam,名字沿用《Compilers: Principles, Techniques and Tools》,封面依然保持恐龙和武士的设计,但这次的龙是紫色,因此叫做紫龙书。

本书全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,本书进行了全面的修订,涵盖了编译器开发方面的最新进展。每章中都提供了大量的系统及参考文献。本书是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参考读物。Alfred V. Aho是哥伦比亚大学的Lawrence Gussman计算机科学教授。 Aho教授多次获奖,其中包括哥伦比亚校友会颁发的2003年度Great Teacher奖和电子与电器工程师协会的Jonh von Neumann奖章。他是美国国家工程院院士,以及ACM和IEEE的会员。Monica S. Lam是斯坦福大学的计算机科学教授。她曾经是Tensilica 的首席科学家,并且是moka5的创建者和首席执行官。她领导了 SUIF项目。该项目开发了最流行的研究性编译器之一,并首创了很多在工业界得到应用的编译技术。Jeffery D.Ullman是Gradiance公司的首席执行官和Standford大学的StanfordcW.Ascherman计算机科学(名誉退休)教授他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础软件的教育技术.他是美国国家工程院的院士,ACM的会员,并且是 Karlstrom奖和Knuth奖的获得者。

 

四、总结

在编译原理领域的技术人员和专家的共同努力下,编译原理近几年在各方面都有了迅猛的发展。特别是能在最前沿有所进步,这是顶尖科学工作者不懈努力的结果。在编译工具方面,也有了一定的发展,由于编译原理产生时间并不是很久,能有现在的发展应该说是很不错了。对于编译课程,也在不断进行改革,通过教育来培养更多编译领域的人才。

 

参考文献

[1]王一宾,基于面向对象的编译原理实验的研究[J],安徽:安庆师范学院学报(自然科学版),2002.

[2]刘欣欣,“编译原理”双语教学的实践与探索[J].长春:长春师范学院学报.2005.02.

[3] http://10.1.136.24/kns50/detail.aspx?QueryID=261&CurRec=13.

[4]AlfredV.Aho.RaviSethi.JeffreyD.Ullman.compilers:Principles,Techniques,and Tools[M].Pearson Education出版集团。2002.

[5]程虎,一个自动编译系统ACS[J],浙江:软件学报,1991.0.

[6] http://www./article/tech-35105.htm.

[7]冯钢,基于GCC的嵌入式系统编译器研究和开发浙江大学硕士论文,March 2004.

[8]石教英,计算机体系结构 浙江大学出版社 p175.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多