Pregunta

Estoy trabajando en un pequeño mini compilador al tratar de aprender algunas MIPS aquí. Aquí está mi problema:

MIPS tiene una instrucción li (carga inmediata) que trabajaría como esto

li $5,100

que cargar en el registro 100 5.

Sin embargo, tengo que flota en los registros de carga en este momento y estoy luchando con encontrar una forma de hacerlo ... ya li $ 5,2.5 no funciona.

Alguien tiene algún consejo?

Estoy trabajando en C, estaba pensando que de alguna manera pudiera conseguir la representación entera del flotador estoy trabajando con (es decir, por lo que la flota representación binaria == la representación binaria enteros) y luego cargar el "entero" en el registro y tratarlo como un flotador a partir de entonces.

Tal vez sea demasiado tarde, pero estoy atascado en este momento.

¿Fue útil?

Solución

Se tendrá que utilizar los registros de coma flotante para cargar sus flotadores.

En lugar de:

li $5,2.5

Trate:

li.s $f5,2.5

Tome un vistazo a las instrucciones y mFc1 mtc1 para moverse entre enteros y punto flotante registros.

Otros consejos

MARS no parecen tener ninguna instrucción instrucciones / seudo que la carga flotantes valores inmediatos puntuales en registros flotantes. En su lugar, es necesario poner el valor de punto flotante en la memoria y cargar el registro de la memoria:

.data
fp1: .double 2.5
fp2: .double -0.75

.text   
l.d $f0, fp1
l.d $f2, fp2
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top