:: Organização de Computadores II ::






Endereçamento de Pilha

Já observamos que é altamente desejável ter instruções tão curtas quanto possíveis para economizar memória e tempo de CPU. O máximo em redução de comprimento de endereço seria ter instruções com absolutamente nenhum endereço, apenas códigos de operação. Esta situação, bastante surpreendente, é possível. É conseguida organizando a máquina em torno de uma estrutura de dados denominada pilha.
Uma pilha consiste em itens de dados (palavras, caracteres, bits) armazenados em ordem consecutiva na memória. O primeiro item colocado na pilha é denominado fundo da pilha. Associado a cada pilha há um registrador ou palavra de memória que contém o endereço do topo da pilha. É denominado apontador da pilha.
A figura 1 ilustra a operação de uma pilha. Na figura 1 (a) dois items já se encontram na pilha. O fundo da pilha localiza-se na posição 1000 da memória e o topo da pilha localiza-se na posição 1001; isto significa que ele “aponta” para o topo da pilha. Na figura 1 (b), 6 foi colocado na pilha e o apontador da pilha indica 1002 como o novo topo da pilha. Na figura 1 (c), 75 foi colocado na pilha e o apontador da pilha aumentado para 1003 Na figura 1 (d), 75 foi retirado da pilha.
Os computadores orientados para pilha possuem uma instrução para inserir o conteúdo de uma posição de memória ou de um registrador na pilha. Tal instrução deve tanto incrementar o apontador de pilha quanto copiar o item. Similarmente, uma instrução que copia o conteúdo do topo da pilha para um registrador ou posição de memória deve fazer a nova copia para o lugar escolhido e decrementar o apontador da pilha. Alguns computadores têm suas pilhas de cima para baixo, com os novos itens sendo inseridos consecutivamente em posições de memória de menor valor em vez de consecutivamente em posições de endereços superiores, como na figura 1.
As instruções sem endereços são utilizadas conjuntamente com uma pilha. Esta forma de endereçamento especifica que os dois operandos devem ser retirados da pilha, um após o outro, a operação executada (por exemplo, multiplicação ou AND) e o resultado recolocado na pilha. A figura 2 (a) mostra uma pilha que contem quatro itens. Uma instrução de multiplicação retira o 5 e o 6 da pilha, faz o apontador de pilha apontar temporariamente para 1001 e então recoloca o resultado, 30, de volta, como mostra a figura 2 (b). Se uma adição for depois executada,o resultado será como mostra a figura 2 (c).

Figura 5.26
Figura 5.27

Voltar