由于RISC-V的指令集是模块化的指令集,因此在为目标RISC-V平台进行交叉编译之时,需要通过选项指定目标RISC-V平台所支持的模块化指令集组合,该选项为(-march=),有效的选项值如下: rv32i[m][a][f[d]][c] rv32g[c] rv64i[m][a][f[d]][c] rv64g[c] 注意:在上述选项中rv32表示目标平台是32位架构...
$ riscv64-unknown-elf-gcc test.c -march=rv32imafdc -mabi=ilp32 -o- -S -O3//所生成的汇编代码如下,从中可以看出,浮点数乘法操作直接使用了RISC-V的fmul.d指令进行支持,但是函数的两个浮点类型的参数均通过堆栈进行的传递,这是因为:- -march选项指明了目标平台支持的模块化指令子集为I/M/A/F/D/C...
该commit,是往riscv-gcc中增加RV32E的支持。 三、修改riscv.opt 首先是修改 gcc/config/riscv/riscv.opt文件,在其中,增加DSP宏。 gcc的脚本工具,会处理该文件,通过Mask展开,定义新的宏参数。 MASK_DSP TARGET_DSP 在编译目录下的 gcc/options.h ...
由于RISC-V的指令集是模块化的指令集,因此在为目标RISC-V平台进行交叉编译之时,需要通过选项指定嵌入式RISC-V目标平台所支持的ABI函数调用规则(有关ABI函数调用规则的相关信息请参见RISC-V中文书籍《手把手教你设计CPU——RISC-V处理器篇》中附录A的图A-1)。RISC-V定义了两种整数的ABI调用规则和三种浮点ABI调用...
git clone--recursive https://github.com/riscv/riscv-gnu-toolchain以下是各个仓库的github地址: riscv-gcc https://github.com/riscv/riscv-gccriscv-glibc https://github.com/riscv/riscv-glibcriscv-newlib https://github.com/riscv/riscv-newlibriscv-dejagnu ...
下载RISC-V GCC工具链源码包,可以从RISC-V官方网站或GitHub仓库获取。 解压源码包并进入目录。 配置编译选项,可以通过执行./configure命令进行配置,例如指定安装目录、优化等级等。 编译安装,执行make命令进行编译,然后执行make install命令进行安装。 二、RISC-V GCC工具链配置 安装完成后,需要将RISC-V GCC工具链添加...
// 编译参数:riscv32-unknown-elf-gcc -O0 -S#include<stdarg.h>voidf(longlonga);voidlong_args(inta1,inta2,inta3,inta4,inta5,inta6,inta7,longlonga8,inta9){f(a8);}intva_sum(intargs_num,...){intsum=0;va_listap;va_start(ap,args_num);for(inti=args_num;i>0;i--){intarg=va...
riscv基础指令集中,主要分析R-type,同时可以自定义一条custom指令。 custom的指令可以添加一条 比如自定义一条cube指令,该指令的作用是计算算数立方。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 *func7 rs2 rs1 func3 rd opcode*31---25---19---15---12---6---0*|000110|00000|***|110|...
首先是修改 gcc/config/riscv/riscv.opt文件,在其中,增加DSP宏。 gcc的脚本工具,会处理该文件,通过Mask展开,定义新的宏参数。 MASK_DSP TARGET_DSP 在编译目录下的 gcc/options.h 文件中,有该宏参数定义。 TARGET和MASK宏的定义 #define MASK_DIV (1U << 0) ...