Tema: Consulta sobre GAS

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


Este tema viene de: www.exactas.org
http://www.exactas.org/

Dirección de este sitio:
http://www.exactas.org//modules.php?op=modload&name=XForum&file=viewthread&fid=21&tid=563