当前位置:首页 期刊杂志

编译技术的发展

时间:2024-05-04

贾巧兰 河南大学软件学院

机器语言是机器直接能够识别的语言,汇编语言与机器有关,属于低级语言,需要进行编译之后才可运行。编译技术的必要性来自于汇编语言的缺点:阅读和理解较为困难、编写过程不易且严格依赖于特定的机器,因此,编译技术应运而生。

1 产生的必然

在20世纪40年代,由于冯.诺伊曼在存储-程序计算机方面的先锋作用,为使计算机能够执行所需的计算,编写一串代码或程序已成必要。起初,这些程序都是用机器语言(machine language)进行编写。机器语言就是表示机器实际操作的数字代码,但编写这样的代码十分费时和乏味,这种代码形式很快就被汇编语言(assembly language)所代替。在汇编语言中,都是以符号形式给出指令和存储地址的,大大提高了编程的速度和准确度,但是由于汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写,费时费力。

2 发展

20世纪50年代早期,由于当初大量的实验和实现工作是由不同的小组独立完成的,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分基础且有限,如只允许进行简单的单目运算,数据元素的命名方式也有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。

20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序;70年代后期和80年代早期,大量的项目都贯注于编译器其它部分生成自动化,其中也包括代码的生成。

3 编译技术

3.1 目前流行的编译技术

目前流行的编译技术主要有:并行编译技术、交叉编译技术、动态编译技术。并行编译技术首先利用重构技术将串行程序并行化,将已有的串行语言编写的程序经过相关分析分解成可并行的成分分配到CPU或多处理机上运行,最后直接编写并行程序;由于目标机的指令系统与宿主机的指令系统的不同,通常使用交叉编译技术把某个机器(宿主机)上已有的软件移植到另一台(目标机)上,主要是编译程序在宿主机A上运行把应用程序的源程序生成目标机B的代码;动态编译技术即编译运行时的程序变换,是优化利用在运行时提供的信息对程序提供更安全的优化,因此利用动态编译技术可大大扩大优化范围从而能够产生更有效的代码。

3.2 构造编译程序的方法

自展法:主要特征即用被编译的语言来书写该语言自身的编译程序。1971年PASCAL的编译程序用自展技术生成后,其影响就越来越大;自动生成法:典型的自动生成工具有LEX-词法分析器和YACC-语法分析器;自编译:主要思想是用目标机的汇编语言或机器语言对源程序的核心部分构造一个小小的编译程序,再以它为工具构造一个能够编译更多语言成分的较大编译程序。

3.3 编译技术的应用

编译技术的应用主要有:在反病毒方面、基于编译技术的可信赖计算方法以及基于编译技术的协议解析方法。

4 编译技术未来的发展

4.1 多核处理器编程

由于不同结构的处理器核的指令集不同,需要生成在不同处理器核上执行不同的执行码,因此编译过程更加复杂,为了提高性能,对编译优化技术的要求也更高。多核处理器的编译过程主要是代码划分、分别编译、执行代码的组织。

4.2 复杂软件系统的安全性和可靠性

所面临的的三个挑战:需要开发相关的工程技术来帮助检测和避免程序缺陷;安全风险-开发相关的策略检测程序对外部攻击的抵御能力;开发自动的程序验证技术

4.3 移动领域的编译技术

随着智能手机的迅速发展,移动领域的编译发展显得尤为重要。利用交叉编译技术来跨平台,将具备更强的竞争优势,未来或将在几种主要的移动设备开发技术中脱颖而出。

5 总结

编译技术是人类智慧到机器执行的桥梁,软件到硬件层层推进的衔接力量!

[1]张亚娟、冯灵霞、王雪春.编译技术的发展及应用2010

[2]陈火旺、刘春林、谭庆平、赵克佳、刘越.程序设计编译原理1980

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!