If you have an M1 Mac and want to compile and execute x86_64 assembly code, make sure you install Rosetta 2 and nasm
(brew install nasm
).
Than, take a 64 Bit assembly program, e.g. from this tutorial page (https://cs.lmu.edu/~ray/notes/nasmtutorial/) in Section
"Your First Program" for macOS, save it to a file called hello.asm
.
Compile, link and execute the program:
nasm -f macho64 hello.asm
ld hello.o -o hello -macosx_version_min 11.0 -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lSystem
./hello
This does not work on Sonoma.
Need to change this line:
mov rsi, message
to
lea rsi, [rel message]
Also global label needs to be _start
global _start
and link:
ld hello.o -o hello -macos_version_min 13.0 -e _start