国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为了自己的利益打压使用.NET技术的公司,我今天写这篇文章就是想通过龙芯团队的行动告诉更多人一起来推动.NET技术在中国的发展。希望龙芯厂商、支持龙芯的国产操作系统厂商能高度重视这个问题,主动加入 .Net Core 社区,加入.NET基金会,积极贡献代码,尽快做好适配工作。
龙芯团队一直在做net core的mips64移植工作,2020年6月18日完成了里程碑性的工作,在.NET Core 3.1分支上完成了MIPS64 的移植工作,目前已经在github上开源,开源地址:https://github.com/gsvm/coreclr 。具体说明可以参见 https://github.com/dotnet/runtime/issues/38069。龙芯团队正在做移植后的测试工作,已经完成了 9500 多项测试,ASP.NET Core示例程序 FlightFinder 已经可以在MIPS64 上正常运行,具体可以参看 https://github.com/dotnet/runtime/issues/4234。
龙芯团队还在github上面为龙芯.NET 建立了一个仓库 https://github.com/gsvm/loongson-dotnet,用于关于龙芯的.NET信息,工作和下载,开源协议采用和.NET Core一样的MIT协议。根据这个仓库的信息,龙芯团队将在不久的将来发布.NET Core 3.1版本,然后升级到https://github.com/dotnet/runtime ,也就是.NET 5了。目前这项工作正在紧锣密鼓的进行,非常欢迎大家的积极参与贡献,包括issue或者PR,如果您有任何问题或需要任何支持,请随时提交问题或通过电子邮件:aoqi@loongson.cn 与龙芯团队联系。
在文章的最后,我向你分享一个龙芯团队成员 xiangzhai 在这个 https://github.com/xiangzhai/mono/issues/2 提到了指令集相关的编程的一些相关知识:
OpenJDK、CorelCLR、mono都太大了,比较小的虚拟机例子可以看看PSP模拟器:https://github.com/xiangzhai/ppsspp-jit-mips64/commits/mips64-port-dev
CoreCLR官方的文档不错:下降、寄存器分配、代码生成 https://github.com/dotnet/runtime/blob/master/docs/design/coreclr/jit/ryujit-overview.md
CoreCLR代码生成常用调试方法:dotnet/runtime#606