-
LLVM
鎖定
LLVM是構架編譯器(compiler)的框架系統,以C++編寫而成,用於優化以任意程序語言編寫的程序的編譯時間(compile-time)、鏈接時間(link-time)、運行時間(run-time)以及空閒時間(idle-time),對開發者保持開放,併兼容已有腳本。
LLVM計劃啓動於2000年,最初由美國UIUC大學的Chris Lattner博士主持開展。2006年Chris Lattner加盟Apple Inc.並致力於LLVM在Apple開發體系中的應用。Apple也是LLVM計劃的主要資助者。
- 中文名
- 底層虛擬機
- 外文名
- Low Level Virtual Machine
- 簡 稱
- LLVM
- 發源時間
- 2000年
- 開發者
- 伊利諾伊大學
LLVM系統簡介
LLVM 命名最早源自於底層虛擬機(Low Level Virtual Machine)的縮寫,由於命名帶來的混亂,LLVM就是該項目的全稱。LLVM 核心庫提供了與編譯器相關的支持,可以作為多種語言編譯器的後台來使用。能夠進行程序語言的編譯器優化、鏈接優化、在線編譯優化、代碼生成。LLVM的項目是一個模塊化和可重複使用的編譯器和工具技術的集合。LLVM是伊利諾伊大學的一個研究項目,提供一個現代化的,基於SSA的編譯策略能夠同時支持靜態和動態的任意編程語言的編譯目標。自那時以來,已經成長為LLVM的主幹項目,由不同的子項目組成,其中許多正在生產中使用的各種 商業和開源的項目,以及被廣泛用於學術研究。
[1]
LLVM發展歷程
LLVM 是 Illinois 大學發起的一個開源項目,和之前為大家所熟知的JVM 以及 .net Runtime這樣的虛擬機不同,這個虛擬系統提供了一套中立的中間代碼和編譯基礎設施,並圍繞這些設施提供了一套全新的編譯策略(使得優化能夠在編譯、連接、運行環境執行過程中,以及安裝之後以有效的方式進行)和其他一些非常有意思的功能。
[1]
2000年LLVM開始開發。
2005年Apple僱了Chris Lattner,LLVM也相當於成了Apple的官方支持的編譯器。
2011-12-02 LLVM3.0發佈,LLVM包括了一系列子項目,它們也同步發佈了新版本,如C/C++/Objective-C前端Clang 3.0改進了C++程序編譯支持;改進C++ 2011標準支持;實現支持即將發佈的C1x標準的某些特性;更快的生成代碼,更快的編譯,等等。
[3]
LLVM作用
對於普通的開發人員來説,LLVM計劃提供了越來越多的可以使用、編譯器以外的其他工具。例如代碼靜態檢查工具LLVM/Clang Static Analyzer,是一個 Clang 的子項目,能夠使用同樣的 Makefile 生成 HTML 格式的分析報告。
[1]
LLVM優點
對關注編譯技術的開發人員,LLVM提供了很多優點:
現代化的設計
LLVM的設計是高度模塊化的,使得其代碼更為清晰和便於排查問題所在。
語言無關的中間代碼
一方面,這使得透過LLVM能夠將不同的語言相互連結起來;也使得LLVM能夠緊密地與IDE交互和集成。
作為工具和函數庫
LLVM版本發佈
2011年12月2日,LLVM 3.0 正式版發佈了,新版本最大的跨越就是一個全新的寄存器分配器,可提供大幅度的性能提升;完全支持全新 C++ 內存模型中的原子操作;改進了 MIPS 後端;支持 gprof/gcov 風格的 profile 信息。
[6]
2012年5月22日,LLVM 3.1 發佈,是一個主要的更新版本,包含一個新的 AddressSanitizer 工具用於檢測內存錯誤以及一個 ARM 集成彙編工具,另外該版本還提升了機器碼的性能,完整的功能特性可從 preliminary release notes 這裏瞭解到。
[7]
2015年5月26日,LLVM 3.6 發佈。此版本是 LLVM 社區辛苦開發六個月的結果,包括大量 bug 修復,優化改進,Clang 支持更多被提議的 C++1z 功能,更好的原生 Windows 兼容性,本地對象文件中嵌入 LLVM IR,綁定 Go 等等。
[8]
2015年9月2日,LLVM 3.7 發佈。主要更新內容有:完全支持 OpenMP 3.1(behind a flag),the On Request Compilation (ORC) JIT API,一個全新的後端用於 Berkeley Packet Filter (BPF), Control Flow Integrity 檢查,對優化的改進,新的 Clang 警告,許多 bug 修復等等。
[9]
LLVM使用方法
Windows
也可以用VisualStudio 編譯
[11]
Xcode自帶
- 參考資料
-
- 1. 編譯器架構 LLVM .開源社區網[引用日期2012-08-18]
- 2. 編譯器Clang介紹 .51099網[引用日期2012-09-12]
- 3. 編譯器套件LLVM 3.0版發佈採用了全新寄存器分配器 .軟件網[引用日期2012-09-12]
- 4. LLVM榮獲2012年ACM軟件系統獎 .CSDN[引用日期2013-05-24]
- 5. 深入分析LabVIEW 編譯器 .dzsc網[引用日期2012-09-12]
- 6. LLVM 3.0 發佈,編譯器架構 .開源社區網[引用日期2012-08-18]
- 7. LLVM 3.1 延遲發佈,編譯器架構 .開源社區網[引用日期2012-08-18]
- 8. LLVM 3.6 發佈 .oschina[引用日期2015-07-15]
- 9. LLVM 3.7 發佈,編譯器架構 .開源社區網[引用日期2015-09-09]
- 10. 構建Clang(windows MinGW,clang3.2(G++)) .oschina.net[引用日期2013-05-24]
- 11. Visual Studio 2012 Build Clang .oschina.net[引用日期2013-05-24]
- 12. 七天LLVM零基礎入門(Linux版本)------第一天 .oschina.net[引用日期2013-05-24]
- 收起