Riscv-gcc 无法识别操作码 b
Riscv-gcc can't recognize opcode b
当我使用riscv-gcc
编译一个简单的汇编程序时,它告诉我它无法识别操作码b 1b
,这是程序:
...
sll x28,x28,1;
1: b 1b
b 1b
是最后一条指令,一个循环。
程序来自riscv-sodor
项目。为什么编译失败?
问题是您使用的是较新的编译器 gcc 4.9,它包括一个新的 ABI 和对已接受的伪操作的一些更改。 Sodor 存储库(截至 2015 年 4 月)包含针对已弃用的 gcc 4.6 端口的汇编代码。
您可以快速将 "b" 更改为 "j"。
有关 gcc4.9 更新的更多信息:
https://riscv.org/2015/01/announcing-the-risc-v-gcc-4-9-port-and-new-abi/
以及关于新 ABI 的章节:
https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf
更改包括删除 v0/v1(现在是 a0/a1)。
当我使用riscv-gcc
编译一个简单的汇编程序时,它告诉我它无法识别操作码b 1b
,这是程序:
...
sll x28,x28,1;
1: b 1b
b 1b
是最后一条指令,一个循环。
程序来自riscv-sodor
项目。为什么编译失败?
问题是您使用的是较新的编译器 gcc 4.9,它包括一个新的 ABI 和对已接受的伪操作的一些更改。 Sodor 存储库(截至 2015 年 4 月)包含针对已弃用的 gcc 4.6 端口的汇编代码。
您可以快速将 "b" 更改为 "j"。
有关 gcc4.9 更新的更多信息:
https://riscv.org/2015/01/announcing-the-risc-v-gcc-4-9-port-and-new-abi/
以及关于新 ABI 的章节:
https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf
更改包括删除 v0/v1(现在是 a0/a1)。