"Cannot write directly to text segment" 的 MIPS 运行时错误?

MIPS Runtime Error with "Cannot write directly to text segment"?

我试图将某些内容存储到内存地址中,但遇到了这个错误。

这是我正在做的示例:

sll $11, $10, 2 #register $10 这个循环包含 1

mflo $9 # 之前计算的答案 # 位于sll指令部分的正上方

sw $9, 0($11) # 将答案存储在内存地址中发生错误

我试图通过存储在不同的寄存器中来解决它,确保我将要使用的内存地址为空等,但似乎没有任何效果......如果你们遇到过这个问题,是你做了什么来修复它吗?

感谢大家的帮助

问题很简单:$11没有指向可写内存。 $11 的值为 4 (1<<2)。你没有显示足够的代码,但我假设你初始化 $11 指向一个可写区域,然后你用 SLL 指令覆盖它。也许你的意思是这样的:

; Here  must contain an address of a writable memory area

SLL , , 2    ;  = [offset] * 4
ADD , ,   ;  = [base] + offset*4
SW  , 0()     ; store  at at base+offset*4