例如,以下汇编语句应转换为操作码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 because of this构建。)
编辑:适用于我的riscv-tools的最新版本是从8月20日开始提交84a47e0b4e。使用该版本,可以使用-march=
选项识别custom0操作码。
答案 0 :(得分:2)
很抱歉这需要很长时间才能找到 - 我没有阅读stackoverflow。为了将来参考,如果您提交github问题/ PR或直接给我发电子邮件,我会处理这些事情。
修复应该在这里,你介意验证吗? https://github.com/riscv/riscv-gnu-toolchain/pull/97
很抱歉介绍回归!
答案 1 :(得分:1)
我也遇到过这个问题,在昨天更新gnu工具链时,如果查看risv-opcodes文件夹中的opcodes.custom文件,所有自定义操作码都被注释,你需要取消注释你需要的那些并重新编译工具链