Cours 8 5. Appels de fonctions Le matériel Concepts de pile

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes dexploitation Le matériel des ordinateurs Revue Pt II (Tanenbaum 1.4)
Advertisements

sont des registres 32 bits
Chapitre annexe. Récursivité
Les procédures et interruptions en Assembleur (Tasm)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Plan du cours : 2ème Partie
Interface Matériel/logiciel
Interface Matériel/logiciel
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Machine à Pile.
Exemple chargement dune instruction 3 0x00 0xXX 0x05 0x00 0x04 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals.
Les structures de données
Paramètres et pointeurs
Système d’exploitation : Assembleur
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
Architecture et technologie des ordinateurs II
Les piles Djamal Rebaïne.
Architecture et technologie des ordinateurs II
La récursivité Une procédure est dite récursive si, et seulement si, elle fait appel à elle-même, soit directement soit indirectement Djamal Rebaïne Djamal.
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Système d’exploitation : Assembleur
INTRODUCTION AU Février 2008
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
LES SYSTEMES AUTOMATISES
©Frédéric Bastien 2006 Université de Montréal 1 LISATek LISATek pour concevoir des processeurs.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Environnements d'exécution
Architecture et technologie des ordinateurs II
Cours 3 2. Représentation et traitement des informations Le matériel
Cours 1 1.Introduction Le matériel Introduction au langage C
Cours 4 3. Construction d’un ordinateur Le matériel Chapitre 3 CSA
Chapitre 9 Les sous-programmes.
Cours 6 3. Construction d’un ordinateur Le matériel Chapitre 5 CSA
Cours 5 3. Construction d’un ordinateur Le matériel
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Cours Architecture des Systèmes Informatiques
SIF-1053 Architecture des ordinateurs
SYSTÈME D’EXPLOITATION I
Programmation Système et Réseau
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.
INFOR 101 Chapitre 5 Marianne Morris.
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 Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
Exemple chargement d’une instruction 3 0x00 0xXX 0x00 Addr Alu JM 4 to 16 Decoder High Bit C B MPC B Bus C Bus Memory control signals (rd,wr,fetch)
Architecture et technologie des ordinateurs II
IFT209 – Programmation Système

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)
Introduction à l’Informatique Licence SPI Mme Delmotte.
Automne 2002 Martin Dubois Programmation système IFT Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous.
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Transcription de la présentation:

Cours 8 5. Appels de fonctions Le matériel Concepts de pile 31/03/2017 5. Appels de fonctions Concepts de pile Concepts de passage de paramètres Concepts de variable locale Le matériel Chapitre 8 CSA Synthèse du professeur sif-1053

Appel de fonctions Lors de l’appel à une fonction, comment fait-on pour retourner à la suite de l’exécution de la fonction appelante après que la fonction appelée soit terminée ? Quel est le mécanisme qui permet ce retour ? sif-1053

Appel de fonctions Dans un environnement multitâche, plusieurs programmes peuvent faire appel à des fonctions dans une librairie dynamique Comment les variables locales peuvent-elles rester intègre ? sif-1053

Architecture CISC MAR: Memory adr. reg. MDR: Memory data reg. MBR: Memory byte reg. PC: Program counter SP: stack pointer LV: base pointer sif-1053

Architecture CISC MPC: program counter MIR: instruction register sif-1053

Architecture CISC Piles Les langages de programmation supportent le concept de procédure et de variables locales associées à chaque procédure Où sont placées ces variables locales ? Dans des adresses (RAM) absolues ? NON ! Si plusieurs appels à une procédure donnée (récursivité) Partage des variables Problème d’intégrité sif-1053

Architecture CISC Une pile est indispensable pour le bon fonctionnement de nos programmes Une pile est un ensemble d’espaces mémoire qui permet de stocker les variables locales d’une procédure LV pointe au début du bloc mémoire où sont stockées les variables locales d’une procédure SP pointe sur la variable locale sur le dessus de la pile Chaque variable est accédée en donnant le décalage par rapport à LV sif-1053

Architecture CISC Une pile permet de stocker les variables locales LV pointe au début du bloc mémoire où sont stockées les variables locales d’une procédure (Voir fig. 4-8 (a)) SP pointe sur la variable locale sur le dessus de la pile Chaque variable est accédée en donnant le décalage par rapport à LV sif-1053

