Le très célèbre compilateur C/C++ Gnu (gcc
) est un compilateur
32 bits très optimisé qui est au coeur du projet GNU, qui
gère assez bien l'architecture x86, et qui inclue la possibilité
d'insérer du code assembleur dans les programmes C de telle manière
que l'allocation de registres peut être soit spécifiée, soit effectuée
par gcc
. gcc
fonctionne sur la plupart des
plate-formes existantes comme sous Linux, *BSD, VSTa, OS/2, *Dos, Win*, etc.
Le site principal de gcc
est ftp://prep.ai.mit.edu/pub/gnu/
ainsi que les autres applications du projet GNU.
Toutefois, il existe bon nombre de miroirs (NdT : comme
ftp.ibp.fr/pub/gnu
en France).
Toutefois, les sources adaptés pour votre système d'exploitation favori ainsi qu'une version binaire toute prête peut être trouvée sur les sites ftp usuels.
Pour la version Linux de gcc
, il suffit de regarder sur le site
http://www.linux.org.uk/
Le portage le plus fameux de gcc
est appelé djgpp
et peut être trouvé dans l'arborescence de la plupart des sites
ftp, et en particulier sur le site http://www.delorie.com/djgpp/
.
Il existe également un portage de gcc sous OS/2 appelé EMX qui fonctionne également sous Dos. Consultez les sites http://www.leo.org/pub/comp/os/os2/gnu/emx+gcc/ et http://warp.eecs.berkeley.edu/os2/software/shareware/emx.html.
La documentation de GCC inclue des fichiers au format texinfo,
que vous pouvez convertir au format tex, compiler avec
le programme du même nom, et imprimer. Sinon, vous pouvez les consulter
d'une manière interactive en utilisant les fichiers info
d'emacs. Les fichiers info
sont généralement trouvés
dans toute bonne installation de gcc.
La partie à consulter est :
C Extensions::Extended Asm:: Section Invoking GCC::Submodel Options::i386 Options::Cette partie vous donne les contraintes concernant les noms de registres :
abcdSDB
correspondent respectivement au registres (aucune lettre
pour %esp) :
%eax, %ebx, %ecx, %edx, %esi, %edi, %ebp
Une URL concernant ce document et cette section au format HTML se trouve sur : http://www.cygnus.com/doc/usegcc_89.html.
Les ressources concernant le DJGPP Games (ne concerne pas seulement les gens qui fouinent le code des jeux...) possède une page particulière sur l'assembleur : http://www.rt66.com/~brennan/djgpp/djgpp_asm.html.
Enfin, il existe une page Web appelée DJGPP Quick ASM Programming
Guide qui contient certaines URL, FAS, la syntaxe assembleur
d'AT&T, certaines information concernant l'assembleur inline
et la conversion de fichier objets en bibliothèques :
http://remus.rutgers.edu/~avly/djasm.html.
En fait, gcc dépend de gas
du côté de l'assembleur et suit
sa syntaxe (voir plus vas). N'oubliez pas que l'assembleur en ligne
implique la mise entre quotes des signes pourcent pour qu'ils
soient passés à gas
. Lire la section traitant gas
.
Vous trouverez beaucoup d'exemples très instructifs
dans le sous-répertoire linux/include/asm-i386/
des sources du système d'exploitation libre Linux.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre