.Net 7 團隊把國內的龍芯確實當做一等公民和棄用的項目

楔子:

國內龍芯據說是用的自己的指令集,在研究ILC的時候,發現了龍芯在微軟那邊確實是一等公民的存在。



龍芯官網

龍芯平臺.NET,是龍芯公司基於開源社區.NET獨立研發適配的龍芯版本,我們會長期進行安全更新和錯誤修復,並持續進行性能優化。社區.NET7版本開始已經原生支持LoongArch64架構源碼。



代碼

在進行目標文件寫入的時候
image



.Obj

在目標文件裏面,龍芯LoongArch64會同樣存在於二進制文件裏面,以適配不同的平臺編譯特性。

    case TargetArchitecture.LoongArch64:
                    LoongArch64.LoongArch64Emitter loongarch64Emitter = new LoongArch64.LoongArch64Emitter(factory, relocsOnly);
                    EmitCode(factory, ref loongarch64Emitter, relocsOnly);
                    loongarch64Emitter.Builder.RequireInitialAlignment(alignment);
                    loongarch64Emitter.Builder.AddSymbol(this);
                    return loongarch64Emitter.Builder.ToObjectData();


棄用

coredistools
https://github.com/dotnet/llilc
項目。
其中blob/main/lib/CoreDisTools/coredistools.cpp生成的coredistools.dll主要是用於ILC裏面的C#函數的生成兼容性的彙編代碼。
而這個項目的本身LLILC是一個從LLVM構建.NET兼容JIT的實驗項目,已經被微軟停止。
估測這個coredistools.dll裏面的DumpInstruction函數後面也會被替換。

ObjWriter
https://github.com/dotnet/corert
項目。
其中
/blob/master/src/Native/ObjWriter/objwriter.cpp生成的objwriter.dll主要用於目標文件,比如.Obj,.O等。
這個項目主要是之前的NativeAOT的一部分,也被停止了,其餘部分被合併到了Runtime裏面去了。但是這個objwriter.dll卻被合併之後單獨生成



結果

可以看到LoongArch64與X64,X86,ARM,ARM64一同被納入了LLVM的寫入的編譯過程。

作者:江湖評談(公衆號同名)
版權:本作品採用「署名-非商業性使用-相同方式共享 4.0 國際」許可協議進行許可。

image

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