簡體   English   中英

如何僅為RV32I基本整數指令和擴展M編譯C代碼?

[英]How can I compile C code only for the RV32I base integer instruction and the extension 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.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代碼?

正如克里斯指出的那樣,問題似乎是沒有為RV32I構建庫。

這是一個復制和粘貼從我的指示, 在這里如何建立一個純RV32I工具鏈+從git的轉庫5b1febd riscv,GNU工具鏈的(2015年7月5日):

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的問題。 我現在已經在github上報告了這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM