¿Cómo escribir el programa hello world en lenguaje ensamblador para Mac OS X de 64 bits usando printf?
Estoy tratando de aprender a escribir lenguaje ensamblador para Mac OS de 64 bits. No tengo ningún problema con Mac OS de 32 bits y Linux de 32 bits y 64 bits.
Sin embargo, Mac OS 64 bit es diferente y no pude entenderlo. Por lo tanto, estoy aquí para pedir ayuda.
No tengo problemas para usar la llamada al sistema para imprimir. Sin embargo, me gustaría aprender cómo llamar a las funciones C usando el lenguaje ensamblador de 64 bits de Mac OS.
Por favor mire el siguiente código
.data
_hello:
.asciz "Hello, world\n"
.text
.globl _main
_main:
movq $0, %rax
movq _hello(%rip), %rdi
call _printf
Uso $ gcc -arch x86_64 hello.s
para ensamblar y vincular.
Genera código binario. Sin embargo, recibí un error de segmentación al ejecutarlo.
Intenté agregar "subq $ 8,% rsp" antes de llamar a _printf, todavía el mismo resultado que antes.
¿Qué hice mal
Por cierto, ¿es esa la forma de depurar este código en Mac? Intenté agregar -ggdb o -gstab o -gDWARF, y $ gdb ./a.out, y no puedo ver el código y establecer puntos de interrupción.