Exception MIPS程序集存储浮点数时出错
为什么这段代码在存储浮点数时出现异常。我想不出这个问题。代码如下:Exception MIPS程序集存储浮点数时出错,exception,ip-address,mips,Exception,Ip Address,Mips,为什么这段代码在存储浮点数时出现异常。我想不出这个问题。代码如下: 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 您可能在执行swc1$f1,0($t0)时遇到未对齐异常。 指令swc1需要第二个参数是在字边界对齐的有效内存地址。这意味着此有效内存地址的两个最低有效位(在您的情况下,存储在$t0的
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
您可能在执行
swc1$f1,0($t0)
时遇到未对齐异常。
指令swc1
需要第二个参数是在字边界对齐的有效内存地址。这意味着此有效内存地址的两个最低有效位(在您的情况下,存储在$t0
的地址)需要为零
您发布的代码没有显示$s0
的初始化,这可能至少有两个最低有效位中的一个为1
要修复代码,请确保$s0
以零开头,以便swc1
中使用的有效内存地址是字对齐的
如果$s0
的初始化是使用la$s0完成的,则在声明用于存储数据的缓冲区时,您可能需要使用.align 2
指令,例如:
label: .align 2
.space ...