LLVM简介
????????LLVM命名最早源自于底層虛擬機(Low Level Virtual Machine)的縮寫,但是現在,LLVM所代表的基本和虛擬機沒有關系了,也不在作為一個縮寫使用了,而是直接作為一個名字使用。LLVM開始于2000年,是由C++實現的開源軟件,它的license是”UIUC” BSD-Style。LLVM核心庫提供了與編譯器相關的支持,可以作為多種語言編譯器的后臺來使用,能夠進行程序語言的編譯期優化、鏈接優化、在線編譯優化、代碼生成。LLVM可以被看作是一系列的編譯器和工具鏈技術的集合,而且它們是模塊化并且是可重用的。
????????Clang是LLVM的一個編譯器前端,它支持C、C++等編程語言。Clang對源程序進行詞法分析和語義分析,并將分析結果轉換為Abstract Syntax Tree(抽象語法樹),最后使用LLVM作為后端代碼的生成器。Clang的開發目標是提供一個可以替代GCC的前端編譯器。即LLVM可以認為是一個編譯器的后端,而Clang是一個編譯器的前端。
????????通常,編譯的階段被分成前端和后端兩部分。前端是由只依賴于源語言的那些階段或階段的一部分組成,往往包含詞法分析、語法分析、語義分析、類型檢查和中間代碼生成等階段,當然還包括與這些階段同時完成的錯誤處理和獨立于目標機器的優化。后端是指編譯器中依賴于目標機器的部分,往往只與中間語言有關而獨立于源語言。后端包括與目標機器相關的代碼優化、代碼生成和與這些階段相伴的錯誤處理和符號表操作。后端與前端是獨立的,后端只需要一種中間代碼表示。
???????關于GCC與Clang的異同可以參考:https://blog.csdn.net/fengbingchun/article/details/79252110??
????????LLVM is a library that is used to construct, optimize and produce intermediate and/or binary machine code.
????????LLVM can be used as a compiler framework, where you provide the "front end" (parser and lexer) and the "back end" (code that converts LLVM's representation to actual machine code).
????????LLVM can also act as a JIT compiler - it has support for x86/x86_64 and PPC/PPC64 assembly generation with fast code optimizations aimed for compilation speed.
????????LLVM的官方網址是:https://llvm.org/? ,目前最新版本是6.0.
????? ? 注:以上內容整理自網絡。
總結
- 上一篇: Ubuntu14.04 64位上配置终端
- 下一篇: 吴恩达老师深度学习视频课笔记:深度卷积网