【发布时间】:2019-11-01 13:27:05
【问题描述】:
我克隆了 riscv-tools (https://github.com/riscv/riscv-tools) 和 riscv-gnu-toolchain (https://github.com/riscv/riscv-gnu-toolchain) 并且能够让 Spike、pk 和交叉编译器 (riscv64-unknown-elf-gcc) 工作。我想扩展它并能够添加自定义指令并找到本教程:https://nitish2112.github.io/post/adding-instruction-riscv/ 但它有点过时了。当前的 RISCV GNU 工具链 repo 没有 riscv-binutils-gdb 目录,但有 riscv-binutils 目录和 riscv-gdb 目录,所以我在添加指令时尝试使用这些目录中的文件。
在我将操作码添加到 riscv-tools/riscv-opcodes/opcodes 和 riscv-gnu-toolchian/riscv-{binutils, gcb} 中的文件并运行以下代码后:
sudo ./configure --prefix=/home/me/riscv64
sudo make newlib -j $(nproc)
sudo make linux -j $(nproc)
export PATH="$PATH:/home/me/riscv64/bin"
export RISCV="/home/me/riscv64"
然后我通过运行测试它
riscv64-unknown-elf-gcc -o mod mod.c
在教程中使用相同的 mod.c 文件,只是我在 asm 内联后添加了一个分号以使其通过编译器。然后我从汇编程序中得到以下错误:
mod.c:7: Error: unrecognized opcode `mod a5,a5,a4'
我做错了什么吗?感谢您的帮助和时间。
【问题讨论】:
-
自本教程以来,RISC-V 工具链的构建树似乎发生了很大变化,如果没有重大变化,它就无法工作。
标签: simulator riscv instruction-set