1
©Pierre Marchand, 2001 1
Objectifs :
À la fin de cette unité vous connaîtrez :
• Le rôle du langage machine.
• La différence entre compilation et intreprétation.
• Le rôle d’un assembleur, d’un éditeur de liens et d’un chargeur.
• Les grandes lignes du fonctionnement d’un compilateur.
• La définition d’un langage informatique.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 2
13.1 Langage machine
Le langage machine est une quence de bits constituant des
instructions directement exécutables par le processeur.
Le langage d’assemblage ou assembleur est un langage qui permet au
programmeur d’utiliser des codes mnémoniques (ADD, DIV, SUB,
MOV, etc.) au lieu de ces séquences de bits. Ces mnémoniques sont
traduits en langage machine par un programme appelé assembleur.
Les adresses des instructions et des variables peuvent aussi être
données sous forme symbolique. Historiquement, l’assembleur a été le
premier langage de programmation.
Il y a généralement une instruction assembleur par instruction machine.
Il y a un langage d’assemblage différent pour chaque type de machine
ou processeur : Pentium, PowerPC, Alpha, Sparc, etc. L’assembleur
n’est donc pas un langage portable.
Unité 4a: Architecture logicielle
2
©Pierre Marchand, 2001 3
13.2 Traduction et interprétation
Les langages évolués tels que Pascal, C, FORTRAN, COBOL, BASIC,
APL, PL/1, ADA, Java, etc. convertissent des instructions de haut
niveau en langage machine. Ces langages sont plus portables que
l’assembleur au niveau du code source.
Cette conversion peut s’effectuer de deux façons : la traduction ou
l’interprétation.
La traduction consiste à générer, dans le langage binaire de la machine
cible, un programme ayant les fonctionnalités définies dans le pro-
gramme source. Ce programme exécutable est ensuite chargé en
mémoire pour être exécuté.
Le programme traducteur s’appelle compilateur. L’assembleur est aussi
un compilateur. Autres membres de cette catégorie : Pascal, C / C++,
FORTRAN, COBOL, Algol, etc.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 4
13.2 Traduction et interprétation
Dans le cas de l’interprétation, le travail de traduction s’effectue au
moment de l’exécution. L’interprète doit donc se trouver dans la
machine cible au moment de l’exécution. Exemples : BASIC, APL,
Smalltalk. Chaque instruction de code source est convertie en une ou
plusieurs instructions en langage machine. L’exécution commence tout
de suite, contrairement au cas de la traduction, mais est plus lente.
Dans le cas du langage Java, on obtient une excellente portabilité en
utilisant une approche mixte. On utilise un compilateur pour convertir le
code source en code intermédiaire, indépendant de la plate-forme,
appelé byte-codes. Ces byte-codes sont ensuite interprétés par la
machine cible au moyen d’un interprète appelé machine virtuelle qui
convertit au fur et à mesure les byte-codes en langage machine.
Unité 4a: Architecture logicielle
3
©Pierre Marchand, 2001 5
13.3 Langage d’assemblage
Nous verrons en détail l’assembleur du Pentium III un peu plus loin.
13.4 Fonctionnement de l’assembleur
L’assembleur est un programme qui traduit en langage machine le
programme source écrit en langage d’assemblage.
13.4.1 Macroassembleur et cross-assembleur
Une macro-instruction ou macro est une séquence d’instructions à
laquelle on attribue un nom. Ensuite, chaque fois qu’on utilise ce
nom dans le programme, l’assembleur le remplace par la séquence
d’instructions en question. Un assembleur qui autorise l’utilisation de
macros est appelé un macro-assembleur.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 6
13.4 Fonctionnement de l’assembleur
13.4.1 Macroassembleur et cross-assembleur
Un cross-assembleur traduit un programme source en un pro-
gramme objet pour une machine autre que celle sur laquelle il
effectue la traduction.
Un macroassembleur permet la création et l’utilisation de macros
dans le code source. Une macro est un nom qu’on donne à un
groupe d’instructions qui revient souvent dans un programme. On
peut ensuite remplacer chaque occurrence de ce groupe par son
nom, ce qui peut rendre le code source plus lisible.
Unité 4a: Architecture logicielle
4
©Pierre Marchand, 2001 7
13.5 Développement d’un programme
Les outils d’un environnement de développement (IDE) standard
sont les suivants : éditeur de texte, traducteur (compilateur,
assembleur), éditeur de liens, chargeur et débogueur.
13.5.1 Éditeur de texte
Le code source est saisi et édité au moyen d’un éditeur de texte.
Idéalement, on utilise un éditeur syntaxique, capable de vérifier la
syntaxe des programmes dans un langage donné et de générer
automatiquement les structures syntaxiques propres au langage
utilisé. Les meilleurs colorent différemment les mots réservés du
langage, les chaînes de caractères, les commentaires, etc., ce qui
améliore la lisibilité du code.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 8
13.5 Développement d’un programme
Le traducteur ou compilateur convertit le programme source en
programme objet.
L’éditeur de liens combine plusieurs programmes objets pour
réaliser un programme exécutable.
Le chargeur place ce programme exécutable en mémoire.
Lors de l’exécution, un débogueur permet de suivre le déroulement
du programme ou d ’intervenir en cas d’erreur.
Unité 4a: Architecture logicielle
5
©Pierre Marchand, 2001 9
13.5 Développement d’un programme
13.5.2 Éditeur de liens
L’éditeur de liens (linker ou link editor) est un logiciel qui permet de
combiner plusieurs programmes objets en un seul.
On structure les gros programmes en modules que l’on traduit
indépendamment. Ainsi, un programme peut être constitué de
plusieurs fichiers contenant chacun un ou plusieurs sous-program-
mes. Tous ces fichiers sont traduits séparément, mais peuvent
utiliser les sous-programmes et les variables se trouvant dans les
autres fichiers, ce qui donne lieu à des références externes.
L’éditeur prend ces différents morceaux de programme et les groupe
pour former un programme complet et exécutable.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 10
13.5.3 Chargeur
Le programme objet, obtenu après l’édition de liens, doit encore être
chargé en moire centrale pour être exécuté. Le chargeur
s’occupe de cette tâche. Dans les systèmes d’exploitation moder-
nes, on décide au dernier moment à quelle adresse charger le
programme, puisque plusieurs programmes peuvent résider simul-
tanément en mémoire.
Dans les anciens systèmes (comme DOS), on pouvait fixer les
adresses à l’avance et charger le programme à l’endroit spécifié. On
utilisait donc un chargeur absolu.
Ajourd’hui, les chargeurs s’occupent de reloger les programmes en
mémoire centrale. Ce sont des chargeurs relogeables.
Unité 4a: Architecture logicielle
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !