Uno stack pointer è un piccolo registro che memorizza l'indirizzo dell'ultima richiesta di programma in uno stack. Uno stack è un buffer specializzato che memorizza i dati dall'alto verso il basso. Quando arrivano nuove richieste, esse "spingono verso il basso" quelle più vecchie. La richiesta immessa più di recente risiede sempre in cima allo stack e il programma accetta sempre le richieste dall'alto.
Uno stack (chiamato anche stack pushdown) opera in senso last-in / first-out. Quando un nuovo elemento di dati viene immesso o "inserito" nella parte superiore di uno stack, il puntatore dello stack si incrementa al successivo indirizzo di memoria fisica e il nuovo elemento viene copiato in quell'indirizzo. Quando un elemento di dati viene "estratto" o "estratto" dalla cima di uno stack, l'elemento viene copiato dall'indirizzo del puntatore dello stack e il puntatore dello stack decrementa all'elemento disponibile successivo in cima allo stack.