Estava vendo um vídeo de exercícios e notei que em uma das questões perguntava qual tradutor convertia de código-fonte para código objeto. Entre as opções tinha:
a) Interpretador
b) Depurador
c) Loader
d) Linker
e) Compilador
Letra A) Sei que a interpretação é um processo completamente diferente e que “leva cada instrução direto para máquina”…
letra B) Depurador. Está ai só para atrapalhar porque não tem relação alguma…
Letra C) Loader é responsável por alocar o código executável na memória do computador. Não chega ser uma tradução…
Letra D) Linker gera o próprio .exe, .elf etc (de código objeto para código executável)…
Letra E) Por último, a compilação. Aqui fica minha dúvida. Compilar significa:
1) Traduzir de código-fonte para código de objeto (quase que um executável. Linguagem intermediária entre fonte e binário (mais baixo nível)) ou
2) Traduzir de código-fonte para código de montagem (instruções assembly, linguagem de baixo), que mais tarde será montado por um assembler e assim gerar o código de objeto ou
3) Existe compiladores que fazem os dois: consegue gerar tanto o código de objeto como código de montagem a partir do código-fonte?
Aprendi que ele gera o código de montagem, mas há muito material por ai que menciona o fato dele geral um código objeto.
Em minha inocência do assunto, prefiro agarrar a terceira opção.