A FUNDAMENTAÇÃO PILHA
Por: Salezio.Francisco • 30/6/2018 • 810 Palavras (4 Páginas) • 384 Visualizações
...
Não é com frequência que acontece de um programa chamar sub-rotinas que estejam enxadas umas nas outras; isto é, uma sub-rotina, seja a sub-rotina SRA, é solicitada. Dentro da sub-rotina SRA torna-se necessário chamar a sub-rotina SRB. Antes da sub-rotina SRB ter sido completada, a sub-rotina SRC dever ser chamada, e assim por diante. Sempre que uma sub-rotina for chamada, devemos guardar oendereço da instrução a que devemos retornar depois da sub-rotina ter sido completada. Graças à sua carcterística de espera (last in-first out = LIFO), uma pilha torna um arranjo ideal para o armazenamento de endereço de retorno quando as sub-rotinas stiverem encaixadas. Como uma última operação antes de deixar o programa principal para sub-rotina SRA, colocamos na pilha o endereço de retorno ADDR(MAIN) do programa principal. Ao deixar a sub-rotina SRA para a sub-rotina SRB, colocamos na pilha o endereço de retorno ADDR(SRA) na sub-rotina SRA, e assim por diante. Daí, os endereços de retorno são colocados na pilha na ordem ADDR(MAIN), ADDR(SRA), ADDR(SRB) etc. O ultimo endereço colocado na pilha é o primeiro endereço requerido quando a ultima sub-rotina estiver concluída, e assim por diante. Portanto, o processo de retornar finalmente ao programa principal é uma questão de retirada da pilha para tornar disponíveis os endereços precisamente na ordem oposta àquela em que eles foram colocados na pilha.
Podemos igualmente achar que, quando uma sub-rotina é chamada, necessitamos poupar não somente o endereço de retorno para o programa principal, mas também os dados no acumulador, o registrador de estados e outros registradores de modo que o programa principal possa continuar depois da sub-rotina ter sido completada. A pilha também é usada eficientemente neste armazenamento temporário de dados.
...