Architecture CISC Une pile permet de stocker les variables locales Si la procédure A appelle la procédure B (Voir fig. 4-8 (b)) Si la procédure B appelle la procédure C (Voir fig. 4-8 (c)) Quand proc. C termine la pile est ajustée (Voir fig. 4-8 (b)) Après la terminaison de proc. C et B, proc. A appelle D (Voir fig. 4-8 (d)) sif-1053

Architecture CISC (pile) PROC() { int a1, a2, a3 ; } sif-1053

Introduction au ISA de MIC-1 Une pile permet de stocker les opérandes d ’opérations arithmétiques a1 <- a2 + a3 push a2 (Voir fig. 4-9 (a)) push a3 (Voir fig. 4-9 (b)) pop a2 pop a3 push (a2+a3) pop (a2+a3) a1 <- (a2+a3) } Instruction (voir fig. 4-9 (c)) sif-1053

Architecture CISC (pile) { a1 = a2 + a3 ; } sif-1053

Introduction au ISA de MIC-1 Modèle mémoire Architecture consiste en une mémoire pouvant être vue de deux façons: 4 GB ou 1 G mots de 32 bits. Le niveau ISA n’a pas accès directement aux adresses absolues en mémoire, mais peut avoir accès à la mémoire de façon indirecte en utilisant l ’indexage par rapport à des pointeurs de références (ex: CPP, LV, PC) sif-1053

Introduction au ISA de MIC-1 Modèle mémoire Subdivisions de la mémoire Espace des constantes: Contient des constantes, chaînes de caractères et des pointeurs à d’autres espaces mémoires. Cet espace mémoire est chargé quand un programme est chargé en mémoire mais n’est pas modifié après. Cet espace est accessible à partir du pointeur CPP (Voir fig. 4-10) Espace des variables locales: A chaque appel d’une procédure un espace est réservé pour le stockage des variables locales. Au début, de cet espace réside les paramètres passés lors de l’appel d’une procédure. sif-1053

Introduction au ISA de MIC-1 Modèle mémoire Subdivisions de la mémoire Espace des opérandes: Cet espace contient les opérandes d’opérations données. Les opérandes sont accessibles par le pointeur SP. Espace des programmes: Contient les programmes. Les instructions à exécuter sont accessibles par le pointeur PC. PC pointe sur des octets contrairement aux pointeurs CPP, LV, SP. LV pointe sur le premier word (32 bits) LV + 1 pointe sur le deuxième word PC pointe sur un octet PC + 1 point sur l’octet suivant sif-1053

Introduction au ISA de MIC-1 Modèle mémoire sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Chaque instruction consiste en un code d’opération (opcode) et occasionnelle-ment d’une opérande. Chaque code d ’opération peut être représenté par un code hexadécimal (ex: BIPUSH => 0x10) L’opérande peut être un décalage mémoire (memory offset) ou un constante. sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instructions PUSH de diverses sources Espace des constantes: LDC_W Espace des variables locales: ILOAD L’instruction elle-même: BIPUSH Instruction POP vers une variable locale: ISTORE Opérations arithmétiques: IADD, ISUB Opérations booléennes: IAND, IOR Avec les opérations arithmétiques et booléennes: deux mots sont extraits de la pile (POP) et le résultat est déposé sur le dessus de la pile (PUSH) sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instructions de branchements: Inconditionnel: GOTO Conditionnel: IFEQ , IFLT, IF_ICMPEQ Lorsque le branchement est effectué, le PC est ajusté en lui additionnant un décalage donné sur 16 bits signés Instruction de permutation de deux mots sur la pile: SWAP Instruction de duplication d’un mot sur la pile: DUP Instruction d’élimination d ’un mot sur la pile: POP sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instructions d’appel à une procédure ou une autre instruction: INVOKEVIRTUAL Instructions de retour d’une procédure: IRETURN Le mécanisme d’appel (CALL, INVOKEVIRTUAL disp) La procédure appelante dépose sur la pile, un pointeur sur l’objet appelé (OBJREF) La procédure appelante dépose les paramètres sur la pile (Voir fig. 4-12 (a)) INVOKEVIRTUAL est exécuté sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instruction INVOKEVIRTUAL disp indique la position dans l’espace des constantes où est située l’adresse de départ de la procédure dans l’espace des programmes Au début de chaque procédure nous trouvons 4 octets: 2 octets (16 bits) donnant le nombre de paramètres (OBJREF inclus) 2 octets (16 bits) donnant la dimension de l’espace des variables locales sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instruction INVOKEVIRTUAL (CALL) Phases d’exécution (Voir fig. 4-12) adr. proc (espace programme) <- [cpp + disp] LV pointe initialement sur OBJREF [LV] est mis à jour et LV pointe dorénavant sur une adresse d’un emplacement de la pile contenant le PC de la procédure appelante (Previous PC) link ptr <- LV + # paramètres + # var. loc. Sur le dessus de la pile et pointé par SP, nous trouvons un emplacement sur la pile contenant l’ancien LV (Previous LV) PC <- adr. proc. PC <- PC + 5 pour pointer au début du code de la procédure dans l’espace programme sif-1053

