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

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
borhen boukthir
 

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 (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

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

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 

Dernier (20)

Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
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
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.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
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 

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