【发布时间】:2020-10-23 20:03:39
【问题描述】:
我正在尝试在 riscv 内存位置存储一个 32 位立即数。对应的代码是
lui x13,0x12345
addi x13,x13,0x678 // 32 bit value- 12345678
lui x11, 0x1c010 // address location 1c01000
sw x13,x11
我面临的问题是在模拟过程中在地址位置(1c01000)中找不到 32 位值。地址位置仅显示给定数据的 1 个字节(78)
【问题讨论】:
-
1c01000位置显示的值为78787878
-
你确定那个地址有(模拟的)内存吗?在更“常见”的地址尝试,例如0x10000000 或 0x10010000,看看它是否按预期工作。否则,声明数据:
.data ... label: .word 0 ... .text ... la x11, label; sw x13,(x11)。这样数据应该得到一个有效的内存地址。 -
另外,您的示例中有一个错字,应为
sw x13,(x11)-或-sw x13,0(x11)。你用的是什么汇编器和模拟器? -
sw x13,(x11) 模拟器使用的是 Gtkwave
-
我分别检查了内存bank 78个被复制到所有四个bank中,当时还没有完成内存写入。
标签: assembly memory 32-bit riscv instructions