Analyse Sémantique. Arthur Garnier



Documents pareils
Traduction des Langages : Le Compilateur Micro Java

Java Licence Professionnelle CISII,

Cours de Programmation Impérative: Zones de mémoires et pointeurs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Logiciel de base. Première année ENSIMAG

Présentation du PL/SQL

Compilation (INF 564)

Gestion mémoire et Représentation intermédiaire

STAGE IREM 0- Premiers pas en Python

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Conventions d écriture et outils de mise au point

Exécutif temps réel Pierre-Yves Duval (cppm)

Algorithmique, Structures de données et langage C

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Partie 7 : Gestion de la mémoire

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Initiation à l algorithmique

Probabilités sur un univers fini

Structure d un programme

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

COURS AUTOCAD. Création et utilisation des blocs. b leclerc. ERP Jean Moulin METZ

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Correction TD algorithmique

Chapitre 1 : La gestion dynamique de la mémoire

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Encryptions, compression et partitionnement des données

Une forme générale de la conjecture abc

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

Mécanismes de protection dans AUTOSAR OS

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Plateforme de capture et d analyse de sites Web AspirWeb

Créer vos données sources avec OpenOffice, adieu Excel

UE Programmation Impérative Licence 2ème Année

Intégration et probabilités TD1 Espaces mesurés

Version default Titre : Procédure POURSUITE Date : 07/04/2009 Page : 1/10 Responsable : Clé : U Révision : 496

ASR1 TD7 : Un microprocesseur RISC 16 bits

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

PRECISION - REJET DE PERTURBATIONS T.D. G.E.I.I.

NOTICE SIMPLIFIEE ER-A280F. I Initialisation avec Remise à Zéro de la caisse : ENTER PASSWORD ER-A280V. Ver1.02

Feuille TD n 1 Exercices d algorithmique éléments de correction

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Architecture des ordinateurs

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

EP A1 (19) (11) EP A1 (12) DEMANDE DE BREVET EUROPEEN. (43) Date de publication: Bulletin 2009/25

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

ISO/CEI NORME INTERNATIONALE

Créer et gérer des catégories sur votre site Magento

Vérification formelle de la plate-forme Java Card

Cours A7 : Temps Réel

Chapitre 2 Le problème de l unicité des solutions

Évaluation et implémentation des langages

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Environnements et Outils de Développement Cours 1 Introduction

tarifs préférentiels 2014 pour les entreprises

Probabilités sur un univers fini

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Alain Téfaine 02/07. Comment utiliser le logiciel CVitae pour rédiger votre CV?

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Formulaire pour envoyer un mail

Site web établissement sous Drupal

Administration de Parc Informatique TP03 : Résolution de noms

IV- Comment fonctionne un ordinateur?

Une bibliothèque de templates pour CUDA

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Ordonnance de l Autorité fédérale de surveillance des marchés financiers sur les banques étrangères en Suisse

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Ordonnance de l Autorité fédérale de surveillance des marchés financiers sur les banques étrangères en Suisse

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

REALISATION D UN MAILLAGE

Thomson ST 2030 guide de configuration et d utilisation

1 è r e étape : créer sa base de d o n n é e s

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

TD3 - Facturation avec archivage automatisé

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

KESO k-entry Mise à jour 1 de la Version à la Version

Travail avec soin et concentration

CH.6 Propriétés des langages non contextuels

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Intel Corporation Nicolas Biguet Business Development Manager Intel France

Architecture des ordinateurs

CM2 L architecture MIPS32

Manuel d utilisation du téléphone IP Cisco Small Business Pro SPA525G

Transcription:

