PILE voir l'animation: Diaporama / Visualiser ...

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Fonctionnement d’une machine à pile :
17 B. Goossens D. Defour17 B. Goossens D. Defour Prédiction des retours Le prédicteur adresse une pile (mémoire à 2 ports)
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Structures de données et complexité
Structures de données et complexité LIFO – FILO – FIFO – etc…
Plan du cours : 2ème Partie
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Assembleur
La pile un élément essentiel
Introduction à MPI Types dérivés MPI Décembre 2005
Les structures de données
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
MACHINE DE MOORE SYNCHRONE SIMPLIFIÉE Professeur à l'UHP / ESIAL
Structures de données linéaires
Récursivité.
SÉQUENCE D’ACTIONS SUR
Architecture et technologie des ordinateurs II
Les piles Djamal Rebaïne.
II. Chaînage, SDD séquentielles
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
IFT313 Introduction aux langages formels
Système d’exploitation : Assembleur
Système d’exploitation
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
INTRODUCTION AU Février 2008
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Structures de données IFT-2000
Les fichiers binaires en C++
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.
IFT-10541A : Hiver 2003 Semaine 5 : Piles et files.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Présentation Structures de Données et TDA
Environnements d'exécution
Architecture et technologie des ordinateurs II
Standard Template Library
Structures de données IFT-10541
Structures de données IFT-2000
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.
Buffer Overflow Anatomy of an exploit.
Les bases de l’assembleur
Ch. PAUL - Piles et Files à l'aide de listes chainées
Cours Architecture des Systèmes Informatiques
LES PILES ET FILES.
Conception de processeurs – partie 1
Cours Architecture des Systèmes Informatiques
LIBELIN Arnaud MATHEOSSIAN Dimitri TOURE Maurice.
Les interruptions – Ph. Hoppenot Les interruptions I.Notion d'interruption II.Exemple du 8051 III.Exemple du
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
ETNA – 1ème année Guillaume Belmas –
COURS_1 JC LP MD.
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.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Chapitre 3 L’accès aux données.

1.1: notions de bases de l’informatique
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.
Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Transcription de la présentation:

PILE voir l'animation: Diaporama / Visualiser ... avancer: Barre d'espace reculer: p TITRE

par empilage et dépilage PILE ("STACK") = zone de la mémoire où stocker temporairement des informations par empilage et dépilage DEFINITION

LIFO = "Last In - First Out" dernier entré - premier sorti LIFO

Dernière donnée empilée EMPILEMENT DE R0 1ère case disponible Cases disponibles Pile = zone de la mémoire Données empilées babe Donnée à empiler Dernière donnée empilée EMPILEMENT

babe babe babe babe babe PuSH Word from R0 PUSH

SP est le pointeur de pile "Stack Pointer" AVANT SP est le pointeur de pile "Stack Pointer" bifbof pam 1006 babe SP pointe sur la donnée au sommet de la pile "Top Of Stack" SP pointe donc sur la dernière donnée empilée Il contient donc l'adresse de la dernière donnée empilée PUSH Word from R0 PUSH

SP pointe provisoirement sur la 1ère case disponible DECREMENTATION DE SP SP  SP-2 -2 bifbof 1006 pam 1004 babe SP pointe provisoirement sur la 1ère case disponible PUSH

SAUVEGARDE DE R0 R0  M[SP] bifbof babe pam 1004 babe PUSH

la dernière donnée empilée APRES babe pam 1004 babe SP pointe à nouveau sur la dernière donnée empilée PUSH

Une instruction spéciale n'est pas nécessaire ! ADQ -2, SP ; // décrémente SP; // SP pointe ensuite sur // la 1ère case disponible STW R0, (SP) ; // stocke le contenu de R0 // ds la case pointée par SP // donc la 1ère disponible PROGRAMME DE PUSH

“basé pré-décrémenté”: Utilisation du mode “basé pré-décrémenté”: STW R0, -(SP) ; // décrémente SP, puis // stocke le contenu de R0 // ds la case pointée par SP MODE BASE PRE-DEC.

Dans beaucoup de machines, il existe une instruction spécifique et optimisée pour SP: PuSh Word PSW R0 ; // décrémente SP, puis // stocke le contenu de R0 // ds la case pointée par SP PuSh Word

DEPILEMENT DANS R1 POP Dernière donnée empilée à récupérer babe Registre où charger cette donnée POP Word to R1 DEPILEMENT

SP est le pointeur de pile "Stack Pointer" AVANT SP est le pointeur de pile "Stack Pointer" babe pam 1004 0101 SP pointe sur la donnée au sommet de la pile POP Word to R1 PoP Word

CHARGEMENT DE R1 R1  M[SP] babe pam 1004 babe 0101 PoP Word

SP pointe sur la dernière donnée empilée INCREMENTATION DE SP SP  SP+2 +2 babe pam 1004 1006 babe SP pointe sur la dernière donnée empilée avant celle qui vient d'être récupérée PoP Word

est à nouveau disponible APRES La case au-dessus est à nouveau disponible babe pam 1006 babe SP pointe sur le sommet de pile PoP Word

Une instruction spéciale n'est pas nécessaire ! LDW R0, (SP) ; // charge R0 avec le // sommet de pile ADQ 2, SP ; // incrémente SP PROGRAMME DE POP

“basé post-incrémenté”: Utilisation du mode “basé post-incrémenté”: LDW R0, (SP)+ ; // charge R0 avec le // sommet de pile puis // incrémente SP MODE BASE POST-INC.

Dans beaucoup de machines, il existe une instruction spécifique et optimisée pour SP: PoP Word ou PulL Word PPW R0 ; // charge R0 avec le // sommet de pile puis // incrémente SP PoP Word

STB R, -(SP) LDB R, (SP)+ Comment empiler et dépiler des octets ("Bytes") ? PuSh Byte PoP Byte Avec les instructions: STB R, -(SP) LDB R, (SP)+ GESTION D’OCTETS

dernière donnée empilée AVANT SP pointe sur la dernière donnée empilée bif bof pam 1006 ba be La donnée à empiler est un octet PUSH Byte from R0 STB R0, -(SP)

de la taille de la donnée, DECREMENTATION DE SP SP  SP-1 -1 bif bof 1006 pam 1005 ba be SP pointe sur une case disponible de la taille de la donnée, donc ici d'un octet STB R0, -(SP)

SAUVEGARDE DE R0 R0  M[SP] be bif bof pam ba be OCTET STB R0, -(SP) 1005 OCTET ba be STB R0, -(SP)

APRES bif be pam 1005 ba be STB R0, -(SP)

La base de pile doit être spécifiée avant usage. LDW SP, #2048 // initialise SP INITIALISATION

Lorsque l'on empile trop d'informations, la pile déborde ("stack overflow"), et écrase les données juste au dessus. DEBORDEMENT

AVANT vector pam babe Limite haute de la pile PUSH Word from R0 0600 babe Limite haute de la pile PUSH Word from R0 DEBORDEMENT

DECREMENTATION DE SP AU DESSUS DE LA LIMITE -2 vector pam 0600 05FE babe DEBORDEMENT

AU DELA DE LA LIMITE DE PILE La donnée système "vector" a été écrasée SAUVEGARDE AU DELA DE LA LIMITE DE PILE La donnée système "vector" a été écrasée vector babe pam 05FE babe DEBORDEMENT

La pile est utilisée pour stocker des informations en LIFO:  informations lors de l'appel et du retour des sous-programmes;  informations locales à un bloc ;  données intermédiaires lors du calcul. USAGE

FIN DE LA PRESENTATION

FIN DE LA PRESENTATION