SlideShare une entreprise Scribd logo
1  sur  23
©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 sé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
©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
©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
©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
©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 mé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
©Pierre Marchand, 2001 11
13.5.4 Débogueur
Le débogueur (debugger) est un logiciel qui facilite la mise au point
de programmes et la correction des erreurs ou bogues (bugs). Il
permet d’examiner le contenu de la mémoire ainsi que celui des
différents registres du processeur.
Il permet également de créer des points d’arrêt (breakpoints) lors de
l’exécution du programme à mettre au point, et à partir de ces points
d’arrêt, d’exécuter le programme pas à pas, i.e. instruction par
instruction tout en observant le contenu des registres, des variables
et de la mémoire.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 12
14.2 Langages évolués
14.2.1 Définition d’un langage
Un langage informatique comprend :
• un alphabet constitué des symboles élémentaires disponibles,
• des noms ou identificateurs formés de groupes de symboles de
l’alphabet,
• des phrases ou instructions constituées de séquences de noms
et de symboles de ponctuation.
Les phrases doivent respecter la syntaxe du langage, i.e. la
position des symboles les uns par rapport aux autres. Pour
représenter la syntaxe d’un langage, on utilise la notation BNF
(Backus-Naur Form) ou des diagrammes syntaxiques.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 13
14.2 Langages évolués
14.2.1 Définition d’un langage
Syntaxe d’un langage en forme BNF
<lettre> ::= a | b | c | d …. y | z
<chiffre> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<identificateur> ::= <lettre> | <identificateur><lettre>
| <identificateur><chiffre>
<entier> ::= <chiffre> | <entier><chiffre>
<terme> ::= <entier> | <identificater>
<opérateur> ::= + | - | * | /
<expression> ::= <terme> | <terme><opérateur><expression>
<affectation> ::= <identificateur> = <expression>
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 14
14.2 Langages évolués
14.2.1 Définition d’un langage
Syntaxe d’un langage à l’aide de diagrammes syntaxiques
identificateur
entier
terme
Unité 4a: Architecture logicielle
lettre
lettre
chiffre
chiffre
entier
identificateur
©Pierre Marchand, 2001 15
14.2 Langages évolués
14.2.1 Définition d’un langage
Syntaxe d’un langage à l’aide de diagrammes syntaxiques
opérateur
expression
affectation
Unité 4a: Architecture logicielle
terme
identificateur
+
-
*
/
opérateur
= expression
©Pierre Marchand, 2001 16
14.3 Compilation
14.3.1 Structure d’un compilateur
Unité 4a: Architecture logicielle
Analyse lexicale
Analyse syntaxique
Analyse sémantique
Génération de code
intermédiaire
Optimisation du code
Génération de code objet
Programme en
code source
Programme en
code objet
Table des
symboles
Arbre
syntaxique
©Pierre Marchand, 2001 17
14.3 Compilation
14.3.2 Analyse lexicale
C’est la première phase de la compilation. Elle consiste à lire la
séquence de caractères constituant le programme source et à
produire une séquence d’éléments syntaxiques du langage
(tokens) traités ensuite par l’analyseur syntaxique : nombres,
identificateurs, opérateurs, mots réservés, séparateurs, etc.
Les identificateurs, tels que les noms des variables et des
procédures, ainsi que leurs attributs, sont stockés dans la table
des symboles. Les commentaires sont éliminés.
L’analyseur lexical détecte les erreurs telles que :
• identificateurs trop longs ou illégaux
• caractères ou nombres illégaux.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 18
14.3 Compilation
14.3.3 Analyse syntaxique
L’analyseur syntaxique reçoit une liste d’éléments syntaxiques de
l’analyseur lexical. Il vérifie si cette liste est correcte par rapport à
la syntaxe du langage. À partir ce ces éléments, il génère l’arbre
syntaxique du programme.
Il y a deux approches pour étabir cet arbre. L’approche ascen-
dante et l’approche descendante.
L’approche ascendante consiste à partir des éléments constituant
la phrase à traiter pour trouver toutes les règles qui permettent de
remonter jusqu’à la racine.
L’approche descendante consiste à partir de la racine et à
appliquer les règles qui permettent d’arriver à la phrase désirée.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 19
14.3 Compilation
14.3.3 Analyse syntaxique
Unité 4a: Architecture logicielle
<programme>
<suite d’instructions>
<instruction> ; <instruction> ;
<affectation> <conditionnelle>
<ident> ;= <expression> if <booléenne> then <instruction>
val <ident><opérateur> <nombre>
<nombre> <chiffre>
<chiffre> 0
<ident>
val := val + 20;
if good then val := 0;
2
good
<affectation>
<ident> ;= <constante>
val <chiffre>
0
val +
©Pierre Marchand, 2001 20
14.3 Compilation
14.3.3 Analyse syntaxique
Dans cette phase on détecte des erreurs telles que :
• Parenthèses non fermées,
• Structures de blocs ou instructions mal construites,
• Manque de délimiteurs.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 21
14.3 Compilation
14.3.4 Analyse sémantique
L’analyseur sémantique s’occupe du sens et de la signification
des phrases du langage. Il utilise l’arbre syntaxique pour identifier
les opérateurs et les opérandes des instructions. Il vérifie principa-
lement la correspondance des types à l’aide des informations de
la table des symboles.
Il détecte des erreurs telles que :
• identificateurs non déclarés ou déclarés plus d’une fois,
• Incompatibilité de type entre opérateur et opérandes.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 22
14.3 Compilation
14.3.5 Génération de code intermédiaire
Le compilateur génère ici un code intermédiaire à partir de l’arbre
syntaxique. Ce code est le code d’une machine abstraite.
14.3.6 Optimisation de code
À cette étape, on tente d’améliorer le code pour le rendre plus
rapide à l’exécution et/ou moins encombrant en mémoire. On
élimine d ’abord les redondances pour minimiser le nombre final
d’instructions. On essaye aussi d’évaluer les expressions utilisant
des constantes. Cette phase dépend fortement de l’architecture
de la machine cible.
Unité 4a: Architecture logicielle
©Pierre Marchand, 2001 23
14.3 Compilation
14.3.7 Génération de code objet
La génération de code objet est la phase finale de la compilation;
elle génère du code objet relogeable, i.e. relatif à l’origine 0. Elle
traduit chaque instruction du code intermédiaire en langage
machine de l’ordinateur cible.
Unité 4a: Architecture logicielle

