SlideShare une entreprise Scribd logo
1  sur  37
ALF
Génération de code
Bibliographie pour aujourd'hui
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey
D. Ullman, Compilers: Principles, Techniques,
and Tools (2nd Edition)
– Chapitre 6
• 6.1
• 6.2
• 6.3
• 6.4
• 6.5
Contenu
• Three Address Code
– évaluation des expression
– contrôle de flux
• branche
• boucle
– fonction
• Single Static Assignment
Dennis Ritchie
• Américain
• Harvard University
• Auteur de langage C
• Co-auteur UNIX
Hidden Figures
Three Address Code
• Instructions contenant 3 adresses
– les opérandes
– le résultat
• Un seul operateur
Type des instructions
• Assignement
• Copie
• Saut inconditionnel (jump)
• Saut conditionnel (jump)
– Simple
– Avec condition
• Appel de fonction
• Copie indexée
• Assignement du pointeur
Enregistre le three address code
• result
• arg1
• arg2
• op
result arg1 arg2 op
t1 a b +
t2 a -
t3 a b +
t4 t1 t2 -
t3 s t4 +
Assignement
r = x op y r = op y
op: + - * / %
== <= >= < >
Exercices
• 2+3*5
• (6-2)*4
• 10 /5 + 2*3
• 3- (-2) *6
• -10/2 – (2+4)/2*(7-(-1))
Exercices (2+3*5)
+
*
3
5
2
t1 = 3 * 5
t2 = 2 * t
Exercices (10 /5 + 2*3)
+
*
2
3
/
10
5
t1 = 10 / 5
t2 = 2 * 3
t3 = t1 + t2
Copie
x = y
Saut inconditionnel
• goto name
• label name
goto next
x = 2 + 3 ; this is jumped
label next
Saut conditionnel
• if x goto name
• ifFalse x goto namefalse
• label name
if f next
x = 2 + 3 ; this is jumped if
f is true
label next
Exercises
if (x+y > 3)
{
a = 11;
}
Exercises
if (x+y > 3)
{
a = 11;
}
Exemple
if (x+y > 3)
{
a = 11;
}
t1 = x + y
t2 = t1 > 3
ifFase t2 goto endif
a = 11
label endif
Exercises
if (x+y > 3)
{
a = 11;
}
else
{
a = 12;
}
Exemple
if (x+y > 3)
{
a = 11;
}
else
{
a = 12;
}
t1 = x + y
t2 = t1 > 3
if t2 goto then
a = 12
goto endif
label then
a = 11
endif
Exercises
if (x+y > 3 && y < x+90)
{
a = 11;
}
else
{
a = 12;
}
Exercises
while (x > 3)
{
x = x + 1;
}
Exercises
do
{
x = x + 1;
} while (x+y > 3 && y < x+90);
Exercises
for (x=1; x + y > 3; x = x + 1)
{
y = y + 7;
}
Appel de fonction
• param parameter
• call f, n
• r = call f, n
param a
param n
r = call power, 2
Exercises
void print (int x, int y)
{
printf (“%s”, x);
printf (“%s”, y);
}
print (2, 4);
Exercises
void print (int x, int y)
{
printf (“%u”, x);
printf (“%u”, y);
}
print (2, 4);
label print
param “%u”
param x
call printf, 1
param “%u”
param y
call printf, 1
return
param 2
param 4
call print, 2
Exercises
int expression (int x, int y, int z)
{
return x*(y+z);
}
expression (1, 2, 5);
Exercises
int expression (int x, int y, int z)
{
return x*(y+z);
}
expression (2+3, a+2*6, f(3));
Copie indexée
• x = a[i]
• x = a.element
x = a[i]
p = x.price
Exercises
a[5]
a[4][5]
a[i+j]
a.lst[i+j]
a.lst[i][j]
Assignement du pointeur
r = &x
Single Static Assignment
• Similaire avec Three Address Code
• Les variables sont des constantes
• Une fois attribuée, une variable ne peut pas
changer sa valeur
• Fonction φ
φ
Exemple
Three Address Code
t=2 * 3
t2=5 - 3
t = t + t2
Single Static Assignment
t1 = 2 * 3
t2 = 5 – 3
t3 = t1 + t2
2*3+(5-3)
Fonction φ
Source
if (x+y > 3)
{
a = 11;
}
else
{
a = 12;
}
Single Static Assignment
t1 = x + y
t2 = t1 > 3
ifFalse t2 goto next
t3 = 11
goto endif
label next
t4 = 12
endif
t5 = φ (t3, t4)
Sujets
• Three Address Code
– évaluation des expression
– contrôle de flux
• branche
• boucle
– fonction
• Single Static Assignment
Questions

