Pular para o conteúdo principal

Questão de Arquitetura de Computadores — Compilador — IESES 2017

Arquitetura de ComputadoresCompilador
Código
qq280291
Banca
IESES
Órgão
IGP-SC
Ano
2017
Nível
Superior
Cargo
Perito Criminal em Informática
A descompilação é adotada na engenharia reversa de produtos de software, com o propósito de analisar os códigos-fonte de um sistema para extrair destes a documentação, geralmente ausente ou obsoleta, ou para auxiliar na análise da segurança do sistema, como na checagem de códigos maliciosos embutidos no software. Diante deste contexto, um sistema de descompilação consiste:
  1. AEm traduzir um programa escrito em linguagem de alto nível para uma linguagem de máquina, cujas instruções podem ser executadas por um processador.
  2. BNum processo de analisar sintaticamente um programa para determinar se a estrutura do código de máquina pertence à linguagem alvo do programa de alto nível.
  3. CNum conjunto de programas que, a partir da leitura de um programa escrito em código de máquina, realiza sua montagem em instruções mnemônicas em Assembly.
  4. DNum conjunto de programas que, a partir da leitura de um programa escrito em código de máquina, traduz o mesmo em programa equivalente em uma linguagem de alto nível.
Revelar gabarito e comentário

GabaritoD — Num conjunto de programas que, a partir da leitura de um programa escrito em código de máquina, traduz o mesmo em programa equivalente em uma linguagem de alto nível.

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”.

Descompilação

Gabarito: letra D. A descompilação consiste em traduzir um programa em código de máquina (baixo nível) para um programa equivalente em linguagem de alto nível, conforme a definição clássica de descompilador — o que corresponde exatamente à alternativa D.

A banca testa a distinção entre compilação, montagem/desmontagem e descompilação. O texto de apoio diferencia claramente:

  • Compilador: traduz linguagem de alto nível para baixo nível (código de máquina ou assembly).

  • Montador (assembler): traduz assembly para código de máquina.

  • Desmontador (disassembler): traduz código de máquina para assembly.

  • Descompilador: traduz código de máquina para linguagem de alto nível.

1Compilador
Alto nível → Baixo nível
2Montador (assembler)
Assembly → Código de máquina
3Desmontador (disassembler)
Código de máquina → Assembly
4Descompilador
Código de máquina → Alto nível
Tradução entre níveis
LEVELsoulevel.com.br
Tradução entre níveis: Compilador (Alto nível → Baixo nível); Montador (assembler) (Assembly → Código de máquina); Desmontador (disassembler) (Código de máquina → Assembly); Descompilador (Código de máquina → Alto nível)

Alternativa A — ❌ Incorreta

Descreve o processo de compilação, não de descompilação. A compilação parte de um código fonte em alto nível para gerar código de máquina. Na descompilação a direção é inversa.

Alternativa B — ❌ Incorreta

A análise sintática é uma fase da compilação (ou da descompilação), mas não define o processo completo. Além disso, o texto menciona que a descompilação não se limita a determinar estrutura; ela gera um programa equivalente.

Alternativa C — ❌ Incorreta

Define corretamente o desmontador (disassembler), que traduz código de máquina para assembly (mnemônicos). A descompilação vai além, gerando código em linguagem de alto nível, não apenas assembly.

NÃO CAIA NESSA!

A banca troca o conceito de descompilador pelo de desmontador. O desmontador gera assembly (mnemônicos), enquanto o descompilador gera linguagem de alto nível. Fique atento à direção da tradução.

Alternativa D — ✅ Correta ⟵ GABARITO

Reflete com precisão o conceito de descompilação: a partir do código de máquina, produz-se um programa semanticamente equivalente em uma linguagem de alto nível. É a definição apresentada no material de apoio.

Gabarito: letra D.

Link permanente: /questoes/qq280291