0

为什么此代码在存储浮点数时给出异常。我无法弄清楚问题所在。这是代码:

li $t1,0

Loop:

add $t0,$t1,$s0

li $v0,6
syscall
mov.s $f1,$f0

swc1 $f1,0($t0)

addi $t1,$t1,4

beq $t1,20,Mult

j Loop
4

1 回答 1

0

您可能正在执行未对齐异常swc1 $f1,0($t0)。该指令swc1需要第二个参数是在字边界对齐的有效内存地址。这意味着此有效内存地址的两个最低有效位(在您的情况下存储在的地址$t0)需要为零。

您发布的代码未显示其初始化$s0可能至少有两个最低有效位之一为 1。

要修复您的代码,请确保$s0以零位开始,以便使用的有效内存地址swc1是字对齐的。

如果初始化$s0完成,la $s0, label您可能希望.align 2在声明缓冲区以存储数据时使用指令,例如:

label: .align 2
       .space ...
于 2012-11-21T12:54:50.953 回答