2011-12-23 18 views
7

Por ejemplo, estoy ejecutando Windows 7 64 bit, pero parece que todos los mejores recursos para aprender lenguajes ensambladores hablan de x86. Si es posible escribir x86 en x64, ¿cuál es la mejor manera de hacerlo? ¿Hay conversores en existencia? Además, ¿cuáles son algunos buenos recursos para 64 bit programación de ensamblaje?Escribiendo ensamble x86 en un procesador x64 bit

+1

Consulte esta pregunta: http://stackoverflow.com/questions/2352048/assembly-32-bit-vs-64-bit –

Respuesta

3

x86 definitivamente no es el mejor, primero, ensamblaje para aprender. si es el último que quieres aprender. pago https://github.com/dwelch67 lsasim es un conjunto de instrucciones diseñado para aprender a ensamblar. pcemu_samples es un pcemu modificado (emulador 8086/88 capaz de ejecutar dos), con las llamadas de bios/dos eliminadas, específicamente para aprender el ensamblador 8088/86. Recomiendo que cuando se acerque al ensamblaje x86 comience con 8088/86, algo así como las pcemu_samples (donde se ve obligado a enfocarse en el lenguaje ensamblador y no en las llamadas al sistema). dosbox y bochs pueden ejecutar programas 8088/86 con dos/bios cuando desee pasar a las llamadas al sistema. ENTONCES suba a las mejoras de 32 y 64 bit, multi-core y todo eso.

Te harás un gran beneficio aprendiendo x86 al final. msp430, lo lsasim arriba, brazo, pulgar (no thumb2) son todos buenos puntos de partida. Aprender algunos conjuntos de instrucciones diferentes al menos, si no muchos, también te beneficiarán enormemente. Tengo simuladores para algunos de estos que le dan una buena visibilidad de lo que está sucediendo. Recomiendo aprender primero sobre simuladores, simuladores en los que puede obtener visibilidad.

si comienza con 8088/86 y luego pasa a 386/486 y luego hacia adelante a x64, las otras respuestas que recibe sobre las instrucciones (sorta) que funcionan en todas partes tendrán mucho sentido.

4

La mayoría de los sistemas operativos de 64 bits pueden ejecutar binarios de 32 bits sin problemas. Como tu pregunta está etiquetada [windows], deberías estar bien. Si sigue las instrucciones para crear un binario de 32 bits a partir de sus tutoriales, los binarios resultantes deberían funcionar sin modificaciones. Si está utilizando una cadena de herramientas diferente, es posible que necesite encontrar la bandera que le dice a su ensamblador que produzca código de 32 bits en lugar de código de 64 bits.

Las diferencias entre la programación de ensamblaje de 32 y 64 bits son mínimas. Hay algunas instrucciones nuevas y mejoradas para manejar los tipos de 64 bits, más algunos nuevos nombres de registro. También hay una nueva ABI con la que lidiar. Intel tiene manuales de desarrolladores de software que describen todas las instrucciones posibles y cómo funcionan.

1

x64 puede ejecutar aplicaciones x86 sin dificultad en la mayoría de los casos. Hay algunas diferencias en el ABI, pero si solo desea aprender la programación de ensamblado, cualquier recurso x86 que mire debería estar bien. En cuanto a aprender la programación de ensamblaje en sí, esa es una pregunta más amplia. Es posible que desee consultar NASM para comenzar.

Cuestiones relacionadas