gerardohuck - 17/2/2006 a las 01:18
Buenas, Soy un alumno de la carrera de LCC que
está tratando de hacer la práctica correspondiente a
Arquitectura. Me está bastante trabajo encontrar material sobre
programación en assembler
(GAS,
para x86) en la parte de punto flotante. Varios manuales que
bajé de la web me resultaron inútiles ya que no andaban
las cosas que ahí decían. (sobre todo, como realizar
operaciones con ellos, imprimirlos, pasarlos de registros del
coprocesador a registros normales, a la menoría, etc9
Aparte de eso, no encuentro información concreta sobre la
librería ieee754.h, más concretamente que
funcíones implementa o soporta.
Si alguno me podría dar alguna mano, le estaría muy
agradecido, ya que le he mandado varios mails a Guido, pero no contesta
por ahora.
Gracias de nuevo.
duilio
- 19/2/2006 a las 15:23
Recordá que IEEE 754 es sólo un
estándar de representación binaria de números de
punto flotante, no una biblioteca. Cada implementación que
quiera adherir al estándar hará lo necesario para
soportarla, que puede ir desde nada hasta una biblioteca que emule
aritmética de punto flotante mediante aritmética entera
(esto es necesario si, por ejemplo, el micro subyacente no tiene
operaciones de punto flotante).
Como nombraste el header ieee754.h, imagino que habrás probado
programando en C en Linux o Windows. En ese caso la cosa es muy simple.
Como se puede ver en dicho header (de menos de 200 líneas), que
en Linux usualmente está en /usr/include, mediante la union
ieee754_float se puede ver a un float de dos formas: como el float
usual de C mediante el campo f de la union, o bien se puede
acceder a la mantisa, exponente y signo de la representación
IEEE 754 mediante el campo ieee de la misma union. No existen en
dicho header operaciones para trabajar sobre esta
representación, justamente el hacerla es la parte que le interesa
a Guido que los alumnos aprendan.
Te recomiendo que primero comprendas cómo trabajan las
operaciones sobre la representación IEEE 754 (cap. 4
sección 8 vol. 1 de "Estructura y diseño de computadores"
de David Patterson). Luego implementá dichas operaciones en C
usando la union anterior. Recién luego de ello,
pasá a implementar lo mismo en assembler.
Saludos,
Duilio.
gerardohuck - 20/2/2006 a las 00:27
Muchas gracias por la info y los consejos! Espero
poder avanzar un poco más ahora! Gracias de nuevo. Gerardo Huck
|