
编译技术的过去、现在和将来课件.ppt
26页编译技术的过去 现在和将来,编译原理讨论组第六组,,内容大纲,1、编译技术的起源,2、目前流行的编译技术,3、编译技术未来的发展方向,编译技术的起源,,,编译技术的起源,为什么会出现编译技术,,编译技术的起源,机器语言:C7 06 X 0002 汇编语言:MOV X,2 高级语言:x = 2,机器语言是机器直接能够识别的语言 汇编语言与机器有关,属于低级语言,需要进行编 译才能让机器运行 所以编译技术的出现是必然的初期,*编译工作是将算术公式翻译成机器代码 *功能简单、限制较多,中期,末期,,,编译技术在20世纪50年代的发展,*出现了FORTRAN等一批高级语言,,,*开始研究编译程序的自动生成工具,20世纪60年代起,不断有人使用自展技术来构造编译程序,1971年,70年代后期 80年代早期,,,PASCAL的编译程序用自展技术生成后,影响就越来越大,,,贯注于编译器其它部分的生成自动化,60年代到80年代的编译技术,,当时流行的几种编译语言,FORTRAN语言(FORmula TRANslator公式翻译) ALGOL语言(ALGOrithmic Language算法语言) LISP语言 BASIC语言(BASIC language) PASCAL语言,now,目前流行的编译技术,,,目前流行的编译技术,并行编译技术,,,,重构技术,串行程序,并行程序,,,直接编写并行程序,,目前流行的编译技术,,,,交叉编译技术,由于目标机的指令系统与宿主机的指令系统不同,编译程序在宿主机A上运行把应用程序的源程序生成目标机B的代码,这种编译技术称为交叉编译技术。
目前流行的编译技术,,,,动态编译即编译运行时的程序变换,是利用在运行时提供的信息对程序提供更完全的优化因此利用动态编译技术可大大扩大优化范围从而能够产生更有效的代码动态编译技术,,构造编译程序的方法,,,,主要特征: 用被编译的语言来书写该语言自身的编译程序1971年PASCAL的编译程序用自展技术生成后,其影响就越来越大自 展 法,,构造编译程序的方法,,,,典型的自动生成工具 LEX------词法分析器 YACC----语法分析器,自 动 生 成 法,,构造编译程序的方法,,,,主要思想: 用目标机的汇编语言或机器语言对源程序的核心部分构造一个小小的编译程序,再以它为工具构造一个能够编译更多语言成分的较大编译程序自 编 译 方 式,,目前流行的编译技术,基于编译技术的协议解析方法,编译技术的应用,,,,,,编译技术在反病毒方面的应用,基于编译技术的可信赖计算方法,,目前流行的编译器--移动端,,目前流行的编译器--PC端,编译器和IDE,可以编译C,JAVA,C#和C++,调试Javascript、CSS、HTML和CoffeeScript的免费工具,,PL/0编译器由来,PL/0语言,作为一个教育用的编程语言,和通用编程语言Pascal有些类似但是要简单得多。
作为如何构建一个编译器的一个例子它最初是出自Niklaus Wirth于1975年写的算法+数据结构=程序一书中它具有非常有限的语言构造:没有实数,只有很少量的基本算术运算,除了if和while语句块以外没有其他的控制流虽然这些限制使这种语言在实际应用中受到限制,但它却有助于编译器保持紧凑和简单编译技术未来的发展,,?,,编译技术未来的发展方向,多核处理器编程 复杂软件系统的安全性和可靠性 移动领域的编译技术,,多核处理器编程,对于异构多核处理器: 由于不同结构的处理器核的指令集不同,需要生成在不同处理器核上执行的不同的执行码,因此编译过程更加复杂; 为了获得高性能,对编译优化技术的要求也更高 *多核处理器的编译过程 1. 代码划分 2. 分别编译 3. 执行代码的组织,,复杂软件的安全性和可靠性,三个挑战: 1. 需要开发相关的工程技术来帮助检测和避免程序缺陷; 2. 安全风险-------开发相关的策略检测程序对外部攻击的 抵御能力; 3. 开发自动的程序验证技术移动领域的编程技术,随着智能的迅速发展,移动领域的编译发展显得异常重要 利用交叉编译技术去跨平台,将具备更强的竞争优势,未来或将在几种主流的移动开发技术中脱颖而出。
我们的问题,最早出现编译器概念的原因是因为出现了汇编语言吗? 答: 汇编出现以后才有编译器,编译器是为了转换高级程序语言 进一步探索编译器的产生:任何编译器都没有的时候,是汇编器,再往前是机器码;编译器本身也是程序,通常也是c语言写的,世界上第一个编译器的部分内容只能用机器码写,但机器码建立的一些文本处理功 能后,用这个功能处理宏文本来代替机器码THANKS,。
