18 oct. 2010

L'assembleur avec un macbook

Je suis une UEL ou l'on apprend l'assembleur pour processeur 8086.
Le professeur nous a conseillé d'utiliser une machine de la fac pour programmer mais étant curieux je me suis dis pourquoi pas essayer avec mon macbook ? de toute manière depuis que les mac sont passé sous architecture intel, je pense que ca n'est surement pas si différent que ca !
Pour commencer il faudra utiliser Nasm (Netwide Assembler), qui est disponible sur Mac. Je pense qu'il est possible de le compiler directement à partir des sources, peut être même qu'il y a un binaire disponible ? Mais j'ai opté pour macport, je l'installe donc avec:
sudo port install nasm
Il faut donc avoir déjà installé macport. Je suis sur qu'avec Fink c'est aussi possible de l'installer.
Il est recommandé d'utiliser gcc gnu, mais ca fonctionne très bien avec le gcc d'Apple.
J'ai trouvé ici un tutorial pour un Hello World en assembleur.
D'ailleurs il ne faut surtout pas oublier de spécifier l'architecture à nasm lorsque l'on va compiler notre source en fichier objet:
nasm -f macho helloworld.asm
Puis l'appel à gcc se fait par:
gcc -arch i386 helloworld.o -o helloworld
Chez moi j'ai du rajouter le flag -arch i386 car par défaut gcc s'attend à un fichier objet architecturé pour x86_64, or nasm retourne un fichier objet architecturé i386. Comme on fournit déjà le fichier objet à gcc, il ne fait que l'édition de liens, donc je pense qu'on peut passer par ld directement mais j'ai la flemme de chercher.
Par contre j'ai un soucis lors de l'execution du programme, une erreur de segmentation...

liens utiles:


Aucun commentaire: