RISC-V MCU中文社区

【求助】 Nuclei Studio编译汇编文件

发表于 开源蜂鸟E203 2022-02-16 08:44:10
2
2013
2

关于NucleiStudio的使用,我想问两个问题,一个是NucleiStudio IDE编译汇编文件的问题,另一个是关于NucleiStudio IDE编译RISCV向量扩展指令的问题,我在百度,谷歌,以及芯来的官网上均未找到相关或者类似问题。

我按照教程在win10上搭建了NucleiStudio的最新版 2022那一版,环境搭建没有问题,可以正常编译C代码,编译后的.verilog可以在E203软核上进行仿真,这都没有问题
第一个问题是无法编译汇编文件,起初我以为是我汇编的格式不对,后来将sdk中自带的汇编文件放进去也一样报错,无法编译,看起来像是需要设置一下编译工具,但是我在教程中没有找到相关设置选项,请问是需要设置什么地方吗?
图片alt

第二个问题:我看到在NucleiStudio IDE的编译链设置中可以选择指令扩展,有向量扩展的选项,请问勾选了这个就能编译向量指令了吗?
我自己在liunx上搭建过RISCV的gnu编译链,每次更换不同指令子集应该都需要重新生成工具链,在这里只要勾选不同选项就能实现指令集的更换吗?
图片alt

喜欢2
用户评论 (2)
  • nn爱学习

    2024-03-21 16:37:16 nn爱学习 1#

    我想问您,写了自定义指令的汇编文件是怎么修改nuclei studio的工具链呢

  • 2022-02-17 13:03:27 2#

    第二个问题已解决,Nuclei Studio可以编译V扩展指令,需要使用内敛汇编的写法

    void test_v(void)

    {

      float a[]={1.0,2.0,3.0,4.0};

      float b[]={1.0,2.0,3.0,4.0};

      float c[]={0.0,0.0,0.0,0.0};

      int len=4;

      int i=0;

      //inline assembly for RVV 0.7.1

      asm volatile(

                   "mv t4, %[LEN] nt"

                   "mv t1, %[PA] nt"

                   "mv t2, %[PB] nt"

                   "mv t3, %[PC] nt"

                   "LOOP1: nt"

                   "vsetvli t0, t4, e32,m1 nt"

                   "sub t4, t4, t0 nt"

                   "slli t0, t0, 2 nt" //Multiply number done by 4 bytes

                   "vle32.v v0, (t1) nt"

                   "add t1, t1, t0 nt"

                   "vle32.v v1, (t2) nt"

                   "add t2, t2, t0 nt"

                   "vfadd.vv v2, v0, v1 nt"

                   "vse32.v v2, (t3) nt"

                   "add t3, t3, t0 nt"

                   "bnez t4, LOOP1 nt"

                   :

                   :[LEN]"r"(len), [PA]"r"(a),[PB]"r"(b),[PC]"r"(c)

                   :"cc","memory", "t0", "t1", "t2", "t3", "t4",

                    "v0", "v1", "v2"

        );

    }

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板