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