P. Goldsborough “clang-useful: Building useful tools with LLVM and clang for fun and profit"
延續編譯器優化主題,早期編譯器會直接將程式碼轉成低階語言,之後才有中介碼的概念。現代編譯器前後端模組分離的好處很多,包含可以任意替換前端語言與後端硬體,也更容易選擇優化等級。
臉書工程師
Peter Goldsborough 簡介編譯器前端 Clang 執行語法剖析並產中介碼,交由後端 LLVM 產生執行檔的過程。正確來說 LLVM 是一種技術和工具鏈而不是後端,但很多時候大家口中的 LLVM 直接是指 Clang ,誤用的程度非常廣泛阿。
現在有不少活用中介碼的專案像
Emscripten 可將 LLVM IR 轉成 asm.js ,讓 C++ 直接跑在網頁,同時也讓程式碼可以重複使用。
中英對照:中介碼(Intermediate Representation)、工具鏈(Toolchain)
By Sidney Niu