estaba leyendo this artículo, y en un momento me da este programa nasm:nasm/tema gcc en 64 bits de Mac OS X Lion
; tiny.asm
BITS 32
GLOBAL main
SECTION .text
main:
mov eax, 42
ret
y me dice que ejecute los siguientes comandos:
$ nasm -f elf tiny.asm
$ gcc -Wall -s tiny.o
me dieron el siguiente error:
ld: warning: option -s is obsolete and being ignored
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
me aventuré a adivinar lo que podría ser el problema, y ha cambiado la línea de BITS para leer:
BITS 64
Pero cuando corro nasm -f elf tiny.asm
me sale:
tiny.asm:2: error: `64' is not a valid segment size; must be 16 or 32
¿Cómo modificar el código para trabajar en mi máquina?
Editar:
que siguió el consejo de Alex de los comentarios y descargar una versión más reciente. Sin embargo,
./nasm-2.09.10/nasm -f elf tiny.asm
se queja
tiny.asm:2: error: elf32 output format does not support 64-bit code
Por otro lado,
./nasm-2.09.10/nasm -f elf64 tiny.asm
gcc -Wall -s tiny.o
se queja
ld: warning: ignoring file tiny.o, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Comprueba si tienes la última nasm y prueba '-f elf64'. –
@Alex elf64 me dio "formato de salida no reconocido". En cuanto a la versión, nasm -v me dio "NASM versión 0.98.40 (Apple Computer, Inc. compilación 11) compilada el 3 de noviembre de 2011" 0.98 parece que podría ser una versión anterior, pero fue compilada en 2011, por lo que no puede ser tan antigua ¿verdad? ¿Por qué Apple enviaría un software obsoleto? ¿Un ensamblador predeterminado que no puede ensamblar código de 64 bits en una plataforma de 64 bits? – math4tots
La tuya está horriblemente desactualizada. La mina imprime "NASM versión 2.09.10 compilada el 15 de julio de 2011". La versión más nueva es [aquí] (http://www.nasm.us/pub/nasm/releasebuilds/2.09.10/). –