我怎么能编译C代码只为RV32I基本整数指令和扩展M



几天前我已经开始使用risc-v,但是昨天我遇到了一个问题。问题如下:

我想编译代码,例如为RV32I基本整数指令集,我想添加"M"标准扩展。

当我编译C代码时,我使用以下命令
riscv64-unknown-elf-gcc Program.c -o Program.o -m32 -march=RV32IM

现在,如果我想看汇编代码,我使用

riscv64-unknown-elf-objdump -d Program.c > Program.dump

现在,如果我查看转储文件"Program. exe"。转储"。我注意到有时出现的汇编指令为:

   10c6c:   00a12427            fsw fa0,8(sp)
   10dd0:   00a42023            sd a0,8(sp)

和许多其他的例子。

如果我在第52页看到"RISC-V指令集手册,卷I:用户级ISA,版本2.0",我观察到fsw指令属于RV32F标准扩展,sd指令属于RV64I。

由于这个原因,我很困惑,我不知道我的问题是不是我没有很好地编译。

我的问题是:我如何才能编译C代码仅为RV32I基本整数指令和扩展M?

正如Chris指出的那样,问题似乎是库没有为RV32I构建。

这是复制粘贴我的说明在这里如何构建一个纯RV32I工具链+库从git rev 5b1febd(2015-07-05)的riscv-gnu-toolchain:

sudo mkdir /opt/riscv32i
sudo chown $USER /opt/riscv32i
git clone https://github.com/riscv/riscv-gnu-toolchain riscv-gnu-toolchain-rv32i
cd riscv-gnu-toolchain-rv32i
git checkout 5b1febd
mkdir build; cd build
../configure --with-xlen=32 --with-arch=I --prefix=/opt/riscv32i
make -j$(nproc)

这将安装带有riscv32-unknown-elf-命令前缀的RV32I工具链。

似乎有一个问题与--with-xlen=32 --with-arch=I在当前的git头riscv-gnu-toolchain。我现在已经在github上报告了这个问题

相关内容

  • 没有找到相关文章

最新更新