MIPS MARS:带有浮点数的怪异错误

时间:2018-11-17 13:12:36

标签: assembly floating-point mips32 mars-simulator

当我尝试将浮点寄存器设置为标签中的浮点时,我遇到了一个奇怪的错误。我基本上是想计算我创建的具有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。

enter image description here

0 个答案:

没有答案