Multiplica dos registros flotantes en spim
Frecuentes
Visto 201 veces
0
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 ?
1 Respuestas
0
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 spim or haz tu propia pregunta.