MIPS MARS: странная ошибка с плавающей точкой - PullRequest
0 голосов
/ 17 ноября 2018

Я получаю странную ошибку, когда пытаюсь установить регистр с плавающей точкой в ​​метку с плавающей точкой. Я в основном пытаюсь вычислить среднее значение отсортированного массива, который я создал, который имеет 5 значений. Я складываю пять значений вместе, а затем пытаюсь разделить число с плавающей запятой на 5 с помощью регистра $ f9.

Проблема в том, что всякий раз, когда вызывается инструкция 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

При l.s, когда я отлаживаю, регистр $ f9 устанавливается на последний float в массиве вместо float 5, который я установил в метке.

enter image description here

...