Les appels entre fonction sont supportés au niveau du processeur par l'utilisation de la pile (ou "stack"), une structure de donnée supportant les instructions "push" et "pop". C'est une structure "LIFO" (last in, first out): le dernier élément placé sur la pile (push) est le premier élément qu'on peut en retirer (pop).
Lorsque le processeur exécute du code, l'un de ses registres (EIP sur les processeurs X86 et X86_64) contient toujours l'adresse de l'instruction courante. Lorsque le code exécuté appelle une fonction, c'est généralement équivalent à appeler une instruction JMP pour "jump" vers une nouvelle adresse: