Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

  1. Entender o funcionamento da Pilha(Stack)
  2. SP - Movimentação circular

A Stack(Pilha) do 68K utiliza a memória principal tendo o seu topo predefinido no vetor de interrupção vetor #0 que obrigatóriamente deve ser configurado.

O registrador SP(A7) é responsável por armazenar o endereço/ponteiro do topo da pilha, e através do SP as instruções podem armazenar e recuperar dados da pilha.

Não há instruções PUSH e PULL/POP como nos processadores 6502 e 8080/8086. As instruções de movimentação (MOVE e etc) de dados são responsáveis para mover e recuperar dados da pilha.

No 68K é possível alocarmos espaço na pilha para uso local de variáveis por meio de stackframe. Ao fim do uso, esse stackframe é destruído liberando assim o espaço alocado.

O incremento e decremento do registrador SP é feito com base no tamanho do dado que é salvo na Stack: Byte, Word e Longword. Esse tamanho deve ser levado em consideração para que não haja erros na recuperação de dados o que pode acarretar em erros graves no software.

O registrador SP pode ser decrementado e incrementado manualmente pelo usuário ou automaticamente via instruções.

Tab. 1: Movimentando Byte
Pilha Empilhar Desempilhar

RAM
$FFFFFF SP-1
SP+1
...
...
$000000

No exemplo da tabela acima, utilizamos a pilha em sua forma mais simples com o tipo de dado byte. O top da pilha foi configurado como 0xFFFFFF.

Os valores contidos não são "limpos" após a recuperação. O registrador SP é incrementado, de acordo o tamanho do dado, para informar que o espaço anteriormente utilizado está disponível para uso.

O 68K fornece as instruções PEA, LINK e UNLINK, MOVE e MOVEM para salvar e recuperar dados na pilha. Essas instruções serão vistas mais adiante em Instruções: Pilha.

  1. 05/09/2024 - Revisão 1 - Correção de erros gramaticais
  2. 01/04/2024 - versão inicial