如何解决如何组装RISC-V指令集的RVC压缩指令扩展?
我有使用RVC指令的汇编代码,例如:
c.j 24
,当我尝试汇编它时,我会得到32位机器代码,但是我希望得到16位,因为它是压缩指令。在二进制文件中,该指令用32位表示,汇编指令的操作码对应于常规RV32I指令JAL,而不是16位宽的C.JAL的操作码。
我这样编译:
riscv64-unknown-linux-gnu-gcc -c -mabi=ilp32 -march=rv32imac input.s -o output
有人知道如何解决吗?
解决方法
如果您正在使用https://github.com/riscv/riscv-gnu-toolchain中的riscv工具链。
您得到的是32位版本是正常的。在binutils中,您可以在汇编器端口tc-riscv.c
中看到汇编器Expand the RVC branch into a RISC-V one.
,如果它不能验证将遵守该范围。
使用c.j 24
时,汇编器不知道代码将放置在何处并将其转换为j
。这是一种安全的方法,否则,如果发出压缩指令,则链接器将不得不放松处理这种情况,或者如果链接器无法处理这种情况,或者在最坏的情况下生成的代码不正确,它将发出错误。 >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。