O que é um Stack Register?
Em relação aos computadores, um registro de pilha é um local de memória - geralmente na unidade central de processamento (CPU) ou hardware de processamento relacionado - que contém o endereço atual da parte superior de uma região de memória separada de computador conhecida como pilha. O registro da pilha é importante porque, sem ele, um computador precisaria implementar um método mais lento e propenso a erros para rastrear o fluxo de execução de um programa. Na maioria das arquiteturas de sistema, o registro de pilha é um registro dedicado, portanto, não é acessado acidentalmente ao trabalhar com outros registros de memória. Mais raramente, um registro de pilha pode ser um registro geral que geralmente é acessível por um programa, mas que intencionalmente não é usado porque seu uso é definido pelo fabricante. Quando um sistema de computador contém dois ou mais registros de pilha, o que significa que há potencialmente mais de uma pilha, a arquitetura é conhecida como máquina de pilha.
No nível mais baixo da programação de computadores, uma pilha é uma área de memória - geralmente na RAM (memória de acesso aleatório) - que possui um tipo de comportamento bem definido. A pilha pode ter informações adicionadas a ela em um processo chamado push, ou pode ter informações recuperadas dela, chamadas de popping. O modelo para uma pilha é o primeiro a entrar, o último a sair, o que significa que, se várias informações forem inseridas na pilha, o primeiro elemento inserido será o último a ser exibido, enquanto o último elemento inserido será seja o primeiro a ser recuperado com um comando pop. Um registro de pilha controla o topo da pilha, que é sempre o último item inserido nela.
Quando um programa de computador está sendo executado, cada instrução que está sendo executada possui um endereço de memória específico, onde é armazenada temporariamente durante o programa. Se um programa chama uma sub-rotina - ou um procedimento, função ou método, dependendo da linguagem de programação -, o programa deve pular para o endereço de memória do código da sub-rotina para executá-lo. O endereço em que o fluxo de controle do programa é interrompido para ramificar para a sub-rotina é empurrado para a pilha para que seja lembrado. Quando a subrotina concluir a execução, o programa saberá para onde deve retornar no código principal, exibindo o endereço do código na parte superior da pilha, para onde o registro da pilha está apontando.
Embora existam outros métodos que podem ser usados para obter os mesmos resultados, o uso de um registro de pilha e pilha permite um importante conceito de programação conhecido como recursão. Uma função recursiva é uma função que, dentro de seu próprio código, se chama. Esse processo geralmente é usado na ordenação de algoritmos e para certas funções matemáticas. O registro da pilha está acompanhando todos os últimos endereços nos quais a execução está ramificando, para que uma função possa implementar com segurança a recursão com o conhecimento de que, eventualmente, o controle retornará ao ponto de origem. Uma complicação ocorre se a pilha inteira ficar cheia e não houver espaço na memória; nesse caso, ocorre um estouro de pilha, interrompendo a execução do programa.