MIPS存储异常错误

MIPS存储异常错误,mips,Mips,因此,我正在使用QtSpim为学校运行mips程序。我基本上做了一个工作程序,但现在我不断得到一个异常错误。我已经试着删减我的代码,所以这里是错误开始的地方 .text .globl main main: .data message1: .asciiz "The maximum is " message2: .asciiz "The summation is " myArray: .space 32 .text addi $s0, $zero, 11 a

因此,我正在使用QtSpim为学校运行mips程序。我基本上做了一个工作程序,但现在我不断得到一个异常错误。我已经试着删减我的代码,所以这里是错误开始的地方

.text
.globl main
main:
.data 
    message1: .asciiz "The maximum is "
    message2: .asciiz "The summation is "
    myArray: .space 32
.text
    addi $s0, $zero, 11
    addi $s1, $zero, 12
    addi $s2, $zero, -10
    addi $s3, $zero, 13
    addi $s4, $zero, 9
    #addi $s5, $zero, 12 not needed
    addi $s5, $zero, 14
    addi $s6, $zero, 15
    addi $s7, $zero, -20

    addi $t0, $zero, 0

    sw $s0, myArray($t0)
    addi $t0, $t0, 4

    li $v0,10
    syscall

错误为sw$s0,myArray($t0)

您可能需要确保myArray与32位边界对齐。我建议在声明之前尝试.align指令。

我将代码更改为myArray:.align 32.space 32,但仍然会遇到相同的错误。非常确定.align必须在标签之前。也许可以看到:我的数组是.align 32,而我的数组是:.space 32,但我仍然遇到了我提到的相同错误,因为在myArray声明之前添加第二个消息字符串时,这会发生变化,这也是sw指令可能从工作变为故障的原因。汇编程序正在使用临时寄存器将sw转换为多条指令,或者需要myArray位于低64k内存中。如果您可以获得寄存器值和错误指令,并且可能还有特定的异常类型,那么调试应该很容易。即,确保是sw出现故障。调用函数可能也需要保存调用方保存寄存器。另外,如果有人能告诉我为什么这被否决,我很乐意在future@ZalmanStern这篇评论更直接地针对那些知道为什么投票被否决的人,这样我可以在未来提出更好的问题是的,我解释说这个标题是有待改进的。哦,明白了,对不起,确切的错误信息是什么?当异常发生时,相关寄存器的值是多少?myArray的地址是什么?