projet: variables vivantesmartin.strecker/teaching/2004/l3_s6... · 2012-01-05 · motivation...

37
Motivation Analyse statique Optimisation Organisation Projet: Variables vivantes J.-P. Bodeveix Yannick Chevalier Martin Strecker 11 mai 2005 J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Upload: others

Post on 06-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Projet: Variables vivantes

J.-P. Bodeveix Yannick Chevalier Martin Strecker

11 mai 2005

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 2: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Plan

1 MotivationVariables vivantesExpressions très utilisées

2 Analyse statiqueMini-langage impératifVariables vivantesExpressions très utilisées

3 Optimisation

4 Organisation

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 3: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Concept (1)

Définition : Variable v est vivante dans une position P, si

il y a un chemin d’exécution commençant avec P surlequel v est lue

sans avoir été redéfinie précédemment

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 4: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Concept (2)

Exemple :

x = 3; (1)y = 5; (2)y = x + 3; (3)x = x + y; (4)

x vivante (au moins) après (1), (2), (3)y vivante (au moins) après (3)y morte après (2)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 5: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Utilisation

Optimisation de compilateurs :Affectations à des variables mortes peuvent être éliminées(“dead code elimination”)

x = 3; (1)y = 5; (2)y = x + 3; (3)x = x + y; (4)

x = 3; (1)

y = x + 3; (3)x = x + y; (4)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 6: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Utilisation

Optimisation de compilateurs :Affectations à des variables mortes peuvent être éliminées(“dead code elimination”)

x = 3; (1)y = 5; (2)y = x + 3; (3)x = x + y; (4)

x = 3; (1)

y = x + 3; (3)x = x + y; (4)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 7: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Raffinement

Question : x est-elle vivante après (4) ?

. . .x = x + y; (4). . .

Réponse :

Oui, si x est utilisée plus tard,par ex. dans return(x + y)

Non, si x n’est plus utilisée,par ex. dans return(y)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 8: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Variables vivantes : Complications (1)

y est-elle vivante après (1),puisque y n’est plus utilisée dans (2) ?L’optimisation suivante est-elle correcte ?Original

y = 5; (1)IF (x > 0)THEN x = x + 1 (2)ELSE x = x + y (3)return(x)

Optimisation (incorrecte)

IF (x > 0)THEN x = x + 1 (2)ELSE x = x + y (3)return(x)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 9: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Variables vivantes : Complications (1)

y est-elle vivante après (1),puisque y n’est plus utilisée dans (2) ?L’optimisation suivante est-elle correcte ?Original

y = 5; (1)IF (x > 0)THEN x = x + 1 (2)ELSE x = x + y (3)return(x)

Optimisation (incorrecte)

IF (x > 0)THEN x = x + 1 (2)ELSE x = x + y (3)return(x)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 10: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Variables vivantes : Complications (2)

x est-elle vivante après (3),puisque x n’est pas utilisée à la fin de la boucle ?L’optimisation suivante est-elle correcte ?Original

x = 2; (1)y = 5; (2)WHILE x > 0 DO

x = x - 1; (3)return(y)

Optimisation (incorrecte)

x = 2; (1)y = 5; (2)WHILE x > 0 DO

SKIP; (3)return(y)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 11: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Variables vivantes : Complications (2)

x est-elle vivante après (3),puisque x n’est pas utilisée à la fin de la boucle ?L’optimisation suivante est-elle correcte ?Original

x = 2; (1)y = 5; (2)WHILE x > 0 DO

x = x - 1; (3)return(y)

Optimisation (incorrecte)

x = 2; (1)y = 5; (2)WHILE x > 0 DO

SKIP; (3)return(y)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 12: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Concept

Définition : Une expression dans un programme est expressiontrès utilisée si

elle est utilisée sur tous les chemins d’exécution duprogramme

avant que l’une de ses variables soit redéfinie

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 13: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Exemple

while (u > z) doif (u + z > 1) then

