Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Structures de données avancées : Principales structures de données
Structures de données avancées : MTH ( Multidimensional trie hashing )
Structures de données avancées : Introduction
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Machines de Turing Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Sémantique des déclarations pour le langage Z minimal
Algorithmique (suite)
Algorithmique Résume.
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
C.
Introduction : Compilation et Traduction
Initiation à la programmation et algorithmique cours 3
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Les bases de l’Algorithmique
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction : Compilation et Traduction
Démarche de résolution de problèmes
Les éléments de base de l’algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Semaine #1 INF135 par Frédérick Henri.
Standard Template Library
Séance d’introduction
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Plan cours La notion de pointeur et d’adresse mémoire.
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Structures de données avancées : Hachage dynamique
2.1 - Historique Chapitre 2 : Introduction au langage C++
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Cours Architecture des Systèmes Informatiques
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Module I3 algorithmique et programmation
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres AA
Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Initiation à l’Algorithmique
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Une brève présentation de C# Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Fonctions standards Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Patricia Renault UPMC 2005/2006
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) C O M P I L Z.
COMPIL - Z Compilateur visible
Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Objets et Actions Élémentaires.
Les Structures simples
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Transcription de la présentation:

Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Interprétation/Génération de code pour le langage Z minimal : Introduction Une fois la sémantique réalisée, il reste à générer le code à partir de la forme interne ou interpréter directement la forme interne. Génération de code  Code d’une machine virtuelle  Langage d’assemblage d’une machine donnée  Langage binaire d’une machine donnée Interprétation Exécuter la forme intermédiaire avec un langage de programmation (Pascal, C,..) : Spécifique à un type de machines Portabilité

Interprétation/Génération de code pour le langage Z minimal : Introduction La génération de code implique la connaissance du code cible Il s’agit de remplacer la forme interne ( ensemble de table et paramètres ) par un code exprimé dans le langage cible. ( Une fois le code généré, on a plus besoin des tables) Ou mieux encore: Dans la phase sémantique, au lieu de générer les quadruplets, on génère directement le code. ( Compilateur à une passe ) On a tendance à confondre Sémantique et Génération de code.

Interprétation/Génération de code pour le langage Z minimal : Résultats (Sémantique) SOIT A, B, C DES ENTIERS ; Res UN ENTIER ; DEBUT LIRE ( A ) ; B := 5 ; C := 12 ; Res :=((A+B) / C) + ( B-C ) ; ECRIRE ( Res ) FIN ‘5’ ‘12’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + TABCOMP + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘L’‘E’2 ‘L’‘E’3 ‘C’‘E’0 ‘C’‘E’1 ‘X’‘E’4 ‘X’‘E’5 ‘X’‘E’6 ‘X’‘E’ TABOB 8 LONGZDD 3 4 Quadruplés générés ‘DE’ ‘Lire’01 ‘Aff’14 25 ‘+E’016 ‘/E’627 ‘-E’128 ‘+E’789 ‘Aff’39 ‘Ecrire’ TABCOMP 0 1

Interprétation/Génération de code pour le langage Z minimal : Algorithme général - Allocation de la zone de données // tableau d’adresses de longueur LONGZDD - Conversion des constantes numériques, allocation d’espace pour les constantes et rangement des adresses dans un tableau - Pour chaque quadruplé (Cop, P1, P2, P3) faire : Selon le code - récupérer les données dans les tables de compilation - traiter le quadruplé Finpour - Libération de l’espace mémoire utilisée par la zone de données et les objets du programme

Interprétation/Génération de code pour le langage Z minimal : Environnement Nil … Zone de données (ZDD) … CONST  Allocation de la zone de données : tableau d’adresses de longueur LONGZDD :  Conversion des constantes numériques, allocation d’espace pour les constantes et rangement des adresses dans un tableau Constante 2 Constante 1 Espace mémoire pour les variables,constantes, … Constante n ( Doit être initialisée à Nil )

Interprétation/Génération de code pour le langage Z minimal : Stratégie d’allocation Pour l’instant il existe 3 types d’objets ‘L’ : variable locale ( Entière ) ‘C’ : constante ‘X’ : variable temporaire créée par le compilateur (Entière ou Booléenne)  L’espace pour les variables locales est alloué au début à la rencontre des quadruplés ‘DE’  L’espace pour les constantes est aussi alloué au début à l’initialisation de l’environnement d’exécution.  L’espace pour les auxiliaires est alloué quand on leur affecte une valeur pour la première fois. Si l’adresse d’un auxiliaire est Nil, il y a allocation de l’espace pour celle ci ( sinon, l’espace est déjà alloué)

