LLVM 是什麼?

有什麼說的不對的地方,還請多多支出, 謝謝~

概述

LLVM : 全稱是這個Low Level Virtual Machine,底層虛擬機,名字是帶有虛擬機,但是現在早已和虛擬機沒有任何關係了. 是整個LLVM項目,我目前瞭解的有5部分.

LLVM 是一個用於構造、優化和生成中間和/或二進制機器碼的庫。能夠同時支持任意編程語言的靜態和動態編譯。

我之前在互聯網工作,知道的前端vue、react和後端Java、python等. 現在編譯器也有前端和後端.

LLVM 可以用作編譯器框架,其中提供“前端”(解析器和詞法分析器)和“後端”(將 LLVM 的表示轉換爲實際機器代碼的代碼)。

LLVM 還可以充當 JIT 編譯器——它支持 x86/x86_64和 PPC/ppc64的彙編生成,具有針對編譯速度的快速代碼優化。

LLVM project/infrastructure

https://llvm.org/ProjectsWithLLVM/

這是幾個項目的總稱,前端、後端、優化器、彙編器、連接器、 libc++ 、編譯器-rt 和 及時引擎,它們共同組成了一個完整的編譯器.

LLVM-based compiler

這是一個部分或完全使用 LLVM 基礎結構構建的編譯器。例如,編譯器可能在前端和後端使用 LLVM,但是使用 GCC 和 GNU 系統庫執行最終鏈接。

LLVM libs

https://releases.llvm.org/2.6/docs/UsingLibraries.html

這是 LLVM 基礎結構的可重用代碼部分.

LLVM 是一個用於構建編譯器、鏈接器、運行時執行器、虛擬機和其他程序執行相關工具的工具包。除了 LLVM 工具集之外,LLVM 的功能還可以通過一組庫來實現。要使用 LLVM 作爲構建工具的工具包,開發人員需要了解各個庫中包含什麼、它們依賴什麼以及如何使用它們。幸運的是,有一個工具 llvm-config 可以幫助解決這個問題。可以參考上面貼的這個鏈接.

LLVM core

https://llvm.org/OpenProjects.html

在中間語言和後端算法層進行的優化。

LLVM IR

https://llvm.org/docs/LangRef.html

LLVM 編譯器的中間表示. LLVM 是一種基於靜態單分配(SSA)的表示,它提供了類型安全、低級操作、靈活性以及乾淨利落地表示“所有”高級語言的能力。它是 LLVM 編譯策略的階段使用的通用代碼表示形式。

引用

https://chiphub.top/topics/6
https://www.jianshu.com/p/237ed53ddaeb
https://llvm.org/
https://gnuu.org/2009/09/18/writing-your-own-toy-compiler/
https://stackoverflow.com/questions/2354725/what-exactly-is-llvm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章