队伍CICC2259 队员:刘宇轩 周嘉琪 冷思远
-march选项
-march可以指定目标RISC-V目标平台支持的模块化指令集组合,有效的选项值如下。
rv32i[m][a][f[d]][c]
rv32g[c]
rv64im][a][f[d]][c]
rv64g[c]
在上述选项值中,rv32表示目标平台是 32位架构,rv64表示目标平台是64位架构,i、m、a、f、d、c和g分别是 RISC-V 模块化指令子集的字母简称。我们要加入单精度浮点指令集,则需要在后面增添f
-mabi
-mabi可以指定RISC-V目标平台支持的ABI函数调用规则。在RISC-V中,定义了两种对于整数的ABI调用规则和四种对于浮点数的ABI调用规则。分别是整数的ilp32,lp64;浮点数的ilp32f,ilp32d,lp32f,lp64d。
本次项目中我们添加浮点指令集,应当改变GCC编译过程中的支持指令集架构选项,否则还是会用软件浮点来模拟浮点操作,硬件浮点的作用没有落到实处,所以我们的-mabi选项应该选择后缀f。综上,SDK的代码修改如下图所示。
DEFAULT_RISCV_ARCH ?= rv32imafc
DEFAULT_RISCV_ABI ?= ilp32f
下图可以看出,在相同的地方,使用配置不同的GCC链编译的结果是不同的。