Sommaire

L’analyse de la pile Analyse:de la pile

L’analyse de la pile (« Stack » en anglais) est indispensable en logiciel embarqué. La pile est une zone de la mémoire vive (ou de registres du microcontrôleur sur de petits micros) qui sert principalement à sauvegarder le contexte lors de l’appel de fonctions ou d’interruptions et qui sert, dans les fonctions, à la sauvegarde temporaire et au stockage de variables locales. Dans le langage machine ou assembleur, cette pile est gérée manuellement par le programmeur. Dans les langages évolués comme le C ou C++, cette pile est gérée automatiquement, mais se pose tout de même la question du calcul de sa taille de manière à gérer et réserver cette ressource critique.

Les compilateurs modernes fournissent parfois une indication sur la taille qu’ils estiment pour cette pile, mais cette taille ne tient pas compte des appels de fonctions dynamiques (par pointeurs) et, comme tout logiciel, ils peuvent également se tromper. Sur les ordinateurs de bureau ou mainframes, la pile d’un programme est allouée dynamiquement et gérée automatiquement jusqu’à épuisement de la mémoire vive. Dans les logiciels embarqués, la pile est allouée (en général) statiquement et une erreur d’allocation peut avoir des conséquences dramatiques.

images/08EP01.png

Collision entre la pile et le reste de la mémoire

Comme ...