Questão de Arquitetura de Computadores — Registradores — IF-MG 2024
Arquitetura de Computadores›Registradores
Código
qg240306
Banca
IF-MG
Órgão
IF-MG
Ano
2024
Nível
Superior
Cargo
Professor EBTT – Eletrônica - Formiga
No contexto de microcontroladores como o ATmega328, qual das seguintes afirmações descreve corretamente a função do Stack Pointer ?
AO Stack Pointer armazena o endereço da próxima instrução a ser executada pelo microcontrolador.
BO Stack Pointer aponta para o topo da pilha, que é usada para armazenar endereços de retorno e variáveis locais durante chamadas de função e interrupções.
CO Stack Pointer é utilizado para armazenar o endereço da memória Flash onde o código do programa está armazenado.
DO Stack Pointer armazena o valor atual do contador de programa.
EO Stack Pointer é responsável por armazenar o endereço de todas as variáveis globais do programa.
Revelar gabarito e comentário▾
GabaritoB — O Stack Pointer aponta para o topo da pilha, que é usada para armazenar endereços de retorno e variáveis locais durante chamadas de função e interrupções.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Stack Pointer (Apontador de Pilha) em microcontroladores
Gabarito: letra B. O Stack Pointer (SP) aponta para o topo da pilha, estrutura usada para armazenar endereços de retorno e variáveis locais durante chamadas de função e interrupções. As demais alternativas confundem o SP com outros registradores (Program Counter, por exemplo).
O Stack Pointer (SP) é um registrador presente na CPU que armazena o endereço do topo da pilha (stack). A pilha é uma área de memória (geralmente RAM) que segue o princípio LIFO (Last In, First Out) e é utilizada para:
Armazenar endereços de retorno quando uma sub-rotina ou interrupção é chamada;
Salvar variáveis locais e contexto durante a execução de funções.
No ATmega328, o SP é inicializado com um valor (geralmente no final da RAM) e é manipulado automaticamente pelas instruções de chamada (CALL, RCALL) e retorno (RET, RETI), bem como por instruções de pilha (PUSH, POP).
Stack Pointer (SP)
1Função
Aponta para o topo da pilha (RAM)
Estrutura LIFO
2Usos
Endereços de retorno (CALL/INT)
Variáveis locais e contexto
3Instruções que o manipulam
PUSH / POP
CALL / RCALL
RET / RETI
4Confusões comuns
Program Counter (PC)
Próxima instrução (Flash)
Não é o SP
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que o Stack Pointer armazena o endereço da próxima instrução a ser executada. Isso é função do Program Counter (PC), também chamado de Instruction Pointer. O PC contém o endereço da memória de programa (Flash) da próxima instrução a ser buscada e executada.
Alternativa B — ✅ Correta ⟵ GABARITO
Descreve exatamente a função do Stack Pointer: apontar para o topo da pilha, que armazena endereços de retorno e variáveis locais durante chamadas de função e interrupções. Essa é a definição clássica e correta.
Alternativa C — ❌ Incorreta
Diz que o Stack Pointer armazena o endereço da memória Flash onde o código está. Isso é feito pelo Program Counter (PC). A memória Flash contém o programa, e o PC aponta para a instrução atual/ próxima. O SP não tem relação com endereçamento de código.
Alternativa D — ❌ Incorreta
Afirma que o Stack Pointer armazena o valor atual do contador de programa. Novamente, quem armazena o PC é o próprio registrador PC. O SP é independente e não guarda o PC (exceto quando o PC é empilhado durante uma chamada, mas o SP apenas aponta para onde o PC foi salvo na pilha).
Alternativa E — ❌ Incorreta
Diz que o Stack Pointer armazena o endereço de todas as variáveis globais do programa. Variáveis globais ficam em posições fixas da RAM (ou registradores), e não são gerenciadas pela pilha. O SP gerencia apenas variáveis locais dinâmicas e o contexto de chamada.
NÃO CAIA NESSA!
Para não confundir, lembre-se:
PC (Program Counter): guarda o endereço da próxima instrução.
SP (Stack Pointer): aponta para o topo da pilha (usada em chamadas e interrupções).
IR (Instruction Register): armazena a instrução sendo executada.