u := (x + y) - (u + z)else

z := (x + y) + (u + z)end;

end;return(x+y);

très utilisée : x + ypas très utilisée : u + z

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 14: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Variables vivantesExpressions très utilisées

Optimisation

aux := (x + y);while (u > z) do

if (u + z > 1) thenu := aux - (u + z)

elsez := aux + (u + z)

end;end;return(aux);

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 15: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Expressions

Constructeurs :

Constantes (entier) :3, 42 , . . .

Variables (chaîne decaractère) :

x, y5

Expressions binaires :a + b - 5 == c + 4

Déf. en Caml :

type expr =Const of int

| Var of string

| Op ofbinop * expr * expr

Exemple :x + 3 == 7 Op(BEq, Op(BPlus, Var "x", Const 3), Const 7)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 16: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Expressions

Constructeurs :

Constantes (entier) :3, 42 , . . .

Variables (chaîne decaractère) :

x, y5

Expressions binaires :a + b - 5 == c + 4

Déf. en Caml :

type expr =Const of int

| Var of string

| Op ofbinop * expr * expr

Exemple :x + 3 == 7 Op(BEq, Op(BPlus, Var "x", Const 3), Const 7)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 17: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Expressions

Constructeurs :

Constantes (entier) :3, 42 , . . .

Variables (chaîne decaractère) :

x, y5

Expressions binaires :a + b - 5 == c + 4

Déf. en Caml :

type expr =Const of int

| Var of string

| Op ofbinop * expr * expr

Exemple :x + 3 == 7 Op(BEq, Op(BPlus, Var "x", Const 3), Const 7)

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 18: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Commandes

Constructeurs :

Skip : “ne fait rien”

Affectation : x = x + 4

Séquence : x = x + 4 ; y = z ;

Sélection : if (..) .. else ..

Boucle while (..) ..

Return return (x + 1)

Déf. en Caml ? ?

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 19: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Mini-langage impératif (3)

Synt. concrète :

x = 5;y = 0;

while (x) {x = x - 1;y = y + 2;}

return y;

Syntaxe abstraite :

Comp (Comp (Comp (Assign ("x", Const 5),Assign ("y", Const 7)),

While ((Var "x"),Comp(Assign("x",

Op (BMinus, Var "x", Const 1)),Assign("y",

Op (BPlus, Var "y", Const 2))))),

Return (Var "y"))A faire : écrire fonction qui imprime des termes

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 20: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Principe

Propager l’ensemble des variables vivantes . . .

de la fin vers le début du programme

Comparable au calcul de la plus faible précondition

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 21: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Return, Affectation, Séquence

x = 3

y = 5

y = x + 3

x = x + y

{x, y} = {x, y} − {x} + {x, y}

{x} = {x, y} − {y} + {x}

{x}

{} = {x} − {x}

return(x=y)

{x, y}

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 22: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Sélection

x = x + 1

x > 0

x = x + y

y = 5

{x}

{x, y} = {x} − {x} + {x, y}

{x, y} = {x} + {x, y} + {x}

{x} = {x, y} − {y}

{x} = {x} − {x} + {x}

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 23: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (1)

Idée : Déplier la boucle. Sont équivalents :

Original

while (x > 0) {x = x - 1;}

Déplié 1 fois :

if (x > 0) {x = x - 1;}

while (x > 0) {x = x - 1;}

Déplié n fois :

if (x > 0) {x = x - 1;}

...if (x > 0) {

x = x - 1;}

Skip;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 24: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (1)

Idée : Déplier la boucle. Sont équivalents :

Original

while (x > 0) {x = x - 1;}

Déplié 1 fois :

if (x > 0) {x = x - 1;}

while (x > 0) {x = x - 1;}

Déplié n fois :

if (x > 0) {x = x - 1;}

...if (x > 0) {

x = x - 1;}

Skip;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 25: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (1)

Idée : Déplier la boucle. Sont équivalents :

