Introduction à la programmation en assembleur (processeurs 64 bits de la famille 80x86)
Utilisation de la pile
Définition

Le CPU possède un registre spécial nommé %RSP (pour Re-extended Stack Pointer, soit pointeur de pile étendu).

La pile est un tableau de cases mémoires contiguës. %rsp pointe en permanence sur le sommet de la pile, c'est à dire le dernier élément empilé.

L'empilement d'une valeur (64 bits) se fait par l'instruction pushq et le dépilement par l'instruction popq .

Explication

En fait, « push opérande » commence par décrémenter %rsp et remplace le contenu de la case pointée par %rsp par « opérande ». « pop opérande » copie la valeur pointée par %rsp dans « opérande » puis incrémente %rsp. L'incrémentation et la décrémentation se fait par groupe de 8 octets, soit 64 bits. L'utilisation de la pile va se révéler très utile, par exemple pour simuler l'utilisation de « variables locales » ou de paramètres de procédures.

D'autre part, nous verrons qu'il est possible d'accéder directement à des éléments de la pile sans passer par les instructions push et pop.

Remarque

Si le processeur fonctionne en mode 32 bits (systèmes d'exploitation 32 bits), la pile est pointée par %esp, et les valeurs sont empilées (pushl) ou dépilées (popl) par groupes de 4 octets. Si le processeur fonctionne en mode 16 bits (systèmes d'exploitation 16 bits), la pile est pointée par %sp, et les valeurs sont empilées (pushw) ou dépilées (popw) par groupes de 2 octets.