Bonjour tout le monde en utilisant l'assembleur x86 sur Mac 0SX
Je suis en train de plonger dans certains x86 assemblage de programmation sur mon Mac, mais j'ai du mal à produire un exécutable. Le problème semble être à l'étape de lien.
helloWorld.s:
.data
HelloWorldString:
.ascii "Hello World\n"
.text
.globl _start
_start:
# load all the arguments for write()
movl $4, %eax
movl $1, %ebx
movl $HelloWorldString, %ecx
movl $12, %edx
# raises software interrupt to call write()
int $0x80
# call exit()
movl $1, %eax
movl $0, %ebx
int $0x80
Assembler le programme:
as -o helloWorld.o helloWorld.s
Lier le fichier objet:
ld -o helloWorld helloWorld.o
L'erreur que je reçois à ce point est:
ld: could not find entry point "start" (perhaps missing crt1.o) for inferred architecture x86_64
Tous les conseils sur ce que je fais mal /manquant serait très utile. grâce
source d'informationauteur D.C.
Vous devez vous connecter pour publier un commentaire.
Vous trouverez probablement plus facile à construire avec gcc plutôt que d'essayer de micro-gérer l'assembleur et l'éditeur de liens, par exemple
(Vous aurez probablement envie de changer
_start
à_main
si vous aller dans cette voie.)Accessoirement, il peut être instructif de commencer avec un programme en C, et l'étude de l'asm généré à partir de ce. E. g.
lorsqu'il est compilé avec
gcc -Wall -O3 -m32 -fno-PIC hello.c -S -o hello.S
génère:Vous pouvez envisager d'utiliser cela comme un modèle pour votre propre "Hello world" ou autres expérimentale asm programmes, en particulier étant donné qu'il a déjà construit et exécute:
Un commentaire final: méfiez-vous de prendre des exemples dans Linux orientée asm livres ou des tutoriels et en essayant de les appliquer sous OS X, il existe d'importantes différences !
Essayer:
alors:
Info:
bonjour.asm
Puis exécutez:
C'est une solution qui fonctionne pour Mac OS X Mach-0 GNU assembleurs