"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
我试图将某些内容存储到内存地址中,但遇到了这个错误。
这是我正在做的示例:
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