Chap. 7 Gestion de la mémoire à l exécution

Documents pareils
Traduction des Langages : Le Compilateur Micro Java

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Compilation (INF 564)

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

Chap III : Les tableaux

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

Cours de Programmation 2

CA Mainframe Application Tuner r8.5

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

I. Objectifs de ce document : II. Le changement d architecture :

Manuel d'installation de GESLAB Client Lourd

MENU FEDERATEUR. Version Cabinet - Notice d installation et de mise à jour

Rappels d architecture

A. Architecture du serveur Tomcat 6

Évaluation et implémentation des langages

Compilation. Algorithmes d'analyse syntaxique

Gestion mémoire et Représentation intermédiaire

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

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

La pratique. Elaborer un catalogue de services

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

Logiciel de base. Première année ENSIMAG

Java Licence Professionnelle CISII,

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

Rappels Entrées -Sorties

Structure fonctionnelle d un SGBD


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

I00 Éléments d architecture

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

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

SYSTÈME DE GESTION DE FICHIERS

Fonctionnalités d Acronis :

!: cette mise à jour est à réaliser sur un seul poste de travail, si vous avez installé WICTOP 3D en réseau.

Informatique. Les réponses doivent être données en cochant les cases sur la dernière feuille du sujet, intitulée feuille de réponse

Administration de systèmes

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Éléments de programmation et introduction à Java

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

Programmation assembleur : aperçu

Programmation C. Apprendre à développer des programmes simples dans le langage C

STAGE IREM 0- Premiers pas en Python

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

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Générer du code à partir d une description de haut niveau

CONNAITRE VOTRE APPAREIL PHOTO DESCRIPTIF DE L APPAREIL. 1 Bouton MARCHE/ARRET 5 Flash 2 Obturateur 6 Retardateur LED

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

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

Protégez votre entreprise

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Ces exigences s appliquent à la version 2014 de Sage 200 ERP Extra au

À propos de cette page Recommandations pour le mot de passe... 26

LA MESURE DES PERFORMANCES DES COMPAGNIES D ASSURANCES

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

CONTRAT DE LICENCE D UTILISATION DU LOGICIEL MORPH M SOUS LA FORME MORPH M PYTHON

Mise à jour : Octobre 2011

Bases de programmation. Cours 5. Structurer les données

HelpDesk. Sept avantages de HelpDesk

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Préparation à l examen EFA en Macro

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Programmation parallèle et distribuée

E-PROCUREMENT GESTION D UTILISATEURS

Latitude N Longitude E Altitude 376 m RÉSUMÉ MENSUEL DU TEMPS DE JANVIER 2014

Configuration du serveur web embarqué

Twitter et Netvibes pour la veille

Théorie des Langages

Préconisations Techniques & Installation de Gestimum ERP

Chapitre 1 : La gestion dynamique de la mémoire

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

Création d un document PublishView

MANUEL D UTILISATION DE LA SALLE DES MARCHES APPEL D OFFRES OUVERT ACCES ENTREPRISES. Version 8.2

Présentation du logiciel Lotus Sametime 7.5 IBM

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Quelle stratégie foncière dans les trames verte et bleue?

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

Al attention du praticien et des étudiants, nous avons développé

Conception de circuits numériques et architecture des ordinateurs

Mise en route de Cobian Backup

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

Guide d installation du logiciel Proteus V.8 Sous Windows Vista, 7, 8

Mettre à jour son ordinateur vers Windows 7

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

Petit guide des sous-réseaux IP

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Rappels sur les suites - Algorithme

Préoccupations, attentes et prévoyance des travailleurs non salariés et des dirigeants de très petites entreprises

Résumé Génération de code Le code intermédiaire

C.M. 1 & 2 : Prise en main de Linux

DESSIN ASSISTÉ PAR ORDINATEUR D.A.O. EN LYCÉE PROFESSIONNEL

