首页 > 其他分享 >.NET7 for LoongArch64(国产龙芯)

.NET7 for LoongArch64(国产龙芯)

时间:2023-06-20 10:25:01浏览次数:53  
标签:LA64 LoongArch64 LOONGARCH64 defined 7.0 NET7 龙芯 TARGET

目前龙芯通过自己的指令集LA64支持了.Net7.0.1版本,一同被支持的有Ruby,Nodejs,Java,Electron,Python等。原文:在此处

龙芯.Net7 sdk下载地址:
http://ftp.loongnix.cn/tmp/dotnet/7.0.5/7.0.5-ea1/dotnet-sdk-7.0.105-ea1-loongarch64.tar.xz

在.Net8里面也可见支持LA64的代码,下面列举下
1.返回函数头地址

#if !defined(TARGET_X86) && !defined(TARGET_ARM64) && !defined(TARGET_LOONGARCH64) && !defined(TARGET_RISCV64)
    if (hasRetBuffArg)
    {
        return GetEEFuncEntryPoint(VarargPInvokeStub_RetBuffArg);
    }

2.结构参数使用浮点寄存器

uint32_t CEEInfo::getLoongArch64PassStructInRegisterFlags(CORINFO_CLASS_HANDLE cls)
{
#if defined(TARGET_LOONGARCH64)
    size = (uint32_t)MethodTable::GetLoongArch64PassStructInRegisterFlags(cls);
#endif
    return size;
}

3.JIT传入四字节的展开数据块

#elif defined(TARGET_LOONGARCH64)
    _ASSERTE(IS_ALIGNED(unwindSize, sizeof(ULONG)));
ace for personality routine, it must be 4-byte aligned.
    unwindSize += sizeof(ULONG);

4.JIT64位的一个兼容性,这里除了LA64还有Risc-v

#if defined(TARGET_AMD64) || defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)

5.
龙芯的SDK需要在支持龙芯指令集的机器上执行,但是也可以虚拟一个龙芯指令集的机子,然后在上面模拟执行。参照之前的文章:龙芯(Loongarch64),在Linux虚拟一个龙芯OS体验下

龙芯.NET团队为了更好的支持LoongArch64架构特点,对整个后端指令构建系统进行了创新重构设计,同时,也从字节码加载、JIT语法树、ABI规范、函数栈帧设计、GC、异常处理等重要模块,都做了适应LoongArch架构特点的优化,也为后续龙芯后续深度参与社区打好基础。


作者:江湖评谈

欢迎关注我的公众号:jianghupt。顶级技术分享,文章首发。
image

标签:LA64,LoongArch64,LOONGARCH64,defined,7.0,NET7,龙芯,TARGET
From: https://www.cnblogs.com/tangyanzhi1111/p/17485456.html

相关文章

  • .NET7 中Autofac依赖注入整合多层,项目中可直接用
    一、配置Autofac替换内置DI1.安装Nuget包:Autofac.Extensions.DependencyInjection 2.Program.cs中加上builder.Host.UseServiceProviderFactory(newAutofacServiceProviderFactory());builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder=>{//在这里写......
  • .Net7发现System.Numerics.Vector矢量化的一个bug,Issues给了dotnet团队
    因为前几天做.Net7的矢量化性能优化,发现了一个bug。在类System.Numerics.Vector里面的成员变量IsHardwareAccelerated。但是实际上不确定这个bug是visualstudio2022的还是System.Numerics.Vector库的,个人认为应该是前者,也就是vs的bug。Vector.IsHardwareAccelerated返回的是Tr......
  • .NET7 中Autofac依赖注入整合多层,项目中可直接用
    目录一、配置Autofac替换内置DI二、构造函数注入三、属性注入四、批量注入五、手动获取实例六、其它用法1.不用接口,直接注入实例 2.一接口多实现 回到顶部一、配置Autofac替换内置DI1.安装Nuget包:Autofac.Extensions.DependencyInjection 2.Program.cs......
  • .NET7 中Autofac依赖注入整合多层,项目中可直接用
    一、配置Autofac替换内置DI1.安装Nuget包:Autofac.Extensions.DependencyInjection 2.Program.cs中加上builder.Host.UseServiceProviderFactory(newAutofacServiceProviderFactory());builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder=>{//在......
  • .Net7基础类型的优化和循环克隆优化
    前言.Net7里面对于基础类型的优化,是必不可少的。因为这些基础类型基本上都会经常用到,本篇除了基础类型的优化介绍之外,还有一个循环克隆的优化特性,也一并看下。概括1.基础类型优化基础类型的优化不会有些不会涉及ASM,主要是记忆。一:double.Parse和float.Parse,把某数值转换成d......
  • .Net7矢量化的性能优化
    前言矢量化是性能优化的重要技术,也是寄托硬件层面的优化技术。本篇来看下。概括一:矢量化支持的问题:矢量化的System.Runtime.Intrinsics.X86.Sse2.MoveMask函数和矢量化的Vector128.Create().ExtractMostSignificantBits()函数返回的结果是一样的。但是前者只能在支持SSE2的......
  • 龙芯下如何进行.net core程序开发部署
    龙芯LoongArch64已经发布了对.NETCore的支持,相关工具链也已完成,目前支持.NETCore3.1、.NET6、.NET7版本。本文以.NETCore3.1在loongnix-server8.4下部署为例说明开发部署过程。.NETCore3.1是基于上游社区.NETCore3.1-LTS-SDK制作的,同样是LTS版本。1、在龙芯开源社区下载安装.net......
  • 龙芯中科发布的 《龙芯生态白皮书(2022年)》的.NET 生态章节节选
    3月27日,全面反映LoongArch产业生态发展最新成果的《龙芯生态白皮书(2022年)》正式对外发布,白皮书下载地址:https://kdocs.cn/l/ce5Emg1C2pPd,我将其中涉及到.NET部分的内容节选出来,可以看到龙芯对.NET的支持的非常的不错,我知道他们有个几十人的.NET编译器团队在全职推进.NET的LoongA......
  • 龙芯杯的若干准备
    更新北理工学长的参赛经验pdf,下载无积分。链接失效可联系我或者评论区二十四桥个人赛实验地址个人赛的题目来自于清华大学的计组大作业2333书本:《自己动手写CPU》《CPU自制入门》Patterson和Hennessy写的《计算机组成与设计》龙芯杯群里面有一篇北理工前辈写的经验总结,......
  • net7下的tcpip示例
    2023-05-27测试,直接用百度文心一言搜索的,结果出来的代码能运行得通,不错不错服务器端: usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;namespacetcpipdemo_server;classProgram{staticvoidMain(string[]args){//创建TCP......