A FUNDAMENTAÇÃO PILHA
Por: Diogo Araujo • 5/4/2017 • Artigo • 811 Palavras (4 Páginas) • 285 Visualizações
FUNDAMENTAÇÃO PILHA
Ao ter acesso à informação armazenada na memória já notamos que, quando possível, é útil ter um entendimento a respeito do endereço da próxima palavra a ser escrita ou lida. Assim, achamos muito útil armazenar instruções sucessivas nos sucessivos locais da memória, o que significava que tínhamos que tratar do endereço da próxima instrução apenas infrequentemente. Exceto quando forem encontradas instruções de salto (jump), a provisão do endereço da próxima instrução requer somente que um cotador, o contador de programa, seja incrementado.
De maneira idêntica, é mui útil (quando for viável fazê-lo) armazenar dados numa facilidade da memória de tal maneira que novos endereços possam ter estabelecidos simplesmente incrementando (ou decrementando) um contador. Tal facilidade de memória é chamada pilha. A escrita de uma palavra numa pilha é chamada colocação (pushing) e a leitura de uma palavra é chamada extração ou retirada (popping).
Qualquer conjunto de registradores pode ser usado como uma pilha. Usualmente, no entanto, a facilidade de armazenamento usada para implementar uma pilha é uma seção reservada de uma RAM. Na programação, queremos ser capazes de lembrar qual seção da RAM está sendo reservada para a pilha de memória. Por conseguinte, admitimos uma memória de capacidade de N palavras com endereços dos locais estendendo-se de 0 a N-1, e reservamos para a pilha o final da memória com endereços N-1, N-2 etc. O registrador do contador que é incrementado ou decrementado para ir de um local de pilha para o seguinte é chamado apontador ou indicador de pilha (SP). A terminologia é apropriada, já que o apontador de pilha guarda o endereço de, isto é, aponta para o local da pilha a que tem acesso para leitura ou escrita.
A ordem em que os dados são colocados na pilha é, primeiro, dados A no local N-1, depois dados B no local N-2 etc. A pilha é mostrada na figura X, depois de quatro palavras de dados A,B,C e D terem sido colocadas nela. Na leitura, isto é, extração ou retirada, primeiro extraímos D, depois C etc. Um modo pelo qual podemos implementar o processo de clocação de uma palavra pilha é o seguinte:
1. Escrever a palavra no local da memória especificado pelo indicador de pilha
2. Depois decrementar o indicador de pilha.
Tendo colocado uma palavra na pilha, suponhamos que queremos extrair esta mesma palavra. O procedimento é como se segue:
1. Incrementar o apontador de pilha.
2. Em seguida, ler a palavra do local da memória especificado pelo apontador de pilha.
[pic 1]
Acrescentamos agora um apontador de pilha, mas para acrescentar tal facilidade de pilha, é necessário acrescentar ao repertório de instruções o que o controlador do sistema é capaz de executar. Deve haver uma instrução que carregará no apontador de pilha o endereço que nos propomos a iniciar a pilha. Deve haver uma instrução que carregue o endereço do apontador de pilha no registrador de endereços da memória. Deve haver uma instrução que colocará, isto é, incrementará SP e escreverá na memória, e também uma instrução que retirará, isto é, decrementará SP e lerá da memória. Alguns computadores têm instruções que efetuarão inúmeras operações de colocar ou retirar, em sequência, todas em resposta a esta única instrução.
...