Um stack pointer é um pequeno register que armazena o endereço do último pedido de programa em uma pilha. Uma pilha é um buffer especializado que armazena dados de cima para baixo. À medida que novos pedidos chegam, eles "empurram para baixo" os mais antigos. A requisição mais recente sempre reside no topo da pilha, e o programa sempre recebe requisições do topo.
Uma pilha (também chamada de pilha pushdown) opera em um sentido de última entrada/primeira saída. Quando um novo item de dados é inserido ou "empurrado" para o topo de uma pilha, o ponteiro da pilha aumenta para o próximo endereço de memória física, e o novo item é copiado para esse endereço. Quando um item de dados é "puxado" ou "popped" do topo de uma pilha, o item é copiado do endereço do ponteiro da pilha, e o ponteiro da pilha decresce para o próximo item disponível no topo da pilha.