当我使用riscv-gcc
编译一个简单的汇编程序时,它告诉我它无法识别操作码b 1b
,这是程序:
...
sll x28,x28,1;
1: b 1b
b 1b
是最后一条指令,一个循环。
该计划来自riscv-sodor
项目。为什么编译失败?
答案 0 :(得分:2)
问题是你正在使用更新的编译器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)。