Original

while (x > 0) {x = x - 1;}

Déplié 1 fois :

if (x > 0) {x = x - 1;}

while (x > 0) {x = x - 1;}

Déplié n fois :

if (x > 0) {x = x - 1;}

...if (x > 0) {

x = x - 1;}

Skip;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 26: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (2)

while (x > 0) {

x = x - 1;

}return(y)

{x, y}

{y}

{y}

{x, y}

{x, y}

{x, y}

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 27: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (2)

while (x > 0) {

x = x - 1;

}return(y)

{x, y}

{y}

{y}

{x, y}

{x, y}

{x, y}

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 28: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Boucle (2)

while (x > 0) {

x = x - 1;

}return(y)

{x, y}

{y}

{y}

{x, y}

{x, y}

{x, y}

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 29: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Principe

Comparable au calcul des variables vivantes :

Propager l’ensemble des expressions très utilisées

de la fin vers le début du programmeCas de l’affectation x = e

Supprimer de l’ensemble toute sous-expr. contenant xAjouter toutes les sous-expressions de e

Cas de la sélection if b then c1 else c2

Prendre intersection des expr. très utilisées de c1 et c2

Ajouter toutes les sous-expressions de b

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 30: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Exemple

while (u > z) {

if (u + z > 1) {

u := (x + y) - (u + z)}

else {

v := (x + y) + (u + z)}

}

return(x + y) ;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 31: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Exemple

{ x+y, u>z }while (u > z) {

{ x+y, u+z, u+z > 1 }if (u + z > 1) {

{ x+y, u+z, (x+y) - (u+z) }u := (x + y) - (u + z){ } }

else {{ x+y, u+z, (x+y) + (u+z) }v := (x + y) + (u + z){ } }

{ } }{ x+y }return(x + y) ;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 32: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Mini-langage impératifVariables vivantesExpressions très utilisées

Exemple

{ x+y, u>z }while (u > z) {

{ x+y, u+z, u+z > 1 }if (u + z > 1) {

{ x+y, u+z, (x+y) - (u+z) }u := (x + y) - (u + z){ x+y, u>z } }

else {{ x+y, u+z, (x+y) + (u+z), u>z }v := (x + y) + (u + z){ x+y, u>z } }

{ x+y, u>z } }{ x+y }return(x + y) ;

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 33: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Principe

Traverser programme (fin début)

Pour chaque affectation x = e : Calculer ensemble V desvariables vivantesDeux cas :

x /∈ V : Remplacer x = e par Skipx ∈ V : Garder x = e

Simplifier c ; Skip ou Skip ; c

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 34: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Exemple

Progr. original

x = 3;

y = 5;

y = x + 3;

return (x + y);

var. vivantes

{ }

{x}

{x}

{x, y}

optimisé

x = 3;

y = x + 3;

return (x + y);

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 35: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Exemple

Progr. original

x = 3;

y = 5;

y = x + 3;

return (x + y);

var. vivantes

{ }

{x}

{x}

{x, y}

optimisé

x = 3;

y = x + 3;

return (x + y);

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 36: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Exemple

Progr. original

x = 3;

y = 5;

y = x + 3;

return (x + y);

var. vivantes

{ }

{x}

{x}

{x, y}

optimisé

x = 3;

y = x + 3;

return (x + y);

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes

Page 37: Projet: Variables vivantesMartin.Strecker/Teaching/2004/L3_S6... · 2012-01-05 · Motivation Analyse statique Optimisation Organisation Plan 1 Motivation Variables vivantes Expressions

MotivationAnalyse statique

OptimisationOrganisation

Travail à faire

Écrire fonctions en OCaml / Java pour la partie “analyse deprogramme”

Écrire fonctions en C pour la partie “affichage de graphe”

Écrire interface entre OCaml / Java / C

J.-P. Bodeveix, Yannick Chevalier, Martin Strecker Projet: Variables vivantes