但是解釋器終究是低效的,好比在翻譯英文時(shí),機(jī)械地查找每個(gè)單詞的含義然后組裝起來,這樣的翻譯結(jié)果不僅冗長,還讓人難以理解;而經(jīng)驗(yàn)豐富的譯員會(huì)讀取整段英文,對這段文字進(jìn)行分析,結(jié)合上下文精確地理解每個(gè)單詞,去除冗余句子,并通過重排詞句順序、精簡句子結(jié)構(gòu)來使結(jié)果更易懂。
JIT 編譯器如同經(jīng)驗(yàn)豐富的譯員,當(dāng) JVM 中的解釋器發(fā)現(xiàn)一段代碼的執(zhí)行頻率很高時(shí),就會(huì)使用 JIT 編譯器對這段代碼進(jìn)行編譯,通過對這段代碼的深入分析與優(yōu)化,產(chǎn)出一系列高效的指令以提高它的運(yùn)行效率。

什么是 LLVM
LLVM 是目前最受歡迎的開源編譯器基礎(chǔ)設(shè)施,它擁有模塊化的設(shè)計(jì)、優(yōu)秀的編譯優(yōu)化能力與完備的后端支持。我們可以將其視為一套現(xiàn)成的超級零件箱,用它快速地拼出一個(gè)新編譯器:
- 編寫語言前端:將編程語言代碼轉(zhuǎn)換成 LLVM IR(Intermediate Representation)
- 利用 LLVM 的優(yōu)化器,對 LLVM IR 進(jìn)行分析與優(yōu)化
- 通過 LLVM 的代碼生成器,從 LLVM IR 生成真正的 CPU 指令,使程序最終可以運(yùn)行
站LOGO-北京(新).jpg)
全關(guān)注
站關(guān)注導(dǎo)流2024.jpg)