2010-10-10 10 views
7

He intentado durante la última semana encontrar un recurso decente en aritmética de coma flotante para el ensamblaje x86 utilizando AT & sintaxis T. Idealmente, una lista de los códigos de operación, lo que hacen y dónde se almacenan los flotadores. Estoy familiarizado con la representación IEEE 754. No estoy familiarizado con la pila de coma flotante y con cualquier conjunto que se refiera a la aritmética de coma flotante.Una referencia para la aritmética de punto flotante de montaje de sintaxis de AT & T

Es extraño lo difícil que es encontrarlo.

EDIT: He estado viendo la salida gcc -S durante el último mes aprendiendo el ensamblaje. Así fue como resolví todo menos la aritmética de coma flotante. Incluso después de pasar por decenas de pequeños programas compilados sin optimizaciones, todavía no puedo averiguar mucho sobre los códigos de operación de coma flotante y la pila. Solo he encontrado ejemplos triviales en línea.

+0

Re edición: Por lo tanto, siga la sugerencia de leer 'libm', y lea los manuales de Intel. Lo siento, no tienes alternativa. No hay _ recursos decentes basados ​​en la sintaxis de AT & T, porque _nobody_ serio acerca de la programación de ensamblaje x86 lo usa. –

+1

De acuerdo, entonces fui demasiado duro al decir que nadie en serio usa la sintaxis de AT & T. De todos modos, si busca "devpro-libm" en Google, puede descargar el código 'libm' utilizado en OpenSolaris. Esta puede ser una descarga más ligera que 'glibc'. Luego, busque en el directorio 'usr/src/libm/src/i386/common' --- es una mina de oro del ensamblaje de coma flotante, todo escrito en sintaxis de AT & T. –

+1

Estaba a punto de descargar eso. Gracias :) Tampoco me gusta la sintaxis de AT & T y tiene algunas inconsistencias graves, pero tengo que usar lo que tengo que usar. A pesar de ser la sintaxis de Intel, [este] (http://www.programmers-corner.com/tutorial/31) es una guía concisa similar a lo que estaba buscando. Los cambios para acomodar la sintaxis de AT & T son fáciles. – Kizaru

Respuesta

4

Bien. Comience con la sintaxis Intel primero, porque la mayoría de los programadores de ensambles x86 lo usan. Intel's manuals son un gran recurso para aprender cómo el x86 maneja cosas de coma flotante.

Después de aprender ensamblaje x86 en general, AT & T sintaxis no es tan difícil de aprender. Las principales cosas a tener en cuenta son:

  • Los registros tienen el prefijo %; constantes numéricas se prefijan por $
  • pedido de registro se intercambia para la mayoría de las instrucciones de dos operandos (es decir, fuente primera, meta última)
  • nombres de instrucciones especifican el tamaño; entonces, en lugar de mov dword ptr [ebx], 1337, diría movl $1337, (%ebx).
+0

No puedo usar la sintaxis de Intel. Esto es para un proyecto de compilación y estamos usando la sintaxis de AT & T para que funcione con gcc. – Kizaru

+2

@Kizaru: Sé que no puedes usarlo para tu proyecto. Pero deberías _learn_ con eso primero. Use nasm como su ensamblador, inicialmente. Luego, una vez que te familiarices con la programación del ensamble x86, utiliza la sintaxis de AT & T. Haga que su proyecto pueda enviar a ambos formatos, inicialmente apuntando a nasm, si lo desea. –

+0

Tengo el compilador completamente configurado para todo, excepto flotadores en este momento. Es lo único que me detiene. Este es un proyecto para un curso. – Kizaru

Cuestiones relacionadas