0% ont trouvé ce document utile (0 vote)
4 vues1 page

Génération de Code Intermédiaire en Compilation

La génération de code intermédiaire marque la transition entre l'analyse et la synthèse dans le processus de compilation, minimisant les traces du langage source et cible. Elle offre des avantages tels que la facilité de changement de langage cible et l'application d'optimisations. Les représentations intermédiaires courantes incluent les arbres de syntaxe, la notation post-fixée et le code à trois adresses, qui se compose d'énoncés simples permettant de gérer des opérations et des structures de contrôle.

Transféré par

Fouzi Karim
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues1 page

Génération de Code Intermédiaire en Compilation

La génération de code intermédiaire marque la transition entre l'analyse et la synthèse dans le processus de compilation, minimisant les traces du langage source et cible. Elle offre des avantages tels que la facilité de changement de langage cible et l'application d'optimisations. Les représentations intermédiaires courantes incluent les arbres de syntaxe, la notation post-fixée et le code à trois adresses, qui se compose d'énoncés simples permettant de gérer des opérations et des structures de contrôle.

Transféré par

Fouzi Karim
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

V. Génération de Code Intermédiaire. 9ème Cours.

La génération de code intermédiaire peut être considérée comme le point où on passe de la


partie analyse à la partie synthèse.
En principe, il reste peu ou pas de traces du langage source à ce point. Aussi, il y apparaît
peu ou pas de traces du langage (ou de la machine) cible.
Bien qu’optionnel, le passage par le code intermédiaire apporte certains avantages :
• Il est relativement aisé de changer le langage cible du compilateur ;
• La représentation intermédiaire permet d’appliquer des optimisations indépendantes
du langage cible.
Deux représentations intermédiaires sont souvent utilisées à savoir :
• Les arbres de syntaxe (avec ou sans partage des sous-expressions communes);
• La notation post fixé.
Exemple :
(b + c) * (b + c) * (- d) → *(+bc) *(+bc) (–d).

Une autre représentation est introduite c’est la représentation du code à trois adresses :
• Il s’agit de séquences d’énoncés simples dont les plus courants sont de la forme :
x := y op z (2 opérandes + 1 récepteur = 3 adresses);
• Le découpage des expressions complexes du langage source en des séquences
d’énoncés simples demande l’introduction de variables temporaires ti.

Voici les types d’énoncés que l’on retrouve dans le code à trois adresses :
• x := y op z où op est un opérateur binaire;
• x := op y où op est un opérateur unaire;
• x := y;
• Goto L, où L est l’étiquette d’un énoncé dans la séquence ;
• if x relop y goto L où relop est un opérateur de comparaison comme ≤, >, =, etc…;
• Param x et call p, n pour la préparation des appels de procédures où n indique le nombre de
valeurs passées en argument ;
• return [y] pour le retour des appels de procédures ;
• x := y[i] et x[i] := y pour les accès dans des tableaux;
• x := &y, x := *y et *x := y pour la manipulation des pointeurs;
• L : pseudo-énoncé qui déclare l’étiquette L, il marque la position de l’énoncé suivant.

Vous aimerez peut-être aussi