【发布时间】:2018-09-24 16:29:39
【问题描述】:
我正在编写一个 RISC-V 汇编程序,需要将一个字(保存到寄存器中)存储到 .data 段中:
.section .rodata
msg:
.string "Hello World\n"
.section .data
num:
.word 97
.section .text
.global _start
_start:
li a1, 100
sw a1, num
loop:
j loop
但是当程序到达 sw a1, num 时,我收到错误“非法操作数 `sw a1,num'”。
如何将数据存储到 .data 段内的内存位置?你能给我一些提示吗?
【问题讨论】:
-
使用支持伪指令的汇编程序,并将地址
num的高位部分加载到暂存寄存器中。或者自己做。请记住,sw机器指令只有 12 个位移位。 RISC V manual confusion: instruction format VS immediate format -
感谢回复,我正在使用汇编器riscv64-unknown-elf-as,我该如何使用这个汇编器?谢谢
-
查看编译器输出以了解存储到全局的函数以了解如何使用
lui。 godbolt.org 已为 RISC-V 发出叮当声。 -
确切地说,是在您组装程序时出现错误,而不是“当程序到达 sw 时”。错误消息由 GNU as 发出。
标签: assembly riscv illegal-instruction