SlideShare une entreprise Scribd logo
1  sur  20
ALF
Convention d'appel de
fonctions
Bibliographie pour aujourd'hui
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey
D. Ullman, Compilers: Principles, Techniques,
and Tools (2nd Edition)
– Chapitre 7
• 7.1
• 7.2
Contenu
• La Pile
• Cadre de pile
• Convention d'appel de
fonctions
Ken Thompson
• Américain
• UC Berkeley
• Auteur du langage Go
• Auteur du système
UNIX
La Pile
• Registres
– sp (8086)
– esp (386)
– rsp (AMD64)
• Instructions
– push
– pop
Expressions avec a pile
• poussez le premier opérande vers la pile
• poussez le second opérande vers la pile
• exécuter la instruction
– obtenir une valeur de la pile
– obtenir une valeur de la pile
– exécuter l'opération avec les deux valeurs
– pousser le résultat à la pile
Evaluation des expressions
• 2+3*5
• (6-2)*4
• 10 /5 + 2*3
• 3- (-2) *6
• -10/2 – (2+4)/2*(7-(-1))
Exercices (2+3*5)
push 2
push 3
push 5
mul
add
Appel de fonction
• Paramètres
• Variables locales
• Valeur de retour
• Apple effective
• Retour ou?
• Appelant
– Le program
– Fonction
• Appelé
– La fonction
Paramètres
• Types
– Valeur
– Reference
– Résultat
– Valeur et résultat
• Moyen de envoyer
– Pousser dans a pile
– Passer dans les registres
– Passer dans une structure des donnes
Cadre de plie
• Moyenne de
organisation de a pile
• Enregistre
– Paramètres
– Adresse de retour
– Adresse de cadre de pile
précédente
– Variables locales
– Espace pour allocation
locale
Stack Pointer et Frame (Base) Pointer
Stack Pointer (sp)
• Position out a prochaine
valeur va être pousse
• push
– sp = sp - dimension_mot
• pop
– sp = sp + dimension_mot
Frame ou Base Pointer (bp/fp)
• Valeur de sp au moment de
entrer dans a fonction
• Entre dans a fonction
– fp = sp
• Utilise pour les paramètres
et les variables locale
Appel de fonction (appelant)
1. Enregistrer les registres
2. Envoyer les paramètres
– pile
– registres
3. Saut vers la fonction et
enregistrer la adresse
du retour
Appel de fonction (appelé)
1. Enregistre le fp
2. Faire espace pour les
variable locales
3. Exécuter a fonction
4. Enregistrer la valeur de
retour
5. Mis a valeur initiale de
fp
6. Saut vers le appelant
Appel de fonction (appelant/appelé)
1. Effacer les paramètres
de a pile
2. Mis la valeur initiale de
registres
3. Prendre la valeur de
retour
Standard de appel
Architectu
re
Nom Paramètres
dans registres
Paramèt
res dans
la pile
Clean up Retour
IA-32 cdecl RTL Appelant EAX, EDX / pile
stdcall RTL Appelé
(Hybride)
EAX, EDX / pile
fastcall ECX, DEX RTL Appelé EAX, EDX / pile
x86-64 Microsoft RCX, RDX, R8,
R9
RTL Appelant RAX
System V,
AMD64 ABI
RDI, RSI, RDX,
RCX, R8, R9
RTL Appelant RAX
ARM 32 r0, r1, r2, r3 RTL Appelé r0
ARM 64 x0, x1, x2, x3,
x4,x5, x6, x7
Appelé x0, x1, x2, x3,
x4,x5, x6, x7
Exemple IA32 exp (p1, p2, p3);
Appelant
… push registres
push p3
push p2
push p1
call exp
sub esp, -12
… pop registres
Appelé
push ebp
mov ebp, esp
sub esp, dimension_variables
; prend p1
mov eax, ebp - 8
…
add esp, dimension_variables
pop ebp
mov eax, result
ret
Exemple x86-64 exp (p1, p2, p3);
Appelant
… push registres
mov rdi, p1
mov rsi, p2
mov rdx, p3
call exp
… pop registres
Appelé
push ebp
mov ebp, esp
sub esp, dimension_variables
; prend p1
mov eax, rd1
…
add esp, dimension_variables
pop ebp
mov eax, result
ret
Sujets
• Langage de assemblage pour une machine
avec une pile
• La Pile
• Cadre de pile
• Appel de fonctions
Questions

Contenu connexe

Tendances

ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerAlexandru Radovici
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteAlexandru Radovici
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021Dalila Chouaya
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaPatrick Allaert
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteAlexandru Radovici
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreducePatrick Bury
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
ALF 8 - Représentation des données
ALF 8 - Représentation des donnéesALF 8 - Représentation des données
ALF 8 - Représentation des donnéesAlexandru Radovici
 

Tendances (20)

ALF 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 1 - Automates finis
ALF 1 - Automates finis ALF 1 - Automates finis
ALF 1 - Automates finis
 
ALF 5 - Parser
ALF 5 - ParserALF 5 - Parser
ALF 5 - Parser
 
ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 4 - Grammaires
ALF 4 - GrammairesALF 4 - Grammaires
ALF 4 - Grammaires
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et LexerALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraite
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021
 
