/ / Multiplicando o número do ponto flutuante IEEE-754 no MIPS - mips

Multiplicando o número do ponto flutuante IEEE-754 no MIPS - mips

Eu tenho que multiplicar um número de ponto flutuante (com o formato IEEE 754) por 2 sem usar instruções de ponto flutuante.

O que estou tendo problemas é consertar a parte do expoente após a multiplicação.

Isso é o que eu tenho.

Assuma o solteiro número de ponto flutuante de precisão está no registro $ t0

sll    $t1, $t0, 9        t1 holds fraction part
sll    $t2, $t0, 1
srl    $t2, $t2, 24       t2 holds exponent part
srl    $t3, $t0, 31       t3 holds the sign bit

sll    $t1, $t1, 1        multiply fraction by 2
#do something to exponent in $t2 ##

#now put it all back together
sll    $t3, $t3, 31       put sign bit in the 31nd bit position
sll    $t2, $t2, 23       put exponent in the 30-23 bit positions
srl    $t1, $t1, 9        put fraction in the 22-0 bit positions

or     $t4, $t1, $t2
or     $t4, $t4, $t3      t4 now holds the value of t0*2

Eu não entendo como o expoente mudaria se eu multiplicasse a fração por 2.

Respostas:

1 para resposta № 1

Você está fazendo a coisa errada aqui

sll    $t1, $t1, 1        multiply fraction by 2

O valor do número de ponto flutuante IEEE-754 é baseado nesta fórmula

(-1)^sign * 1.mantissa * 2^exponent

Quando multiplicar por 2, somente o ponto de radix é movidoà direita, todos os bits permanecem inalterados, então a parte da mantissa é a mesma de antes. Para multiplicar por 2, você aumenta o expoente em 1, não multiplica por 2 porque 2*2^exp = 2^(exp+1)

Então você deveria fazer assim

addi $t2, $t2, 1