Ces notes constituent un support de travaux pratiques pour un cours
d'architecture élémentaire des ordinateurs. Lors de ces
séances, il s'agit principalement de programmation assembleur sur
des ordinateurs personnels d'architecture intel 32 bits gérés
par le système d'exploitation Linux. L'assembleur utilisé est le
gnu assembleur et nous utiliserons le gnu debugger pour l'exécution
pas à pas et l'examen de la mémoire et des registres.
Ce texte — comme son titre l'indique — vise deux objectifs :
fournir une synthèse élémentaire des notions
requises par un débutant pour l'apprentissage de l'assembleur ;
donner une représentation architectonique1 du sujet.
Ainsi, ces notes ne prétendent ni à l'exhaustivité — toutes
les instructions et possibilités de l'assembleur ne sont pas
présentées — ni à apprendre à écrire du code optimal. Cet
enseignement est plutôt orienté par la perspective d'en faire une
base permettant de comprendre comment un programme — en C par
exemple — est exécuté par la machine.
Un bref descriptif du jeu d'instruction des processeurs 32 bits de
type intel est disponible en annexe D (pour
plus d'information voir [2]). De plus, en utilisant
la commande info as dans un interpréteur de commande, on
accède au manuel d'utilisation de gas.
Conventions typographiques.
Dans ce document, nous utilisons les conventions suivantes :
foo représente la commande foo dans un interpréteur
de commandes ;
foo représente la commande foo dans un
environement — par exemple gdb ;
foo représente une instruction assembleur.
Le guide d'utilisation de gas.
Ce document n'est pas un manuel présentant le gnu assembleur ; pour
ce faire, nous suggérons l'utilisation du guide d'utilisation
accessible depuis un interpréteur de commandes par l'instruction
info gas.
Dans notre contexte, on appelle structure de contrôle toute
séquence d'instructions qui permet de contrôler la succession des
actions d'un programme. En ce qui concerne l'assembleur, il s'agit
exclusivement de séquence d'instructions de sauts
conditionnels.