5. Assembleurs

Contenu de cette section

5.1 Assembleur Gcc en ligne

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.

Où trouver Gcc ?

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.

Où trouver de la documentation concernant l'assembleur avec gcc ?

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