编译原理讨论课报告.doc

上传人:飞****2 文档编号:78908741 上传时间:2023-03-19 格式:DOC 页数:12 大小:155KB
返回 下载 相关 举报
编译原理讨论课报告.doc_第1页
第1页 / 共12页
编译原理讨论课报告.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《编译原理讨论课报告.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

20、igh Performance Fortran)编译器方面做了多年工作,取得很好的研究成果。此外,国防科大、江南计算所等单位也都有从事并行编译技术研究。随着芯片研制,国内还有若干单位也在开展基于GCC生成面向特定芯片的编译器工作。自动并行编译为并行化现有的串行程序及编写新的并行程序提供了重要的支持,因此20多年来一直受到重视。近几年来,自动并行编译技术的研究进展,包括在依赖关系分析,程序变换,数据分布和重分布及调度等方面的进展,将自动并行编译进一步推向了实用化。该文介绍了自动并行编译技术的最新进展,并提出了进一步的研究所要解决的问题。自动并行编译为充分发挥并行计算环境不断增强的计算能力提供了一

21、条重要的途径I它有以下优点:1.在缺乏被普遍接受的并行程序设计语言的情况下,自动并行化工具能有效地解决代码的可重用和可移植问题;2.解决了用一种语言难以显式地表达从指令层到任务层各个层次的并行性,并进行基于体系结构的优化问题。3.自动并行化工具为大量存在于应用领域的,并经过长时间的设计,使用和测试的成熟大型串行应用程序的并行化提供了唯一可行的选择。自90年代以来,对自动并行编译技术的研究有了很大的进展,产生了一批有代表性的自动并行化系统,国外的有SUIF,polaris;国内的有JAPS,FAT.通过对这些系统的开发,人们提出了很多实用技术,涵盖了数据依赖关系分析,程序变换L数据分布及调度等方

22、面的内容,下面依次对这些技术作简要的介绍.依赖关系分析循环体中的依赖关系分析和过程间依赖关系分析的质量决定了数据并行性和任务并行性的开发程度,多年来,它们一直是研究的热点,近几年的研究成果更是进一步地推动了自动并行的实用化.指针分析是对c,c+程序并行化不可缺少的工作循环体中的依赖关系分析循环占用了串行程序的绝大部分执行时间,因此,对循环体的依赖关系分析一直是最受关注的.早期的工作主要集中于数组是线性下标的精确方法和运行速度足够快的近似方法,分析也都是静态的.因此,在大多数情况下只能得到保守的结果.omega test使用整数规划,综合得到了速度快且精确的结果.range test突破了线性下

23、标的限制.RPT和LROT依赖于输入.静态所不能确定依赖关系的循环进行了动态并行化.另外需要进一步研究的问题开发通用的编译器研究平台,编译技术如果脱离了编译器是没有意义的,为了使新的编译技术能容易地集成于编译器上,以便测试和评价其性能,从而提高编译器技术的研究质量及加快研究的进展,需要可靠的模块B独立的编译器平台。1.收集大量的与实际应用有关的测试程序,测试编译技术离不开测试程序,能够很好地刻画实际程序性质的测试程序对推进编译器技术的发展具有不可取代的作用。2.开发高效的编译算法,为了将编译器的运行时间限制在可接受的范围内,包括依赖关系分析问题,多种循环重构技术的选择使用和组合问题,数据分布的

24、选择,通信的优化,任务粒度的动态控制等问题,都需要更高效的算法处理。可以考虑采用并行算法3.开发自适应代码的产生算法,由于运行系统的变化性和程序对输入的依赖,为了提高加速比,需要开发产生自动适应系统变化和程序输入的代码的算法,包括运行时刻的依赖关系分析问题,运行时的数据分布和动态调度的算法。2)动态编译技术动态编译即运行时编译运行时的程序变换。由于下述原因面向对象语言和技术在当代软件开发中的使用已导致较大程度的延迟绑定限制了可供静态编译器分析的范围分别编译和共享库编译器不一定能够看见所有的代码有些信息如运行时常量值信息在编译时是不能确定的运行环境是不断变化的。动态编译优化利用在运行时提供的信息

25、对程序提供更完全的优化。因此利用动态编译技术可大大扩大优化范围从而能够产生更有效的代码。目前对动态编译的研究主要集中在3个方面运行时特定化根据运行时常量将程序代码特定化然后在其中做各种优化工作。如常量传播、循环展开Justintime编译主要针对Java程序进行的运行时编译并根据profiling收集到的profile信息进行自适应的优化动态的二进制代码转换和优化将针对一种体系结构产生的目标码直接移植到与之不同的另一类体系结构上运行。当前编译器技术的限制是已有的技术都已经达到相当成熟的阶段在此基础上有重大突破比较难。现在的发展只是各种技术的综合或者是针对十分具体的现象进行专门的优化达到加速某种

26、算法模式的目的3)交叉编译技术一个高级语言往往需要在不同的目标机上实现这就提出了如何把已在某机器上实现的一个高级语言的编译程序移植到另一个目标机上的问题。通常把某个机器称为宿主机上已有的软件移植到另一台器称为目标机上的过程称为移植在移植过程中也常会用到交叉编译的技术。由于目标机的指令系统与宿主机的指令系统不同编译程序在宿主机A上运行将应用程序的源程序生成目标机B的代码这种编译技术称为交叉编译技术。嵌入式系统中的应用程序正是借助这样的编译程序生成的近年来嵌入式应用的迅速增长推动了交叉编译技术的发展。编译技术的应用1) 编译技术在反病毒方面的应用被病毒感染的网页类文件经过词法分析和语法分析就可得到

27、一有限自动机软件即虚拟机此种方式的查病毒虚拟机不同于以前虚拟机查毒方式以前查杀病毒时的环境就像一个高级机械手打开、定位、查杀而此种方式则是类似一个智能探测器打开、分析、查杀。2) 基于编译技术的可信赖计算方法从源数据流区分部分项逐一调入表达式的字符串形式进行语法检查、拼成单词、生成逆波兰式和逆波兰式的翻译4个阶段进行处理为BS体系结构下的工程招投标双方的标底和标书搭建了清单审验的平台3) 基于编译技术的协议解析方法基于编译技术的协议解析方法用形式化描述的方法对协议进行描述实现了与协议无关的协议解析和处理从而避免了针对不同通信协议均要编写相应的解析和处理程序使协议的解析和处理具有更好的灵活性和普

28、适性。(3) 未来的编译技术未来的编译技术向多核和多线程架构演变,并且软件系统正在日益复杂化,使解决程序缺陷和安全攻击问题变得更为迫切。1. 多核处理器将迅速发展,异构多核处理器也会大量出现并 应用于越来越多的领域。从消费类电子产品到超级计算机,都可能成为异构多核处理器大显身手的用武之地但是异构多核处理器是开发芯片内并行的微处理器,这类处理器的出现并不会引起编译技术中重大的技术变革,只是给已有的编译优化技术提出了一些新的约束条件。面向这些新的约束条件,需要对已有的编译优化技术在原有的基础上进行进一步的研究。对于异构多核体系结构,编译系统面临的挑战仍然围绕着并行这一主题,从核内的指令级和向量级并

29、行到核之间的线程级和任务级并行,需要解决的基本问题仍然相同。但是,在高度集成的过程中,它同时还允许更紧密的协同工作、更大和更灵活的交互操作。在开发其性能潜力的过程中,需要多种编译优化技术相互配合。2. 编译器将在提升程序的安全性和可靠性方面越来越重要。最近几年,产品级的编译器都没有理由不提供这些安全保证,至少也应该为那些对安全敏感的软件提供特殊的安全选项支持。此外,这些支持支持也可以利用一个相比机器码生成更强大的安全和可靠性技术保证的强类型虚拟机来实现。1)多核处理器编程-Cost of programming multicore processors 异构多核处理器的结构特点 异构多核处理器

30、正是针对特定领域问题的特殊性进行了处理器核心的异构设计,即将典型工作负载中不同类型的操作进行区分,分别用不同的处理器核来处理,以期获得整体上的高性能。因此,异构多核处理器的结构特征是:片内的多个处理器核按适用性分成多类(通常是2类):一类执行控制密集的操作;另一类执行计算密集的操作。当然,每个处理器核并不是仅能执行计算或控制操作,而只是对其中一类操作更适合而已。例如,面向控制密集操作的处理器核肯定也需要一定的数值计算能力,而处理数据密集操作的处理器核也需要能够完成简单的控制操作。面向异构多核处理器的编译技术目前,微处理器性能的充分发挥,越来越依赖于编译器,异构多核处理器更是如此。对于异构多核处

31、理器而言,由于不同结构的处理器核的指令集不同,需要生成在不同处理器核上执行的不同的执行码,因此编译过程更加复杂,同时,为了获得高性能,对编译优化技术的要求也更高。编译的一般流程面向异构多核处理器的编译过程,一般要经过如下若干步骤。1代码划分要把用高级语言编写的程序编译成可在异构多核处理器上运行的执行代码,首先要区分哪些代码在哪类处理器上运行。如果这部分工作由编译器自动完成,往往困难较大,并且性能低。解决的办法通常是在源代码中添加指导语句,以便区分哪些源代码所描述的操作在哪类处理器上运行。编译过程中的代码划分工作就是要识别这些指导语句,将在不同目标处理器核上执行的代码分离开,分别进行编译。2分别

32、编译这一步工作就是针对需要在不同类型的处理器核上执行的代码,分别调用面向目标处理器核的编译器,将其编译成执行代码。因此,在这一步可能要调用多个编译器。3执行代码的组织这一步需要解决的问题是,采用什么方式将要在不同处理器核上执行的目标代码组织成一个操作系统环境下的运行实体(可执行程序)。通常的做法是:运行实体在通用的标量处理器上加载执行,而将要在从处理器上执行的目标码作为该执行实体(可执行程序)的数据段中的一部分或者作为该执行实体运行时读取的数据文件。 经过以上3步,就完成了用户代码到执行程序的编译过程。在运行过程中多个处理器核之间的协同常常还需要运行时系统提供支持。向异构多核处理器的关键编译技

33、术有以下几个方面。1面向SIMD结构的编译SIMD结构是能充分利用处理器上大量的功能部件进行大规模数据并行计算的典型结构。面向这种结构,通常采用自动向量化编译技术。自动向量化是自动并行化的一种,尽管自动并行化相当困难,但仅仅面向程序中进行数据密集计算的循环来进行自动向量化是可行的。早在向量并行计算机为主流并行计算系统的时代,就已经开始了对自动向量化技术的研究,如今已经有了相当多的积累。采用SIMD结构的异构多核处理器的出现,又进一步推动了自动向量化编译技术研究的发展。2通信调度异构多核处理器芯片内的通信包含多个层次:单个从处理器内多个ALU15之间的数据传递、多个从处理器核之间的数据传递以及整

34、个芯片内多个处理器核之间的数据传递。为了最大限度地开发异构多核处理器的并行性能,这些通信往往都暴露给编译器,由编译器根据对程序行为的分析来控制这些数据传递。异构多核处理器中,多个从处理器核之间的通信以及整个芯片内多个处理器核心之间的通信也有多种实现结构,面向特定的通信实现结构在编译时进行优化是异构多核处理器编译优化技术的重要方面。 3片上多处理器访存调度处理器和存储器的速度差距一直是计算机系统的性能瓶颈,异构多核处理器也是如此。进行访存调度来优化存储访问的局部性一直是编译优化研究的重点内容之一。异构多核处理器存储层次设计的趋势是各个存储层次的管理越来越多地暴露给软件(主要是编译器),如软件管理

