.Net 7 团队把国内的龙芯确实当做一等公民和弃用的项目

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.Net 7 团队把国内的龙芯确实当做一等公民和弃用的项目相关的知识,希望对你有一定的参考价值。

楔子:

国内龙芯据说是用的自己的指令集,在研究ILC的时候,发现了龙芯在微软那边确实是一等公民的存在。同X64,ARM,X86一同并列交叉编译和二进制提取。

龙芯官网

龙芯平台.NET,是龙芯公司基于开源社区.NET独立研发适配的龙芯版本,我们会长期进行安全更新和错误修复,并持续进行性能优化。社区.NET7版本开始已经原生支持LoongArch64架构源码。

代码

在进行目标文件写入的时候

.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的编译过程。

以上是关于.Net 7 团队把国内的龙芯确实当做一等公民和弃用的项目的主要内容,如果未能解决你的问题,请参考以下文章

.NET LoongArch64 正式合并进入.NET

印度欲自研系统以替代 iOS 和 Android;基于 OpenJDK 17 的龙芯平台 Java 环境发布;Python 即将支持 WebAssembly | 开源日报

编程语言中,何谓“一等公民”

[转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)

龙芯推出兼容IE的龙芯浏览器解决方案,全面支持ActiveX插件等应用类型

[转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(上)