Initiation r
Initiation rInitiation r
Initiation r
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
ALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraiteALF 7 - Arbre de syntaxe abstraite
ALF 7 - Arbre de syntaxe abstraite
 
09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreduce
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
ALF 8 - Représentation des données
ALF 8 - Représentation des donnéesALF 8 - Représentation des données
ALF 8 - Représentation des données
 

Similaire à ALF 10 - Convention d'appel de fonction

Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
programmation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxprogrammation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxManalAg
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireAlexandru Radovici
 
Annotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonAnnotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonDidier Plaindoux
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieLoic Yon
 
LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingNoël
 

Similaire à ALF 10 - Convention d'appel de fonction (9)

Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
programmation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptxprogrammation_shell_2022 (1).pptx
programmation_shell_2022 (1).pptx
 
Php 5.3
Php 5.3Php 5.3
Php 5.3
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoire
 
Annotation Java vs. Decorator Python
Annotation Java vs. Decorator PythonAnnotation Java vs. Decorator Python
Annotation Java vs. Decorator Python
 
C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et nating
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2
 

Plus de Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 

Dernier

A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 

Dernier (16)

A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 

ALF 10 - Convention d'appel de fonction

  • 2. Bibliographie pour aujourd'hui Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition) – Chapitre 7 • 7.1 • 7.2
  • 3. Contenu • La Pile • Cadre de pile • Convention d'appel de fonctions
  • 4. Ken Thompson • Américain • UC Berkeley • Auteur du langage Go • Auteur du système UNIX
  • 5. La Pile • Registres – sp (8086) – esp (386) – rsp (AMD64) • Instructions – push – pop
  • 6. Expressions avec a pile • poussez le premier opérande vers la pile • poussez le second opérande vers la pile • exécuter la instruction – obtenir une valeur de la pile – obtenir une valeur de la pile – exécuter l'opération avec les deux valeurs – pousser le résultat à la pile
  • 7. Evaluation des expressions • 2+3*5 • (6-2)*4 • 10 /5 + 2*3 • 3- (-2) *6 • -10/2 – (2+4)/2*(7-(-1))
  • 8. Exercices (2+3*5) push 2 push 3 push 5 mul add
  • 9. Appel de fonction • Paramètres • Variables locales • Valeur de retour • Apple effective • Retour ou? • Appelant – Le program – Fonction • Appelé – La fonction
  • 10. Paramètres • Types – Valeur – Reference – Résultat – Valeur et résultat • Moyen de envoyer – Pousser dans a pile – Passer dans les registres – Passer dans une structure des donnes
  • 11. Cadre de plie • Moyenne de organisation de a pile • Enregistre – Paramètres – Adresse de retour – Adresse de cadre de pile précédente – Variables locales – Espace pour allocation locale
  • 12. Stack Pointer et Frame (Base) Pointer Stack Pointer (sp) • Position out a prochaine valeur va être pousse • push – sp = sp - dimension_mot • pop – sp = sp + dimension_mot Frame ou Base Pointer (bp/fp) • Valeur de sp au moment de entrer dans a fonction • Entre dans a fonction – fp = sp • Utilise pour les paramètres et les variables locale
  • 13. Appel de fonction (appelant) 1. Enregistrer les registres 2. Envoyer les paramètres – pile – registres 3. Saut vers la fonction et enregistrer la adresse du retour
  • 14. Appel de fonction (appelé) 1. Enregistre le fp 2. Faire espace pour les variable locales 3. Exécuter a fonction 4. Enregistrer la valeur de retour 5. Mis a valeur initiale de fp 6. Saut vers le appelant
  • 15. Appel de fonction (appelant/appelé) 1. Effacer les paramètres de a pile 2. Mis la valeur initiale de registres 3. Prendre la valeur de retour
  • 16. Standard de appel Architectu re Nom Paramètres dans registres Paramèt res dans la pile Clean up Retour IA-32 cdecl RTL Appelant EAX, EDX / pile stdcall RTL Appelé (Hybride) EAX, EDX / pile fastcall ECX, DEX RTL Appelé EAX, EDX / pile x86-64 Microsoft RCX, RDX, R8, R9 RTL Appelant RAX System V, AMD64 ABI RDI, RSI, RDX, RCX, R8, R9 RTL Appelant RAX ARM 32 r0, r1, r2, r3 RTL Appelé r0 ARM 64 x0, x1, x2, x3, x4,x5, x6, x7 Appelé x0, x1, x2, x3, x4,x5, x6, x7
  • 17. Exemple IA32 exp (p1, p2, p3); Appelant … push registres push p3 push p2 push p1 call exp sub esp, -12 … pop registres Appelé push ebp mov ebp, esp sub esp, dimension_variables ; prend p1 mov eax, ebp - 8 … add esp, dimension_variables pop ebp mov eax, result ret
  • 18. Exemple x86-64 exp (p1, p2, p3); Appelant … push registres mov rdi, p1 mov rsi, p2 mov rdx, p3 call exp … pop registres Appelé push ebp mov ebp, esp sub esp, dimension_variables ; prend p1 mov eax, rd1 … add esp, dimension_variables pop ebp mov eax, result ret
  • 19. Sujets • Langage de assemblage pour une machine avec une pile • La Pile • Cadre de pile • Appel de fonctions