Contenu connexe

Tendances

Tendances (20)

ALF 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 8 - Représentation des données
ALF 8 - Représentation des donnéesALF 8 - Représentation des données
ALF 8 - Représentation des données
 
SdE 8 - Synchronization de execution
SdE 8 - Synchronization de executionSdE 8 - Synchronization de execution
SdE 8 - Synchronization de execution
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
ALF - Introduction (2018)
ALF - Introduction (2018)ALF - Introduction (2018)
ALF - Introduction (2018)
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
ALF 5 - Parser
ALF 5 - ParserALF 5 - Parser
ALF 5 - Parser
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraite
 
BackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programmingBackDay Xebia : Découvrez RxJava, le reactive programming
BackDay Xebia : Découvrez RxJava, le reactive programming
 
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_fauxIEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021
 
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_fauxIEEE754-pourquoi_les_calculs_informatiques_sont_faux
IEEE754-pourquoi_les_calculs_informatiques_sont_faux
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 

Similaire à ALF 9 - Generation de code

Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
Fahad Golra
 

Similaire à ALF 9 - Generation de code (20)

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Lambda calcul Devoxx 2021
Lambda calcul Devoxx 2021Lambda calcul Devoxx 2021
Lambda calcul Devoxx 2021
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...Développement informatique : Programmation fonctionnelle, décorateur et génér...
Développement informatique : Programmation fonctionnelle, décorateur et génér...
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
coursAlg.ppt
coursAlg.pptcoursAlg.ppt
coursAlg.ppt
 
Cours tp2
Cours tp2Cours tp2
Cours tp2
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
La programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCamlLa programmation fonctionnelle avec le langage OCaml
La programmation fonctionnelle avec le langage OCaml
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
 
langage C++
langage C++langage C++
langage C++
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de base
 

Plus de Alexandru Radovici

Plus de Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 
SdE 3 - System de fichiers
SdE 3 - System de fichiersSdE 3 - System de fichiers
SdE 3 - System de fichiers
 

Dernier

ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdfilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ssuser6041d32
 

Dernier (14)

complement de agri cours irrigation.pptx
complement de agri cours irrigation.pptxcomplement de agri cours irrigation.pptx
complement de agri cours irrigation.pptx
 
Texte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigéesTexte avec différentes critiques positives, négatives ou mitigées
Texte avec différentes critiques positives, négatives ou mitigées
 
Chapitre3-Classififcation des structures de chaussu00E9e.pptx
Chapitre3-Classififcation des structures de  chaussu00E9e.pptxChapitre3-Classififcation des structures de  chaussu00E9e.pptx
Chapitre3-Classififcation des structures de chaussu00E9e.pptx
 
Un petit coin etwinning- Au fil des cultures urbaines
Un petit coin  etwinning- Au fil des cultures urbainesUn petit coin  etwinning- Au fil des cultures urbaines
Un petit coin etwinning- Au fil des cultures urbaines
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
CALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTIONCALENDRIER ET COMPTE RENDU REUNION DIRECTION
CALENDRIER ET COMPTE RENDU REUNION DIRECTION
 
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptxGHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
GHASSOUB _Seance 4_ measurement and evaluation in education_-.pptx
 
Nathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre françaiseNathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre française
 
GHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptxGHASSOUB _Seance 3_ measurement and evaluation in education.pptx
GHASSOUB _Seance 3_ measurement and evaluation in education.pptx
 
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptxSaint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
 
Fiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciationFiche de vocabulaire pour faire une appréciation
Fiche de vocabulaire pour faire une appréciation
 
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdfilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
ilide.info-cours-recherche-d-emploi-pr_aa839df7439dd234c803551c86e0197c.pdf
 
Àma Gloria.pptx Un film tourné au Cap Vert et en France
Àma Gloria.pptx   Un film tourné au Cap Vert et en FranceÀma Gloria.pptx   Un film tourné au Cap Vert et en France
Àma Gloria.pptx Un film tourné au Cap Vert et en France
 
Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024Réunion des directeurs de Jonzac - 15 mai 2024
Réunion des directeurs de Jonzac - 15 mai 2024
 

ALF 9 - Generation de code