去年年底,有消息稱,為加強(qiáng)軟件生態(tài)建設(shè),龍芯為 GCC和LLVM編譯器和相關(guān) GNU 工具鏈組件提供 LoongArch 指令級架構(gòu)(IS)支持。最近,LLVM 15.0的開發(fā)樹上出現(xiàn)了對中國的LoongArch CPU架構(gòu)的初始補(bǔ)丁。
LLVM是一種編譯器,它的模塊化設(shè)計很好,這個編譯器中的很多功能可以被單獨(dú)實現(xiàn)或者改進(jìn)。LLVM可以被設(shè)計成很多語言編譯器實現(xiàn)的后端,負(fù)責(zé)處理程序優(yōu)化和跨平臺,而前端只需將程序轉(zhuǎn)換成LLVM IR即可。比如說,Clang就是基于LLVM實現(xiàn)的C/C++編譯器,它的主要功能就是將C/C++程序轉(zhuǎn)換成LLVM IR,然后由LLVM負(fù)責(zé)后續(xù)的工作。
LLVM技術(shù)上的(最大)優(yōu)勢就在于它的模塊化設(shè)計。在LLVM中,IR的解析,優(yōu)化,匯編碼的生成,寄存器分配,匯編碼優(yōu)化以及機(jī)器碼生成,各種類型的二進(jìn)制文件生成全部都是接口定義清晰的模塊完成的,很容易分別改進(jìn)或者添加定制功能。而且由于LLVM的C++實現(xiàn),很多模塊理解和使用比較容易。這些特性使得LLVM可以很容易地被用在科研和生產(chǎn)實踐當(dāng)中。反觀GCC,模塊化做得不如LLVM好,這使得它定制或者改進(jìn)比較不方便。
目前,LLVM編譯器社區(qū)已經(jīng)正式合入了對Loongarch架構(gòu)的初步支持,其主干源碼庫中已經(jīng)出現(xiàn)了跟X86和ARM并列的LoongArch頂層目錄。這對于龍芯而言是一個里程碑。很多開源項目已經(jīng)接受了對LoongArch的支持,眾人拾柴火焰高,相信隨著支持LoongArch的軟件越來越豐富,龍芯生態(tài)會在這個過程中茁壯成長。
「 支持烏有之鄉(xiāng)!」
您的打賞將用于網(wǎng)站日常運(yùn)行與維護(hù)。
幫助我們辦好網(wǎng)站,宣傳紅色文化!
歡迎掃描下方二維碼,訂閱烏有之鄉(xiāng)網(wǎng)刊微信公眾號
