Pile d'exécution
# Pile d'exécution

En informatique, la pile d’exécution (souvent abrégée en la pile ; en anglais, call stack) est une structure de données de type pile qui sert à enregistrer des informations au sujet des fonctions actives dans un programme informatique.

Une pile d'exécution est utilisée pour emmagasiner plusieurs valeurs, mais sa principale utilisation est de garder la trace de l'endroit où chaque fonction active doit retourner à la fin de son exécution (les fonctions actives sont celles qui ont été appelées, mais n’ont pas encore terminé leur exécution).

Exemple :

Un programme DessineCarré appelle une fonction DessineLigne à quatre endroits différents, la fonction DessineLigne doit avoir un moyen de savoir où poursuivre l’exécution à la fin de chacune de ses exécutions. Cela est fait par chacun des appels à la fonction DessineLigne qui place l’adresse de l'instruction suivant l'appel (l’adresse de retour) sur la pile d’exécution avant de transférer le contrôle de l’exécution à la fonction DessineLigne.

Étant donné que la pile d'exécution est une pile, l'appelant pousse l'adresse de retour sur la pile, et la fonction appelée, quand elle se termine, récupère l'adresse de retour au sommet de la pile d'exécution (et y transfère le contrôle). Si une fonction appelée appelle une autre fonction, elle poussera son adresse de retour sur la pile d'exécution. Les adresses de retour s'accumulent donc sur la pile d’exécution et sont récupérées une à une lors de la fin de l’exécution des fonctions. Si l’accumulation des adresses de retour consomme tout l'espace alloué à la pile d'exécution, un message d'erreur appelé un dépassement de pile se produit.

En plus d’emmagasiner des adresses de retour, la pile d’exécution emmagasine aussi d’autres valeurs associées comme les variables locales de la fonction, les paramètres de la fonction, etc.

Dans les langages de programmation de haut niveau, les spécificités de la pile d'exécution sont cachées au programmeur. Le programmeur a uniquement accès aux appels de fonctions et aux paramètres associés, et non au contenu de la pile elle-même. Cependant, pour faciliter le débogage, le programmeur peut obtenir une représentation de la pile d’exécution appelée la trace d'appels. D’autre part, la plupart des langages d'assemblage requièrent des programmeurs une connaissance et une manipulation complexe de la pile d’exécution. Les détails de la structure et du contenu de la pile d’exécution dans un langage de programmation dépendent du compilateur, du système d'exploitation et du jeu d'instructions de l’ordinateur.

