《深入理解LLVM》第一章 LLVM簡介
第一章 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】。
———未完待續————–
宣告:本部落格內容均為原創,如若轉發,請一定標明出處。禁止用於商業目的。