Introduction au ISA de MIC-1 PROCA(P1,P2) PROCB(P1,P2,P3) RETURN_B RETURN_A sif-1053

Introduction au ISA de MIC-1 PROCA(P1,P2) PROCB(P1,P2,P3) RETURN_B RETURN_A Fonction appelante PROCA PUSH les paramètres P1, P2, P3 passés à la procédure appelée PROCB Avant l’appel à INVOKEVIRTUAL (CALL) sif-1053

Introduction au ISA de MIC-1 PROCA(P1,P2) PROCB(P1,P2,P3) RETURN_B RETURN_A adr. proc. <- [CPP + disp] LV <- SP - # de paramètres [LV] = link ptr = LV + # paramètres + # var. loc. sif-1053

Introduction au ISA de MIC-1 PROCA(P1,P2) PROCB(P1,P2,P3) RETURN_B RETURN_A SP <- SP + # var. loc. + 1 [[LV]] <- Vieux PC (adr. de retour dans PROCA) [[LV]+1] <- Vieux LV sif-1053

Introduction au ISA de MIC-1 Jeu d’instructions Instruction IRETURN Phases d’exécution (Voir fig. 4-13) Libération de l’espace utilisé par la procédure appelée Restaure la pile à son état avant l’appel sauf: OBJREF et les paramètres sont éliminés de la pile (POP) La valeur de retour de PROCB est placée sur le dessus de la pile Pour rétablir l’ancien état (PROCA), PC <- Previous PC et LV <- Previous LV SP est mis à jour et pointe sur le dessus de la pile (Voir fig. 4-13 (b)) La valeur de retour qui est sur le dessus de la pile avant l ’exécution du IRETURN est copiée à la place du Link ptr. (OBJREF) Le programme recommence après l’instruction INVOKEVIRTUAL dans PROCA sif-1053

Introduction au ISA de MIC-1 sif-1053

La pile et l’adresse de retour EIP du PENTIUM est l’équivalent du PC de MIC 1 sif-1053

La pile et pointeur de pile ESP du PENTIUM est l’équivalent du SP de MIC 1 sif-1053

Fonction en langage C sif-1053

Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres En langage C, nous pouvons passer des informations aux fonctions via son interface et ce de deux façons distinctes: Passage par valeur: valeurs actuelles sont passées Passage par référence (adresse): pointeurs sont passés sif-1053

Prototype de la fonction Éléments fondamentaux de la programmation en langage C Fonctions, passage de paramètres (par valeur) et valeur retournée Prototype de la fonction sif-1053

Éléments fondamentaux de la programmation en langage C Fonctions et passage de paramètres (par adresse) sif-1053

Accès à la pile sif-1053

Appel de fonction et assembleur EBP pointe sur le début de la zone pile réservée à la fonction Fin de la fonction Appel de fonction Passage de paramètres Dans le DEBUGGER taper ALT+8 pour obtenir le code assembleur sif-1053

Appel de fonctions et la pile EBP du PENTIUM est équivalent au LV du MIC-1 sif-1053

Erreur typique de pointeur en langage C sif-1053