35、的缓存、软件管理的便签式存储器(ScratchPadMemory)以及软件可见的存储体分配等等。2. 复杂软件系统的安全性和可靠性-Security and reliability of complex software systems 检查程序中的编码缺陷一直都是编译器的一项重要任务。在帮助程序编写方面,高级语言既能简化计算的表达方式,也能帮助识别各种常见的编程错误,包括使用未声明的变量,以及通过日益复杂的类型检查机制能检测的各种语义错误。但要希望编译器帮助避免错误的运行结果以及各种安全隐患,我们还能而且必须在程序分析方面做更多工作。程序正确性和安全性检测工具必须在保证软件可靠性和安全性的前

36、提下尽量减少误报,以避免浪费程序员的时间,而且应能在显示检测结果时排出优先顺序,并加以分类。此外,这些工具还不能对程序的性能和易用性产生消极影响。同应对其它挑战一样,只有通过编译器、语言、库以及运行时系统的紧密结合,才能给出效果最好的解决方案,尤为重要的是,我们认为针对特定问题领域定制的程序分析系统将扮演重要角色。这个领域中最重要挑战就是除错,它一直被称为“Debugging”。其任务是开发相关的工程技术来帮助检测和避免程序缺陷;第二个挑战是安全风险,其目标是开发相关的策略来检测程序对外部攻击的抵御能力;最后一个挑战是开发自动的程序验证技术。 一个行之有效的策略可能会涉及各种分析技术,能够提高

37、生产率和可靠性的新语言特性,新的软件开发范型。不过,处于这些工具和策略核心的依然是先进的编译器以及程序分析技术,它们能在保证所生成代码质量的同时给出符合真实情况的结果,其中衡量质量指标的可能包括执行时间、功耗以及代码规模。除了能生成更加可靠的程序外,这些研究产生的工具还可以使编程专业工作更富成效,因为它们将使开发人员和测试人员可以更集中于那些工作中最有创意的部分。让系统软件的每一个层次都变得安全。近年来,为了解决软件的可靠性问题,人们用复杂的程序分析和变换技术来检测程序,以避免由代码缺陷引起的软件脆弱性(如缓冲区溢出以及悬空指针)。由于任何脆弱性都可以认为是软件缺陷,所以检测和避免软件脆弱性方

38、面面临的挑战性问题与前面讨论的软件可靠性有重叠的地方。然而,它们之间的区别在于安全性策略需要在分析和变换的设计中考虑可能的外来攻击。故而某些技术(例如系统调用认证和防SQL(Structured Query Language,结构化查询语言)注入)只用于计算机安全。最有效的降低风险的策略可能是用具有强类型检查特性的语言编程。与命令式语言的程序相比,函数语言的程序具有更透明的语义,所以程序语言研究者早就说函数语言是降低软件脆弱性的最佳解决方案。强大而高效的验证工具将是对计算实践的重大贡献,但程序验证的重要性远不只限于提高软件的质量。作为形式化推理系统的一个实例,程序验证本身具有重要的智力价值。机器学习方面的研究人员认为,对于开发高级的推理系统,程序验证是一个理想的课题。毕竟,编程是一个研究推理系统的计算机科学家需要真正理解的问题。总结 总得来说编译技术的核心是把同样的逻辑结构和思想从一种语言表示转化为另一种语言表示。 他的发展也与计算机发展密切相关,可以说他集中体现了计算机发展的成果与精华。从高级语言甚至是运行于虚拟平台的高级语言到机器语言最终到硬件执行的物理信号这一层层转化无一不涉及到“编译”这个概念的应用。因此编译技术是人类智慧到机器执行的桥梁软件到硬件层层推进的衔接力量。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com