La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Sif-10531 Cours 8 n 5. Appels de fonctions u Concepts de pile u Concepts de passage de paramètres u Concepts de variable locale n Le matériel u Chapitre.

Présentations similaires


Présentation au sujet: "Sif-10531 Cours 8 n 5. Appels de fonctions u Concepts de pile u Concepts de passage de paramètres u Concepts de variable locale n Le matériel u Chapitre."— Transcription de la présentation:

1 sif-10531 Cours 8 n 5. Appels de fonctions u Concepts de pile u Concepts de passage de paramètres u Concepts de variable locale n Le matériel u Chapitre 8 CSA u Synthèse du professeur

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

3 sif-10533 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 ?

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

5 sif-10535 MPC: program counter MIR: instruction register Architecture CISC

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

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

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

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

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

11 sif-105311 Introduction au ISA de MIC-1 n Une pile permet de stocker les opérandes d opérations arithmétiques u 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))

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

13 sif-105313 Introduction au ISA de MIC-1 n Modèle mémoire u Architecture consiste en une mémoire pouvant être vue de deux façons: 4 GB ou 1 G mots de 32 bits. u Le niveau ISA na 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)

14 sif-105314 Introduction au ISA de MIC-1 n Modèle mémoire u Subdivisions de la mémoire F Espace des constantes: Contient des constantes, chaînes de caractères et des pointeurs à dautres espaces mémoires. Cet espace mémoire est chargé quand un programme est chargé en mémoire mais nest pas modifié après. Cet espace est accessible à partir du pointeur CPP (Voir fig. 4-10) F Espace des variables locales: A chaque appel dune 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 lappel dune procédure.

15 sif-105315 Introduction au ISA de MIC-1 n Modèle mémoire u Subdivisions de la mémoire F Espace des opérandes: Cet espace contient les opérandes dopérations données. Les opérandes sont accessibles par le pointeur SP. F 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 loctet suivant

16 sif-105316 Introduction au ISA de MIC-1 n Modèle mémoire

17 sif-105317 Introduction au ISA de MIC-1 n Jeu dinstructions u Chaque instruction consiste en un code dopération (opcode) et occasionnelle- ment dune opérande. u Chaque code d opération peut être représenté par un code hexadécimal (ex: BIPUSH => 0x10) u Lopérande peut être un décalage mémoire (memory offset) ou un constante.

18 sif-105318 Introduction au ISA de MIC-1 n Jeu dinstructions

19 sif-105319 Introduction au ISA de MIC-1 n Jeu dinstructions u Instructions PUSH de diverses sources F Espace des constantes: LDC_W F Espace des variables locales: ILOAD F Linstruction elle-même: BIPUSH u Instruction POP vers une variable locale: ISTORE u Opérations arithmétiques: IADD, ISUB u Opérations booléennes: IAND, IOR u 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)

20 sif-105320 Introduction au ISA de MIC-1 n Jeu dinstructions u Instructions de branchements: F Inconditionnel: GOTO F 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 u Instruction de permutation de deux mots sur la pile: SWAP u Instruction de duplication dun mot sur la pile: DUP u Instruction délimination d un mot sur la pile: POP

21 sif-105321 Introduction au ISA de MIC-1 n Jeu dinstructions u Instructions dappel à une procédure ou une autre instruction: INVOKEVIRTUAL u Instructions de retour dune procédure: IRETURN F Le mécanisme dappel (CALL, INVOKEVIRTUAL disp) La procédure appelante dépose sur la pile, un pointeur sur lobjet appelé (OBJREF) La procédure appelante dépose les paramètres sur la pile (Voir fig. 4-12 (a)) INVOKEVIRTUAL est exécuté

22 sif-105322 Introduction au ISA de MIC-1 n Jeu dinstructions u Instruction INVOKEVIRTUAL F disp indique la position dans lespace des constantes où est située ladresse de départ de la procédure dans lespace des programmes F 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 lespace des variables locales

23 sif-105323 Introduction au ISA de MIC-1 n Jeu dinstructions u Instruction INVOKEVIRTUAL (CALL) F Phases dexé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 dun 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 lancien LV (Previous LV) PC <- adr. proc. PC <- PC + 5 pour pointer au début du code de la procédure dans lespace programme

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

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

26 sif-105326 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.

27 sif-105327 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

28 sif-105328 Introduction au ISA de MIC-1 n Jeu dinstructions u Instruction IRETURN F Phases dexécution (Voir fig. 4-13) Libération de lespace utilisé par la procédure appelée Restaure la pile à son état avant lappel 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 lancien é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 linstruction INVOKEVIRTUAL dans PROCA

29 sif-105329 Introduction au ISA de MIC-1

30 sif-105330 La pile et ladresse de retour EIP du PENTIUM est léquivalent du PC de MIC 1

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

32 sif-105332 Fonction en langage C

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

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

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

36 sif-105336 Accès à la pile

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

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

39 sif-105339 Erreur typique de pointeur en langage C


Télécharger ppt "Sif-10531 Cours 8 n 5. Appels de fonctions u Concepts de pile u Concepts de passage de paramètres u Concepts de variable locale n Le matériel u Chapitre."

Présentations similaires


Annonces Google