Fundamentos das linguagens de programação e compiladores
Gabarito: letra C. A única alternativa correta descreve adequadamente a memória cache como uma memória rápida e de pequeno porte posicionada próxima à CPU, otimizando o desempenho do processador. As demais alternativas contêm erros conceituais.
Alternativa A — ❌ Incorreta
Afirma que o desafio da tradução é minimizar o número de variáveis mapeadas em registradores. Na verdade, o objetivo da alocação de registradores é maximizar o uso desses registradores (mais rápidos que a memória principal). A afirmação inverte o conceito correto.
Alternativa B — ❌ Incorreta
Apresenta dois erros: (1) o acesso a registradores é mais rápido que o acesso à memória, e não o contrário; (2) variáveis não são armazenadas em ROM (memória somente leitura), e sim em RAM. A hierarquia de memória é mal compreendida.
Alternativa C — ✅ Correta ⟵ GABARITO
Descreve corretamente a memória cache: memória de alta velocidade, menor e mais cara, posicionada próxima à CPU, com divisão em níveis para otimizar a busca. Conceito fundamental em arquitetura de computadores e relevante para compiladores.
Alternativa D — ❌ Incorreta
Em um laço while (i < 10), a condição de saída é i >= 10. A instrução de desvio correta em assembly seria "desvie se i >= 10". A alternativa propõe "desvie se i > 10", ignorando o caso i == 10, alterando a semântica do laço.
Alternativa E — ❌ Incorreta
Afirma que em situações particulares os blocos then e else podem ser executados consecutivamente. Isso é falso: o comando if-then-else é mutuamente exclusivo – apenas um dos blocos é executado. A afirmação contradiz o funcionamento básico de condicionais.
Gabarito: letra C – única alternativa correta.