Questão de Arquitetura de Computadores — Compilador — FCC 2023
Arquitetura de Computadores›Compilador
Código
fc068629
Banca
FCC
Órgão
Copergás - PE
Ano
2023
Nível
Superior
Cargo
Analista Sistemas
As principais tarefas dos compiladores podem ser definidas como:I. O código fonte, em linguagem de alto nível, é analisado e buscam-se erros de sintaxe; macros ou definições são substituídos e processados.II. O código fonte é transformado em um código muito próximo ao código de máquina, que utiliza mnemônicos.III. O código gerado em II passa por um conversor para se tornar um código binário feito exclusivamente para o sistema no qual encontra-se o código sendo compilado.IV. As bibliotecas, já compiladas, são adicionadas ao código binário, permitindo a criação de um arquivo binário executável.Os itens I, II, III e IV correspondem, correta e respectivamente a:
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”.
Compilador: Fases do Processo de Compilação
Gabarito: letra B. As quatro etapas descritas nos itens I a IV correspondem, respectivamente, a pré-processamento, compilação, montagem (assembler) e linkedição (linker), conforme a ordem clássica do processo de compilação de linguagens como C/C++. A banca testa o conhecimento da sequência e dos nomes corretos de cada fase, sendo comum a tentativa de confundir com termos como bytecode, interpretação ou análise sintática.
A descrição de cada item:
I: "código fonte analisado, busca de erros de sintaxe, substituição de macros e definições" → isso abrange o pré-processamento, que trata diretivas como #include e #define. Embora a análise sintática também ocorra, a ênfase em substituição de macros é típica do pré-processador.
II: "transformado em código muito próximo ao código de máquina, que utiliza mnemônicos" → é a compilação propriamente dita, que gera código assembly (simbólico).
III: "passa por um conversor para se tornar código binário exclusivo do sistema" → montagem (assembler), que traduz assembly para código de máquina (binário).
IV: "bibliotecas já compiladas são adicionadas ao código binário, criando executável" → linkedição (linker), que resolve referências externas e gera o arquivo executável.
Etapa
Descrição no Enunciado
Fase do Processo de Compilação
I
Código fonte analisado, busca de erros de sintaxe; substituição de macros e definições.
Pré-processamento
II
Transformação em código próximo ao de máquina, que utiliza mnemônicos.
Compilação
III
Conversão do código gerado em II para código binário exclusivo do sistema.
Montagem (Assembler)
IV
Adição de bibliotecas já compiladas ao código binário, gerando executável.
Linkedição (Linker)
1Pré-processamentoI
2CompilaçãoII
3Montagem (Assembler)III
4Linkedição (Linker)IV
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Apresenta "Análise sintática" para I, mas I envolve pré-processamento (substituição de macros), não apenas análise sintática. Além disso, II é "Interpretação (Bytecode)", o que não corresponde à geração de assembly.
Alternativa B — ✅ Correta ⟵ GABARITO
Sequência exata: Pré-processamento → Compilação → Montagem (Assembler) → Linkedição (Linker). Cada termo casa perfeitamente com a descrição dos itens.
Alternativa C — ❌ Incorreta
"Análise semântica" para I é inadequado, pois a análise semântica ocorre após a sintática e não trata de macros. II é "Tradução (Bytecode)", que não se encaixa na geração de assembly.
Alternativa D — ❌ Incorreta
Embora I (Pré-processamento) esteja correto, II é "Interpretação (Bytecode)", o que não corresponde à geração de código com mnemônicos. Além disso, III é "Tradução (Assembly)" — mas a conversão de assembly para binário é montagem, não tradução.
Alternativa E — ❌ Incorreta
I é "Análise sintática" (erro similar à A). III é "Montagem (Bytecode)" — bytecode é um conceito diferente (máquina virtual), e a descrição fala em código binário para o sistema específico, que é o resultado do assembler.
NÃO CAIA NESSA!
A banca tenta confundir as fases com termos como bytecode (usado em Java) e interpretação. Lembre-se: a compilação tradicional gera assembly, não bytecode. O pré-processamento é uma etapa anterior à compilação que lida com macros e inclusões.
PEGA ESSA DICA!
Decore a sequência clássica: Pré-processamento → Compilação → Montagem → Linkedição. Em linguagens como C, o pré-processador é um programa separado, mas integrado ao compilador. O assembler e o linker são ferramentas externas que completam a geração do executável.