LLVM 0: LLVM和Clang的背景
阿新 • • 發佈:2021-10-10
筆記:
1. Chris Lattner nb
2.Clang的發音是/ˈklæŋ/
,這是官方確認過的
3. IR的第三種表示是一種記憶體格式,只儲存在記憶體中,所以談不上檔案格式和檔案字尾,這種格式是LLVM之所以編譯快的一個原因,它不像gcc,每個階段結束會生成一些中間過程檔案
4.Clang前端和Clang驅動程式是兩個不同的概念,通常我們在命令列上呼叫的clang工具,是Clang驅動程式
1.IR的三種格式
三、Douglas Chen-不深不淺,帶你認識 LLVM (20191218@系統貓)
1. GCC沒有及時的合併apple的gcc分支,所以Apple搞了Clang
2. LLVM將Rust轉成WASM
Other language中Rust的支援最好
3. LLVM將C檔案轉成Verilog
4. JIT(Just in time): Java會越跑越快
JIT編譯是介於AOT(提前編譯)和解釋之間,是一種執行計算機程式碼的方法,程式在執行過程中(執行期)而不是在執行之前進行編譯。通常,這包括將原始碼或更常見的位元組碼到機器碼的轉換,然後直接執行
例如,java中,.java檔案被編譯成由JVM解釋的與平臺無關的位元組碼(.class),JIT編譯器在執行時將位元組碼編譯成本機程式碼(本機的彙編程式碼)
這種不提前編譯而是執行期間編譯,可以做一些執行期的優化:
- JIT編譯可以針對目標平臺和作業系統進行優化。例如,JIT可以在檢測到CPU支援SSE2向量CPU指令時選擇它們
- JIT編譯可以利用程式實際執行中的統計資訊,重新排列,以及對頻繁使用的本機程式碼進行快取等
5. JIT的一個例子:QEMU
Guest Code通過JIT技術動態編譯成Host Code,並且TB Buffer可以用作這個過程的快取(也就是說如果Translated過了,就不用再通過JIT翻譯了)
個性簽名:時間會解決一切