CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Premier programme en C :
Chapitre annexe. Récursivité
Les procédures et interruptions en Assembleur (Tasm)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
Introduction à l’Algorithmique
GEF 243B Programmation informatique appliquée
La pile un élément essentiel
Le Concept du programme enregistré
Paramètres et pointeurs
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Système d’exploitation : Assembleur
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département dIngénierie Informatique, UCL
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.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Présentation Structures de Données et TDA
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
Environnements d'exécution
Architecture et technologie des ordinateurs II
Chapitre 9 Les sous-programmes.
1-1 Chapitre 5: Les variables Introduction Les noms Les variables Les attributions (bindings) Portée et durée de vie L'environnement de référence Les noms.
Standard Template Library
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
Méthode et Outils pour la Programmation
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Créer des packages.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
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.
Cours LCS N°4 Présenté par Mr: LALLALI
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
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 «
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Patricia Renault UPMC 2005/2006
Introduction à l’utilitaire
CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
IFT359 – Programmation fonctionnelle Thème 07 Fermeture, affectation ou monades 1.
Transcription de la présentation:

CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )

2 Plan du Cours Generalites Environement dAppel Entierement Statique Structure de lenvironnement Appel a un sous-programme Environement dAppel fonde sur une Pile Structure de lenvironnement Appel a un sous-programme Chaine Statique Donnees a Longueur variable

3 Generalites Lappel a des sous-programmes se fait de facon imbriquee. Lappelant attend que lappele se termine pour poursuivre son execution. Toute activation de sous-programme est representee par un enregistrement dactivation. Celui-ci est cree lors de lexecution particuliere dun sous- programme et sa structure est geree par lenvironnement.

4 Environnement Entierement Statique Dans ce cas, toute la memoire requise pour les enregistrements peut etre allouee au chargement. Chaque variable se voit allouer un espace qui demeurera inchange tout au long de lexecution du programme. Un environement entierement statique ne permet pas la recursivite. Limplementation des sous-programme en Fortran (sauf le Fortran 90) se fait dans un environnement entierement statique.

5 Structure de lenvironnement Statique I Chaque enregistrement se structure ainsi: Addresse de retour Addresse de Storage (pour fonctions) Variables locales Parametres Espace temporaire Information sur Lappelant Information sur lappele

6 Structure de lEnvironnement Statique II Lenvironnement est defini comme suit: Aire Commune Enregistrement dactivation du programme principal Enregistrement dactivation du 1er sous-programme Enregistrement dactivation du 2eme sous-programme ….

7 Deroulement dun appel a un sous-programme dans un environnement statique 1. Les arguments sont evalues et leur emplacement est stocke dans lespace des parametres de lenregistrement dactivation (passage par reference). Si le passage se fait par valeur, les donnees passees doivent avoir une taille fixe. 2. Laddresse contenue dans le compteur dinstruction est place dans lespace pour laddresse de retour. 3. Le compteur programme peut alors etre mis a jour (a laddresse ou debute le sous-programme). 4. Si une valeur doit etre retournee, celle-ci est placee a linterieur dun registre ou de tout autre espace convenable.

8 Environnement fonde sur une Pile Dans les langages a portee lexicale qui permettent la recursivite, lenvironnement repose sur une pile. A chaque nouvel appel a un sous-programme, un nouvel enregistrement est cree a linterieur de la pile. Tous les enregistrements sont donc empiles, du sous-programme initial jusquau sous-programme en cours dexecution (qui se trouve au dessus de la pile). Les Langages Algols et leur descendants ont des environements fondes sur une pile et permettent donc la recursion et autres imbriquements.

9 Structure de lenvironnement fonde sur une Pile I Chaque enregistrement se structure ainsi: Lien dynamique Addresse de retour Addresse de storage (pour fonctions) Lien statique Variables locales Parametres formels Espace temporaire Information sur lappelant Information sur lappele

10 Structure de lenvironnement fonde sur une Pile II Lenvironnement est defini comme suit: Aire du Code Aire des donnees Information de Controle

11 Deroulement dun appel a un sous-programme dans un environnement a pile I 1. Un pointeur denvironnement contient lemplacement de lenregistrement dactivation courant 2. Laddresse de lenregistrement dactivation de lappelant est place dans le lien dynamique. 3. Laddresse de lenregistrement dactivation du parent statique est place dans le lien statique (si le langage le permet). Le lien statique peut aussi donner lemplacement de la zone contenant les variables globales. 4. Les arguments sont evalues et leur valeur est stocke dans lespace des parametres de lenregistrement dactivation.

12 Deroulement dun appel a un sous-programme dans un environnement a pile II 5. Laddresse contenue dans le compteur dinstruction est placee dans lespace pour laddresse de retour. 6. Le compteur programme peut alors etre mis a jour (a laddresse ou debute le sous-programme). 7. Si une valeur doit etre retournee, celle-ci est placee a linterieur dun registre ou de tout autre espace convenable. Note: La position de toute variable locale est toujours donnee de facon relative au pointeur denvironnement.

13 Quelques Examples Dans ces examples, on supposera un model simplifie, avec: Un pointeur a lenregistrement dactivation de lappelant, Un pointeur au premier bloc exterieur, Laddresse de retour (donnee sous forme symbolique) Les donnees locales (sil y en a) Les parametres actuels (sil y en a) Voir Diapositives 13 (a), (b) et (c) [i.e., les examples donnes dans la version Anglaise des notes].

14 Chaine Statique Dans un langage ou les sous-programmes peuvent etre imbriques, les variables stockees sur la pile ne sont pas accedees par leur nom. Dans un langage a portee statique, une variable doit donc etre localisee en remontant la chaine dimbrication statique. Laddresse de la variable V sur la pile se specifie a laide de deux nombres: Le nombre denregistrements quil faut remonter afin darriver a lenregistrement contenant la variable. La position de cette variable par rapport a lenregistrement.

15 Implementation des Fonctions sur la Pile Laffectation daddresse au fragments de programme doit etre un petit peu plus elaboree: program Main; var A: integer; function F (N: integer): integer; begin if N <= 1 then F:=1 else F := F(N-1) * N end; begin A := F(3); writeln(A) end.

16 Donnees a Longueur Variable I De telles donnees (telles que des tableaux locaux) doivent aussi etre stoocke sur la pile, mais il est preferable que laddresse soit determinee au moment de la compilation. On choisit de separer le mecanisme dacces aux donnees des donnees elles-meme. Un tableau sera donc decrit dans lenregistrement dactivation par un descripteur. Les elements du tableau seront stockes apres lenregistrement dactivation de lappelant, plus pres du haut de la pile. Il nya pas de restrictions sur la taille des tableaux (quoiquil ne faut pas exceder le montant de memoire disponible en general)

17 Donnees a Longueur Variable II Un descripteur contient: Les limites pour les indexes du tableau (ils peuvent etre utiles pour de la verification pendant lexecution) Une base (un pointeur jusquau debut de lespace des donnees). Afin dacceder a un element, il faut trouver son addresse en ajoutant a la base la distance du debut du tableau a lelement (en ordre row-major ou column-major).