> dans quelles situations utiliser la pile pour les procédures/fonctions ?
en contexte d'examen : il faut suivre les consignes, si le sujet demande d'utiliser la pile, ...
hors contexte d'examen, si c'est dans un contexte mélangeant assembleur
et C (ou d'autres langages) avec gcc, il faut suivre les conventions de
gcc (ou celles du compilateur utilisé) ; j'en ai parlé un peu dans les
derniers cours, les conventions de gcc mélangent une gestion par
registre (pour les premiers paramètres et le résultat, certaines
variables locales ou temporaires, etc.) et une gestion par la pile pour
les autres paramètres/variables.
hors
contexte d'examen et de code mélangeant assembleur et C avec gcc, si
vous êtes maître de l'ensemble du code, et qu'il y a peu de paramètres
ou de variables et des appels imbriqués limités, alors vous pouvez
choisir de travailler avec la pile ou avec des registres, ou avec des
zones de mémoire spécifiques, c'est comme vous voulez, mais c'est assez
limité en fait ; dès qu'il y a de la récursivité, ou un nombre de
variable et d'appels imbriqué important, ou des codes que vous ne
maitrisez pas, vous n'avez plus le choix, il vous faut une gestion de la
mémoire dynamique, et c'est la pile
dans tous les cas, attention à la relation BL / LR, le plus sûr est d'utiliser la pile au moins pour cela, mais ce n'est pas toujours obligatoire/le plus efficace (cas des procédures feuilles, par ex.)
dans tous les cas, attention à la relation BL / LR, le plus sûr est d'utiliser la pile au moins pour cela, mais ce n'est pas toujours obligatoire/le plus efficace (cas des procédures feuilles, par ex.)
Bien à vous,
Denis B.