Analyse Sémantique Arthur Garnier 1 Résumé source -> Analyse Syntaxique (AST) -> Analyse sémantique (AST + TDS) -> Optimisations -> Prod. de code -> Assembleur Une table des symboles par région (fonction, bloc anonyme,... ) La TDS se rempli au fur et à mesure que l on rencontre des déclarations. Il faut se repérer dans le code avec une pile des régions ouvertes (PRO). La TDS se rempli à partir de la table des déclaration, la table sémantique à partir de la table des instructions de l AST. 1.1 Gestion dynamique de la mémoire Mémoire Pile Tas Pile Code généré Variables implémantées (Zone de données) 2 La zone de données 2.1 Objets statiques Ce sont des objets qui ne changent jamais de place dans cette zone. Ils sont créés au début de l éxécution du programme, et qui disparaissent à la fin. 2.2 Objets dynamiques 2.2.1 Gérés de manière automatique Ce sont des objets créés au début de l execution d un bloc (fonction, procédure, anonyme). Ce sont typiquement des objets attachés aux blocs. Ils ne changent jamais de place dans l environnement. 2.2.2 Gérés de manière explicite Ce sont des objets créés et détruits à la demande (malloc, calloc, free, new,... ), ils sont rangés dans le tas. 1

3 Environnement - Gestion dynamique de la mémoire Environnement = Bloc d activation ou enregistrement d activation (ie : frame) Un environnement contient les informations nécessaires à l exécution d une fonction, procédure ou bloc anonyme. 3.1 Premières idées d infos nécessaires L ensemble des variables locales et paramètres Une place pour le résultat de fonciton (s il y a lieu) Sauvegarder les registres Sauvegarder l adresse de retour Sauvegarde de la base de l appelant Chaînage statique On parlera de gestion dynamique de la mémoire : A chaque appel de routine, est alloué un environnement dans la pile A un instant, il peut exister plusieurs exemplaires d une variable ou paramètre. @V ariable = L adresse d une variable n est plus fixe Le calcul se fait dynamiquement Utiliser un mécanisme d adressage variable : Adressage basé Base d une routine DY N + Déplacement ST AT A chaque sortie de routine (=fin de son execution) On supprime son environnement de la pile (=on libère la place) On revient à l environnement appelant en restaurant la valeur de la base de cet envirionnement appelant. Cela suppose que lors de chaque appel de routine courante. 4 Systèmes à l éxécution 4.1 Accès variable locales et paramètres @objet local = Base courage = déplacement (TDS) 4.2 Accès aux objets globaux @objet Local = Base zone globale + deplacement 2

4.3 Accès aux objets (ni locaux ni globaux) Ce sont des objets déclarés dans un bloc englobant. Donc l environnement est forcément déjà dans la pile. @objet non local = Base (de l environnement de déclaration de l objet) + déplacement Pb : Comment retrouver cette base du bloc de définition de la variable non locale? 3 solutions : 1. Ajout du n de région dans la pile Problème, on va parcourir des régions que l on ne devrait pas consulter (problème de portée). 2. Utiliser l information d imbrication des régions De la base de l appelant la sauvegarde de l ancienne base est appelée chaînage dynamique. On trouve l adresse d une variable en partant de la base + le déplacement (déplacement présent dans la table des symboles) Retrouver la base du bloc de déclaration d une variable (non locale). Les règles de portée des déclarations garantissent que : Si I est déclarée dans un bloc X de n d imbrication N X Si I est visible dans un bloc d imbrication Y N Y (Alors N x N y ) alors remonter (N y - N x ) chaînages statique pour trouver la base du bloc qui déclare I. 4.4 Les paramètres Différents modes de passage : Par valeur Le paramètre formel prend la valeur de l effectif Par adresse On copie dans le paramètre formel l adresse du paramètre effectif 3. Utilisation d un adresseur ou DISPLAY C est un tableau d adresse de taille = le nombre maximal d imbrication du programme. A tout moment, DISPLAY[i] contient la base du dernier bloc d imbrication i actif Avantage : Accès direct au bloc (plus de boucle assembleur à générer) 3

4.5 Les paramètres procéduraux Programme PP I entier Procedure A (X : Proc) Procedure B(Y : Proc) Procedure C (Z: Proc) Z() C(Y) B(X) Procedure D () I : Entier Procedure E() K : Entier Procedure F() I=10 J=20 K=30 A(F) E() D() fin() 4

5

Pour un param procédural, mettre dans la pile, depuis l appel concerné (ici A(F)) Deux information : @Code procédure (ici @code F) chainage Statique du paramètre procédural (ici Ch STAT de F) 6

7

5 Exercice Feuille 8