MIPS (ou SPIM): Chargement de nombres en virgule flottante

Je travaille sur un petit mini-compilateur en essayant d’apprendre quelques MIPS ici. Voici mon problème:

MIPS a une instruction li (charge immédiate) qui fonctionnerait comme ceci

li $5,100 

qui chargerait 100 dans le registre 5.

Cependant, je dois charger des flotteurs dans les registres pour le moment et je ne parviens pas à trouver un moyen de le faire … puisque 5,2,5 $ US ne fonctionnent pas.

Quelqu’un a un conseil?

Je travaille en C, je pensais pouvoir obtenir la représentation entière du float avec lequel je travaille (c’est-à-dire, la représentation binary floats == la représentation binary ints), puis charger le “entier” dans le registre et le traiter comme un flotteur à partir de là.

Peut-être que c’est trop tard, mais je suis coincé pour le moment.

Vous devrez utiliser les registres à virgule flottante pour charger vos flottants.

Au lieu de:

 li $5,2.5 

Essayer:

 li.s $f5,2.5 

Examinez les instructions mfc1 et mtc1 pour passer d’un registre à l’autre à un registre à virgule flottante.

MARS ne semble pas avoir d’instructions / pseudo-instructions qui chargent des valeurs immédiates en virgule flottante dans des registres flottants. Au lieu de cela, vous devez mettre la valeur en virgule flottante en mémoire et charger le registre à partir de la mémoire:

 .data fp1: .double 2.5 fp2: .double -0.75 .text ld $f0, fp1 ld $f2, fp2