2012-05-22 43 views
8

Quiero programar el ensamblaje de Windows de 64 bits (preferiblemente usando NASM). He buscado bastante, pero en google, pero parece que no puedo encontrar un compilador de Windows de 64 bits. Algunos sitios mencionaron ml64 pero parece que ya no está incluido en VC++. Lo he intentado con el ensamblaje de 32 bits, pero obviamente se bloquea en mi máquina de 64 bits. ¿Es posible escribir, compilar y ejecutar aplicaciones de ensamblaje de 32 bits en una máquina de Windows de 64 bits? ¿O debería escribirse y compilarse para 64 bits?ensamblador de Windows de 64 bits

Gracias.

+0

Para el registro, ml64.exe está incluido en la instalación de VS2010. No estoy seguro de si está incluido en la versión Express ... – PinnyM

+1

VS2010 Express usuario aquí, ml64.exe está presente en las carpetas de Visual Studio/VC/bin/amd64 y bin/x86_amd64. – DCoder

+0

Si desea utilizar NASM, vaya a http://nasm.us y descargue la versión Win32 de NASM. Se ejecutará en un sistema de 64 bits y creará aplicaciones de 64 bits. –

Respuesta

6

Yasm (*) es un ensamblador NASM-rewritten moderno, multiplataforma que es capaz de ensamblar para ambos conjuntos de instrucciones x86 y AMD64/x86-64.

Sin embargo ... Lo que probablemente quiere decir es que necesita un vinculador para vincular el código/los archivos del objeto ensamblado para crear un archivo ejecutable. Al menos el paquete de proyecto MinGW (Minimal GNU para Windows) completamente gratuito se envía con un enlazador (llamado ld) capaz de ensamblar ejecutables Windows de 32 y 64 bits desde archivos de objeto (formato de objeto ELF y PE, al menos).

Definitivamente puede compilar/compilar de forma cruzada proyectos de 32 bits en un entorno de 64 bits y viceversa, dado que proporciona parámetros de línea de comandos correctos para el ensamblador y el enlazador. Consulte la documentación de las herramientas de su elección para obtener detalles más precisos.

*) http://yasm.tortall.net/

+0

Creo que ld es solo el enlazador .. –

+0

Eso es correcto. Gracias por señalarlo, malentendí por completo el contexto con prisa y mezclé la terminología. He editado y mejorado la respuesta para obtener más detalles. – zxcdw

+0

Muchas gracias por su publicación. Estoy usando ld para vincularlo, pero parece que todavía está fallando. ¿Es posible que me proporcione un fragmento de código ensamblador que pueda compilarse con yasm y estar vinculado en un sistema de 64 bits, pero escrito en ensamblaje de 32 bits? No tiene que hacer nada. Simplemente compila y ejecuta sin fallar. Eso seria genial. –

3

Es posible escribir, ensamblar y ejecutar ensamblajes de 32 bits en Windows de 64 bits. He escrito algunas utilidades en masm32 en mi máquina Windows 7 x64. Si desea ensamblar código de 64 bits, creo que FASM admite código de objeto de 64 bits.

Cuestiones relacionadas