我试图将某些内容存储到内存地址中并遇到此错误。
这是我正在做的事情的一个例子:
sll $ 11,$ 10,2 #register $ 10 for this loop包含1
mflo $ 9#来自之前的计算答案 #位于sll指令部分正上方
sw $ 9,0($ 11)#store answer in memory address ERROR occured
我尝试通过存储在不同的寄存器来解决它,确保我要使用的内存地址为空等等但似乎没有任何工作......如果你们遇到过这个问题,那就是你做了什么来解决它?
感谢所有帮助
答案 0 :(得分:0)
问题非常简单: $ 11 不指向可写内存。 $ 11 的值为4(1<<2
)。您没有显示足够的代码,但我认为您初始化 $ 11 指向可写区域,然后使用SLL
指令覆盖它。也许你的意思是这样的:
; Here $11 must contain an address of a writable memory area
SLL $12, $10, 2 ; $12 = $10[offset] * 4
ADD $12, $11, $12 ; $12 = $11[base] + offset*4
SW $9, 0($12) ; store $9 at at base+offset*4