首页 > 解决方案 > MIPS MARS:带有浮点的奇怪错误

问题描述

当我尝试将浮点寄存器设置为标签中的浮点数时,我遇到了一个奇怪的错误。我基本上是在尝试计算我创建的具有 5 个值的排序数组的平均值。我将这五个值加在一起,然后尝试使用 $f9 寄存器将浮点数除以 5。

问题是,每当调用 ls 指令时,$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

在 ls 调试时,$f9 寄存器设置为数组中的最后一个浮点数,而不是我在标签中设置的浮点数 5。

在此处输入图像描述

标签: assemblyfloating-pointmips32mars-simulator

解决方案


推荐阅读