如何仅为RV32I基本整数指令和扩展M编译C代码?

时间:2015-09-11 16:13:08

标签: riscv

几天前我已经开始使用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.dump”。我注意到有时会出现汇编指令:

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

在许多其他案件中。

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

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

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

1 个答案:

答案 0 :(得分:6)

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

这是我的说明here中的副本和粘贴,用于如何从riscv-gnu-toolchain的git rev 5b1febd(2015-07-05)构建纯RV32I工具链+库:< / p>

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工具链。

目前在riscv-gnu-toolchain的git主管中似乎存在--with-xlen=32 --with-arch=I的问题。我现在reported the issue在github上。