WorkflowGen 6.0 Guide de mise à jour

PRE-REQUIS A L INSTALLATION...

Créée en 2002, la société PineApp est pionnière sur le. Le siège de la société se trouve aux États-Unis, avec des

Guide utilisateur i-milo >> Décisionnel

Transcription:

Chap. 7. Gestion de la mémoire à l exécution Il existe 2 allocations mémoires : 1. statique (à la compilation). 2. dynamique (à l exécution). La gestion de la mémoire à l exécution est plus délicate. Certains langages (comme Fortran) n autorise que l allocation statique de la mémoire. M. KRAJECKI 1 Licence Informatique 1. Gestion de la mémoire par allocation statique 2 étapes 1. À la compilation : le compilateur calcule la taille mémoire nécessaire à la bonne exécution du programme. 2. À l exécution : le système d exploitation vérifie s il dispose d assez de mémoire pour exécuter le programme ; dans le cas contraire, l exécution est annulée. M. KRAJECKI 2 Licence Informatique

2. Allocation dynamique de la mémoire L utilisation d une pile et éventuellement d un tas (pour l allocation des variables) est nécessaire pour : allouer de la mémoire ; autoriser l appel de fonctions et procédures. Pascal et C utilisent une pile pour effectuer ces opérations. M. KRAJECKI 3 Licence Informatique Organisation de la mémoire Pour exécuter un programme, il faut placer en mémoire : le code cible du programme ; les données (allouées statiquement) ; la pile et le tas (si nécessaire). Par convention, la taille de la pile augmente quand l adresse du sommet diminue Code Code Données / constantes Données / constantes Tas sommet de la pile Pile Gestion sans tas Pile Gestion avec un tas M. KRAJECKI 4 Licence Informatique

Organisation de la mémoire Quand un module veut s exécuter, on lui donne la mémoire nécessaire à sa bonne exécution. Quand le module se termine, on lui reprend la mémoire durée de vie d une variable = temps d exécution du module où elle est définie. Les définitions de fonctions autorisées en C et en Pascal sont différentes : en C, il n existe qu un seul niveau d utilisation En Pascal, il existe plusieurs niveaux d utilisations : il est possible de définir localement une fonction dans une fonction. M. KRAJECKI 5 Licence Informatique Un enregistrement d activation d une fonction C main( ) { un seul niveau d utilisation } P( ) { mais le récursivité est autorisée } Q( ) { } Q( ) Q( ) P( ) main( ) Mémoire statique Appel récursif Pile d exécution M. KRAJECKI 6 Licence Informatique

Un enregistrement d activation d une fonction C SP (pour Stack Pointer : un registre) est une base par rapport à laquelle on recherche les informations du module dont les données sont au sommet de la pile d exécution. p(t1, t2,..., tn) n emplacement pour tn... emplacement pour t2 emplacement pour t1 enregistrement d activation du module p M. KRAJECKI 7 Licence Informatique Un enregistrement d activation d une fonction C On ne peut pas toujours recalculer la valeur SP du module appelant : nous devons donc sauvegarder cette valeur. Il faut également pouvoir reprendre l exécution du module appelant au bon endroit (exécution de la prochaine instruction) : il faudra également sauvegarder l adresse de retour. Enfin, nous devons prévoir un emplacement mémoire pour sauvegarder le résultat de la fonction. M. KRAJECKI 8 Licence Informatique

