1

例如,下面的汇编语句应该翻译成操作码0x0000000b

custom0 0,0,0,0

使用旧版本的 riscv-gnu-toolchain(建于 6 月 4 日)不需要 -march= 选项来组装它。然而,今天我得到了riscv-tools的 git 负责人:

$ /opt/riscv_new/bin/riscv64-unknown-elf-as -m32 test.s
test.s: Assembler messages:
test.s:1: Error: unrecognized opcode `custom0 0,0,0,0'

通过阅读源代码,我猜想将拱门传递Xcustom给工具应该可以解决这个问题,但是:

$ /opt/riscv_new/bin/riscv64-unknown-elf-as -m32 -march=RV32IMXcustom test.s 
test.s: Assembler messages:
test.s:1: Error: unrecognized opcode `custom0 0,0,0,0'

(由于这个原因,目前 PicoRV32 测试固件没有使用最新的 riscv-gnu-toolchain 构建。)

编辑:对我有用的 riscv-tools 的最后一个版本是从 8 月 20 日开始提交 84a47e0b4e。使用该版本,无论有无该-march=选项,都可以识别 custom0 操作码。

4

2 回答 2

3

抱歉,这花了很长时间才找到——我不读stackoverflow。为了将来参考,如果您提交 github issue/PR 或直接给我发电子邮件,我会处理这些事情。

修复应该在这里,你介意验证它吗? https://github.com/riscv/riscv-gnu-toolchain/pull/97

抱歉引入回归!

于 2015-10-29T18:15:55.470 回答
1

我也遇到过这个问题,在昨天 gnu 工具链的更新中,如果您查看 risv-opcodes 文件夹中的 opcodes.custom 文件,所有自定义操作码都已注释,您需要取消注释那些您需要的并重新编译工具链

于 2015-10-27T02:42:39.933 回答