当我尝试将浮点寄存器设置为标签中的浮点时,我遇到了一个奇怪的错误。我基本上是想计算我创建的具有5个值的排序数组的平均值。我将这五个值加在一起,然后尝试用$ f9寄存器将浮点数除以5。
问题在于,每当调用l.s指令时,$ f9寄存器都将被设置为数组中的最后一个值,这弄糟了求平均值的数学方法。
.data
#STACK
floatArray: .float 0.0 : 4
five: .float 5
...
getAverage:
#GET ALL FLOATS
la $s0, floatArray #Set $s0 to start of array
l.s $f4, 0($s0) #Get float from array
l.s $f5, 4($s0) #Get float from array
l.s $f6, 8($s0) #Get float from array
l.s $f7, 12($s0) #Get float from array
l.s $f8, 16($s0) #Get float from array
#ADD ALL FLOATS AND DIVIDE
add.s $f5, $f5, $f4
add.s $f6, $f6, $f5
add.s $f7, $f7, $f6
add.s $f8, $f8, $f7
l.s $f9, five #Get float from label
div.s $f12,$f8, $f9
在进行调试时,将$ f9寄存器设置为数组中的最后一个浮点数,而不是我在标签中设置的浮点数5。