Interprétation/Génération de code pour le langage Z minimal : Déclaration Soit ZDD le tableau d’adresses représentant la zone de données - Allocation d’un espace mémoire pour un entier  ADR - Récupérer de TABOB l’adresse relative de Pt1 dans la zone de données  D // L’adresse réelle est ZDD [ D ] - Ranger dans ZDD [ D ] l’adresse ADR (‘DE’, Pt1,, )

Interprétation/Génération de code pour le langage Z minimal : Expression Soit ZDD le tableau d’adresses représentant la zone de données Cas des opérations binaires - Récupérer de TABOB l’adresse relative de Pt1 dans la zone de données  D1 ; L’adresse réelle est Adr_Pt1 = ZDD [ D1 ] - Récupérer de TABOB l’adresse relative de Pt2 dans la zone de données  D2 ; L’adresse réelle est Adr_Pt2 = ZDD [ D2 ] - Récupérer de TABOB l’adresse relative de Pt3 dans la zone de données  D3 ; L’adresse réelle est Adr_Pt3 = ZDD [ D3 ] - Effectuer l’opération ‘Cop’ entre les contenus de Adr_Pt1 et Adr_Pt2 - Ranger le résultat dans Adr_Pt3 (***) *** : si Adr_Pt3=Nil, allocation d’un espace d’adresse Adr_Pt3 (Oper, Pt1, Pt2, Pt3 ) Oper dans { ‘+E’, ‘-E’, ‘*E’, ‘/E’ }

Interprétation/Génération de code pour le langage Z minimal : Expression Soit ZDD le tableau d’adresses représentant la zone de données Cas des opérations unaires - Récupérer de TABOB l’adresse relative de Pt1 dans la zone de données  D1 ; L’adresse réelle est Adr_Pt1 = ZDD [ D1 ] - Récupérer de TABOB l’adresse relative de Pt2 dans la zone de données  D2 ; L’adresse réelle est Adr_Pt2 = ZDD [ D2 ] - Effectuer l’opération ‘Cop’ sur le contenu de Adr_Pt1 - Ranger le résultat dans Adr_Pt2 (***) *** : si Adr_Pt2=Nil, allocation d’un espace d’adresse Adr_Pt2 (Oper, Pt1,, Pt2 ) Cop dans { ‘+U’, ‘-U’ }

Interprétation/Génération de code pour le langage Z minimal : Affectation Soit ZDD le tableau d’adresses représentant la zone de données - Récupérer de TABOB l’adresse relative de Pt1 dans la zone de données  D1 L’adresse réelle est Adr_Pt1 = ZDD [ D1 ] - Récupérer de TABOB l’adresse relative de Pt2 dans la zone de données  D2 L’adresse réelle est Adr_Pt2 = ZDD [ D2 ] - Ranger dans Adr_Pt1 le contenu de Adr_Pt2 (***) *** : si Adr_Pt1=Nil, allocation d’un espace d’adresse Adr_Pt1 (‘Aff’, Pt1,,Pt2 )

Interprétation/Génération de code pour le langage Z minimal : Lecture Soit ZDD le tableau d’adresses représentant la zone de données Pour i:= 0 à N-1 - Objet := TABCOMP [Pt+i] - Récupérer de TABOB l’adresse relative de Objet dans la zone de données  D L’adresse réelle est Adr_Objet = ZDD [ D ] - Lire la donnée dans une variable DONNEE - Ranger DONNEE dans Adr_Objet Finpour (‘Lire’, Pt,N, )

Interprétation/Génération de code pour le langage Z minimal : Écriture Soit ZDD le tableau d’adresses représentant la zone de données Pour i:= 0 à N-1 - Objet := TABCOMP [Pt+i] - Récupérer de TABOB l’adresse relative de Objet dans la zone de données  D L’adresse réelle est Adr_Objet = ZDD [ D ] - Écrire le contenu de Adr_Objet Finpour (‘Ecrire’, Pt,N, )

Interprétation/Génération de code pour le langage Z minimal : Implémentation Module Alloc(Type de l’objet)  adresse de l’espace alloué, Nil si Échec