Multiplica dos registros flotantes en spim

Quiero escribir un pequeño programa en spim que calcule la longitud de la circunferencia de un círculo y lea el valor del radio del usuario... y aquí está el código

    sw $s0, p2
l.s $f6 ,p2
li.s $f2 ,3.4

mul.s $f8, $f2, $f6

s0 es el valor del radio que ingresó en la variable flotante del usuario p en la sección .data

después de ejecutar el programa tengo estos valores en los registros f2,f6,f8 (cuando s0=3):

FP2 = 4059999a
FP6 = 00000003
FP8 = 0000000a

es cierto ese resultado? y si es cierto por que el valor en f8 10 no 10.2 ?

preguntado el 03 de mayo de 12 a las 16:05

1 Respuestas

0000000a es la representación hexadecimal del número de coma flotante. No significa "10", significa 1.4e-44.

El problema es que no está convirtiendo correctamente el entero en $s0 en un flotante. Considere el caso donde $s0 = 3. Su llamada a "sw $s0, p2" simplemente coloca los bits 0x00000003 en la ubicación de memoria p2. Su llamada a ls "$f6, p2" pone esos mismos bits en $f6. Sin embargo, 0x00000003 no significa "3" como número de punto flotante, sino 4.2x10-45.

Respondido 16 Oct 12, 14:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.