第一章 LLVM简介
作者:史宁宁
1.1 LLVM是什么
LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题。从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助。但是现在,LLVM所代表的基本和虚拟机没有关系了,也不在作为一个缩写使用了,而是直接作为一个名字使用。那么LLVM到底是什么?
LLVM可以被看作是一系列的编译器和工具链技术的集合,而且它们是模块化并且是可重用的。这是LLVM官方的解释。原话是:The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.【1】官方定义永远是准确的精炼的,那么作为刚刚接触LLVM的初学者,对LLVM的理解是什么呢?
- LLVM是一个编译器;
- LLVM是一个编译器框架;
- LLVM是一系列的编译器工具;
- LLVM是一个编译器工具链;
- LLVM是一个C++实现的开源软件;
这几种对LLVM的理解都对,但是也都是LLVM的一个方面,综合起来就是一个完整的LLVM。所以,从狭义上来说,可以简单的把LLVM理解为一个编译器,但是也必须知道,这个编译器可不仅仅是个编译器,它包含了编译相关的各种工具链,并且有一些相对独立的工具,而且它还是开源的。关键一点不要再搞混了,LLVM是搞编译的,跟虚拟机已经完全没关系了。
每个人对同一个事务的理解都不会完全相同,即使是在技术领域也一样。所以,只要保证对事务理解不出现片面化错误化,使用自己的理解去思考一个事务,要比牢记住官方的定义要好的多,虽然后者往往更加的精确和简约。这是贯彻本书所建议的一个思考方式,只有这样,才能将知识和技术转化为自己的。
1.2 LLVM的发展
LLVM起源于2000年伊利诺伊大学厄巴纳-香槟分校维克拉姆•艾夫(Vikram Adve)与克里斯•拉特纳(Chris Lattner)的研究发展而成,他们想要为所有静态及动态语言创造出动态的编译技术【2】。
LLVM从创立至今,已经走过了十几个年头。在这十几个年头里,它的发展是有目共睹的,它的成绩也是令人值得骄傲的。
2005年,苹果公司雇用了克里斯•拉特纳(Chris Lattner)及他的团队,为了苹果电脑开发应用程序系统,LLVM为现今Mac OS X及iOS开发工具的一部分【2】。同时,LLVM现在也是Google的Android系统中的一部分,特别是在Android系统选着使用了新的运行时ART(Android Runtime)之后,LLVM在Android系统中的比重就得到了更大的提升。
作为开源领域第二大的编译器,甚至在某些方面专门为了替代GCC而实现的LLVM来说,近些年它已经在不断的接近甚至准备超越GCC了。但从性能来说,根据2011年的测试,运行时期的性能,平均GCC比LLVM高出10%的性能;2013年的测试结果,LLVM可以编译出接近与GCC接近相同性能的运行码【2】。
———未完待续————–
声明:本博客内容均为原创,如若转发,请一定标明出处。禁止用于商业目的。