Un enregistrement d activation d une fonction C mémoires locales mémoires temporaires ancienne valeur de SP adresse de retour résultat Accès à une variable : SP courant + décalage nombre de paramètres paramètres M. KRAJECKI 9 Licence Informatique Génération de code pour l appel de fonction La grammaire : Instr Flist id(flist) Flist, E E Problème : comme pour les tableaux, nous aurons besoin du nom de la fonction pour générer l enregistrement d activation. Donc : Instr Flist Flist) Flist, E id(e M. KRAJECKI 10 Licence Informatique

B # Génération de code pour l appel de fonction Que faut-il faire avant l appel de la fonction? Au début et à la fin de l appel? Rappel : en C, seul le passage par valeur est autorisé. Supposons que p(t1,..., tn) soit la prochaine instruction : il faudra empiler la valeur de chaque paramètre sur la pile ; on suppose qu un attribut place est défini pour chaque ti. La fonction empiler peut être définie ainsi : empiler(x){ *top = x ; /* top est l adresse mémoire */ top = top -1 ; /* du sommet de la pile */ } M. KRAJECKI 11 Licence Informatique Génération de code pour l appel de fonction "! { $#%# &,- 0 & (')+*.(/ 1*32 } 4 5 6&798 :5;< "! { $#%# & 0 =798 :% (')+* (') & 0 > 5 6&798 :< 1* @?A2 } 4 5 6 { 5 6C D#%#6/ EF 9 6 ;C;;< $G<H 6 C (')I#%# 5J ; KMLONP; ;5KMLON taille de la valeur de retour # RQSN #%#C/ RQSNUTWVXKMLON?A2$#C/ } M. KRAJECKI 12 Licence Informatique

Génération de code pour l appel de fonction Remarques : la taille de la valeur de retour est connue au moment de la déclaration du module ; les trois derniers quadruplets peuvent également être généré par les première instructions de la fonction. Au début de la fonction, il faut également modifier le sommet de la pile : 9KYL NZTWVAKYL N[J]\ taille des mémoires locales) À la fin de l exécution de la fonction, il faut restaurer le contexte d exécution. M. KRAJECKI 13 Licence Informatique Génération de code pour l appel de fonction TOP SP mémoires locales + mémoires temporaires ancienne valeur de SP L ancienne valeur de SP est stockée à l adresse SP résultat Le résultat de la fonction est stockée à l adresse SP+1 adresse de retour (quad) L adresse de retour est stockée à l adresse SP+2 nombre de paramètres paramètres M. KRAJECKI 14 Licence Informatique

Un enregistrement d activation pour Pascal Pascal autorise : 2 types de modules : fonction et procédure ; les modules imbriqués. 2 types de passages de paramètres : valeur et variable ; Dans le cas d un passage par valeur, un emplacement de la pile contiendra directement la valeur. Pour un passage par variable, un emplacement de la pile contiendra l adresse de la variable. M. KRAJECKI 15 Licence Informatique Un enregistrement d activation pour Pascal M. KRAJECKI 16 Licence Informatique

mémoires locales Le problème : il existe des variables globales ancienne valeur de SP résultat adresse de retour (quad) nombre de paramètres Une variable locale est accesible facilement : SP courant + décalage Une variable définie ailleur (globale) est accesible par : Un autre SP + décalage Le problème : comment déterminer lequel? paramètres M. KRAJECKI 17 Licence Informatique La table des symboles i 1 0 x 1 0 y 0 décalage par rapport à SP niveau Nous devons également sauvegarder la valeur des SP dans une table particulière appelée Environnement ou Display. M. KRAJECKI 18 Licence Informatique

Gestion de l environnement La fonction ^`_%a&bdcegfhrikj est chargée de renvoyer la valeur du SP de niveau i. Attention : il peut exister plusieurs modules de même niveau. Lors des appels, il est donc nécessaire de sauvegarder (empiler) l environnement. M. KRAJECKI 19 Licence Informatique Conclusion Ce cours ne constitue qu une introduction à la compilation. Les techniques d analyse classique ont été abordées : analyse lexicale et syntaxique (LL, LR, SLR, LALR). La traduction dirigée par la syntaxe a permis de définir une représentation intermédiaire. Il reste encore 2 étapes importantes qui n ont pas été abordées par manque de temps : l optimisation du code intermédiaire ; la génération du code exécutable. M. KRAJECKI 20 Licence Informatique