J
juanma21
Guest
Je dois livrer une mission et je suis coincée, je dois compléter ce code assembleur pour mettre en uvre une fonction pour la multiplication en virgule flottante, et ma connaissance de l'assemblage n'est pas si bon, s'il vous plaît quelqu'un peut me donner un peu d'aide??J'ai reçu des commentaires, comme aide pour le remplir, mais je ne reçois fou.Merci beaucoup!
. Texte
. fmult globl
# Conditions préalables:
# 1er paramètre (A0) flottante simple précision multiplicande point
# 2e paramètre (A1) en simple précision en virgule flottante multiplicateur
# Posteriori:
# Résultat (v0) en simple précision flottante produit le point
fmult: # V0 = 0, le résultat par défaut
BEQ fmult $ a0, $ zero, retour # si multiplicande est nul
BEQ fmult $ a1, $ zero, retour # si multiplicateur est égal à zéro
# Masque de place pour peu plus à gauche dans T5
# T5 = 0x80000000
# Signe le lieu de multiplicande en T0
# Masque exposant et mantisse
# Signe le lieu de multiplicateur en T1
# Masque exposant et mantisse
# Signe le lieu de produit en t2
# T2 = XOR de signes
# Exposant le lieu de multiplicande en T0
# Passage à supprimer le bit de signe
# Passage à supprimer les bits mantisse
# Partialité exposant subract
# Exposant le lieu de multiplicateur en T1
# Passage à supprimer le bit de signe
# Passage à supprimer les bits mantisse
# Partialité exposant subract
# Exposant le lieu de produit en T3
# Ignorer le risque de débordement ou un dépassement inférieur
# T3 = somme des exposants
# Ajoute le biais exposant
Place # mantisse de multiplicande en T0
# Passage à supprimer l'exposant
# Remet implicitement 1 à gauche de la mantisse
Place # mantisse du multiplicateur en T1
# Passage à supprimer l'exposant
# Remet implicitement 1 à gauche de la mantisse
Place # mantisse de produit au T4
# Ignore l'arrondissement et le débordement
multu t0 $, $ t1 # multiplier significands (non signé)
mfhi T4 $ # t4 = mot de poids fort du produit
BGE norme T4 $, $ zero, branche # s'il a déjà été normalisé
srl $ t4, t4 $, 1 # déplacement significande pour normaliser
addi $ t3, t3 $, 1 # ajustez exposant
norme: sll $ t4, t4 $, 2 # passage à supprimer implicite 1
# Montons produit en v0
sll $ t3, t3 $, 23 # exposant passez en position correcte
srl $ t4, t4 $, 9 # déplacement significande en bonne position
déplacer v0 $, $ # t2 signe place dans v0
ou V0 $, v0 $, $ t3 # exposant place dans v0
ou V0 $, v0 $, $ # t4 place significande dans v0
retour: jr $ ra # retour
. Texte
. fmult globl
# Conditions préalables:
# 1er paramètre (A0) flottante simple précision multiplicande point
# 2e paramètre (A1) en simple précision en virgule flottante multiplicateur
# Posteriori:
# Résultat (v0) en simple précision flottante produit le point
fmult: # V0 = 0, le résultat par défaut
BEQ fmult $ a0, $ zero, retour # si multiplicande est nul
BEQ fmult $ a1, $ zero, retour # si multiplicateur est égal à zéro
# Masque de place pour peu plus à gauche dans T5
# T5 = 0x80000000
# Signe le lieu de multiplicande en T0
# Masque exposant et mantisse
# Signe le lieu de multiplicateur en T1
# Masque exposant et mantisse
# Signe le lieu de produit en t2
# T2 = XOR de signes
# Exposant le lieu de multiplicande en T0
# Passage à supprimer le bit de signe
# Passage à supprimer les bits mantisse
# Partialité exposant subract
# Exposant le lieu de multiplicateur en T1
# Passage à supprimer le bit de signe
# Passage à supprimer les bits mantisse
# Partialité exposant subract
# Exposant le lieu de produit en T3
# Ignorer le risque de débordement ou un dépassement inférieur
# T3 = somme des exposants
# Ajoute le biais exposant
Place # mantisse de multiplicande en T0
# Passage à supprimer l'exposant
# Remet implicitement 1 à gauche de la mantisse
Place # mantisse du multiplicateur en T1
# Passage à supprimer l'exposant
# Remet implicitement 1 à gauche de la mantisse
Place # mantisse de produit au T4
# Ignore l'arrondissement et le débordement
multu t0 $, $ t1 # multiplier significands (non signé)
mfhi T4 $ # t4 = mot de poids fort du produit
BGE norme T4 $, $ zero, branche # s'il a déjà été normalisé
srl $ t4, t4 $, 1 # déplacement significande pour normaliser
addi $ t3, t3 $, 1 # ajustez exposant
norme: sll $ t4, t4 $, 2 # passage à supprimer implicite 1
# Montons produit en v0
sll $ t3, t3 $, 23 # exposant passez en position correcte
srl $ t4, t4 $, 9 # déplacement significande en bonne position
déplacer v0 $, $ # t2 signe place dans v0
ou V0 $, v0 $, $ t3 # exposant place dans v0
ou V0 $, v0 $, $ # t4 place significande dans v0
retour: jr $ ra # retour