Contenu connexe

Similaire à 1758yyui3-jjjujujjiopoooooAcetatesA0.ppt

presentation-compilateur.pptx
presentation-compilateur.pptxpresentation-compilateur.pptx
presentation-compilateur.pptxSaharSarraj
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXpprem
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
Les stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application FlexLes stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application Flexdavid deraedt
 
Les stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application FlexLes stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application Flexdavid deraedt
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsThierry Gayet
 

Similaire à 1758yyui3-jjjujujjiopoooooAcetatesA0.ppt (20)

presentation-compilateur.pptx
presentation-compilateur.pptxpresentation-compilateur.pptx
presentation-compilateur.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Introduction à Java
Introduction à JavaIntroduction à Java
Introduction à Java
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
C#
C#C#
C#
 
Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
Les stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application FlexLes stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application Flex
 
Les stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application FlexLes stratégies de localisation d'une application Flex
Les stratégies de localisation d'une application Flex
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Chapitre 1
Chapitre 1Chapitre 1
Chapitre 1
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Langage C
Langage CLangage C
Langage C
 
SystemC
SystemCSystemC
SystemC
 

Dernier

GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 

Dernier (20)

GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 

1758yyui3-jjjujujjiopoooooAcetatesA0.ppt

  • 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
  • 2. ©Pierre Marchand, 2001 2 13.1 Langage machine Le langage machine est une sé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
  • 3. ©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
  • 4. ©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
  • 5. ©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
  • 6. ©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
  • 7. ©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
  • 8. ©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
  • 9. ©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
  • 10. ©Pierre Marchand, 2001 10 13.5.3 Chargeur Le programme objet, obtenu après l’édition de liens, doit encore être chargé en mé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
  • 11. ©Pierre Marchand, 2001 11 13.5.4 Débogueur Le débogueur (debugger) est un logiciel qui facilite la mise au point de programmes et la correction des erreurs ou bogues (bugs). Il permet d’examiner le contenu de la mémoire ainsi que celui des différents registres du processeur. Il permet également de créer des points d’arrêt (breakpoints) lors de l’exécution du programme à mettre au point, et à partir de ces points d’arrêt, d’exécuter le programme pas à pas, i.e. instruction par instruction tout en observant le contenu des registres, des variables et de la mémoire. Unité 4a: Architecture logicielle
  • 12. ©Pierre Marchand, 2001 12 14.2 Langages évolués 14.2.1 Définition d’un langage Un langage informatique comprend : • un alphabet constitué des symboles élémentaires disponibles, • des noms ou identificateurs formés de groupes de symboles de l’alphabet, • des phrases ou instructions constituées de séquences de noms et de symboles de ponctuation. Les phrases doivent respecter la syntaxe du langage, i.e. la position des symboles les uns par rapport aux autres. Pour représenter la syntaxe d’un langage, on utilise la notation BNF (Backus-Naur Form) ou des diagrammes syntaxiques. Unité 4a: Architecture logicielle
  • 13. ©Pierre Marchand, 2001 13 14.2 Langages évolués 14.2.1 Définition d’un langage Syntaxe d’un langage en forme BNF <lettre> ::= a | b | c | d …. y | z <chiffre> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <identificateur> ::= <lettre> | <identificateur><lettre> | <identificateur><chiffre> <entier> ::= <chiffre> | <entier><chiffre> <terme> ::= <entier> | <identificater> <opérateur> ::= + | - | * | / <expression> ::= <terme> | <terme><opérateur><expression> <affectation> ::= <identificateur> = <expression> Unité 4a: Architecture logicielle
  • 14. ©Pierre Marchand, 2001 14 14.2 Langages évolués 14.2.1 Définition d’un langage Syntaxe d’un langage à l’aide de diagrammes syntaxiques identificateur entier terme Unité 4a: Architecture logicielle lettre lettre chiffre chiffre entier identificateur
  • 15. ©Pierre Marchand, 2001 15 14.2 Langages évolués 14.2.1 Définition d’un langage Syntaxe d’un langage à l’aide de diagrammes syntaxiques opérateur expression affectation Unité 4a: Architecture logicielle terme identificateur + - * / opérateur = expression
  • 16. ©Pierre Marchand, 2001 16 14.3 Compilation 14.3.1 Structure d’un compilateur Unité 4a: Architecture logicielle Analyse lexicale Analyse syntaxique Analyse sémantique Génération de code intermédiaire Optimisation du code Génération de code objet Programme en code source Programme en code objet Table des symboles Arbre syntaxique
  • 17. ©Pierre Marchand, 2001 17 14.3 Compilation 14.3.2 Analyse lexicale C’est la première phase de la compilation. Elle consiste à lire la séquence de caractères constituant le programme source et à produire une séquence d’éléments syntaxiques du langage (tokens) traités ensuite par l’analyseur syntaxique : nombres, identificateurs, opérateurs, mots réservés, séparateurs, etc. Les identificateurs, tels que les noms des variables et des procédures, ainsi que leurs attributs, sont stockés dans la table des symboles. Les commentaires sont éliminés. L’analyseur lexical détecte les erreurs telles que : • identificateurs trop longs ou illégaux • caractères ou nombres illégaux. Unité 4a: Architecture logicielle
  • 18. ©Pierre Marchand, 2001 18 14.3 Compilation 14.3.3 Analyse syntaxique L’analyseur syntaxique reçoit une liste d’éléments syntaxiques de l’analyseur lexical. Il vérifie si cette liste est correcte par rapport à la syntaxe du langage. À partir ce ces éléments, il génère l’arbre syntaxique du programme. Il y a deux approches pour étabir cet arbre. L’approche ascen- dante et l’approche descendante. L’approche ascendante consiste à partir des éléments constituant la phrase à traiter pour trouver toutes les règles qui permettent de remonter jusqu’à la racine. L’approche descendante consiste à partir de la racine et à appliquer les règles qui permettent d’arriver à la phrase désirée. Unité 4a: Architecture logicielle
  • 19. ©Pierre Marchand, 2001 19 14.3 Compilation 14.3.3 Analyse syntaxique Unité 4a: Architecture logicielle <programme> <suite d’instructions> <instruction> ; <instruction> ; <affectation> <conditionnelle> <ident> ;= <expression> if <booléenne> then <instruction> val <ident><opérateur> <nombre> <nombre> <chiffre> <chiffre> 0 <ident> val := val + 20; if good then val := 0; 2 good <affectation> <ident> ;= <constante> val <chiffre> 0 val +
  • 20. ©Pierre Marchand, 2001 20 14.3 Compilation 14.3.3 Analyse syntaxique Dans cette phase on détecte des erreurs telles que : • Parenthèses non fermées, • Structures de blocs ou instructions mal construites, • Manque de délimiteurs. Unité 4a: Architecture logicielle
  • 21. ©Pierre Marchand, 2001 21 14.3 Compilation 14.3.4 Analyse sémantique L’analyseur sémantique s’occupe du sens et de la signification des phrases du langage. Il utilise l’arbre syntaxique pour identifier les opérateurs et les opérandes des instructions. Il vérifie principa- lement la correspondance des types à l’aide des informations de la table des symboles. Il détecte des erreurs telles que : • identificateurs non déclarés ou déclarés plus d’une fois, • Incompatibilité de type entre opérateur et opérandes. Unité 4a: Architecture logicielle
  • 22. ©Pierre Marchand, 2001 22 14.3 Compilation 14.3.5 Génération de code intermédiaire Le compilateur génère ici un code intermédiaire à partir de l’arbre syntaxique. Ce code est le code d’une machine abstraite. 14.3.6 Optimisation de code À cette étape, on tente d’améliorer le code pour le rendre plus rapide à l’exécution et/ou moins encombrant en mémoire. On élimine d ’abord les redondances pour minimiser le nombre final d’instructions. On essaye aussi d’évaluer les expressions utilisant des constantes. Cette phase dépend fortement de l’architecture de la machine cible. Unité 4a: Architecture logicielle
  • 23. ©Pierre Marchand, 2001 23 14.3 Compilation 14.3.7 Génération de code objet La génération de code objet est la phase finale de la compilation; elle génère du code objet relogeable, i.e. relatif à l’origine 0. Elle traduit chaque instruction du code intermédiaire en langage machine de l’ordinateur cible. Unité 4a: Architecture logicielle