Gabarito D
Montador:
Os montadores, ou “assemblers”, montam um programa em linguagem de máquina a partir de sua versão em linguagem de montagem, ou linguagem “assembly”. Eles:
1. Acham um endereço inicial para o programa
2. Convertem pseudo-instruções para o conjunto de instruções equivalente
3. Convertem macros no conjunto de instruções e dados equivalentes
4. Transformam cada parte dos comandos em linguagem assembly em opcode, número de registrador, constante, etc.
5. Escrevem o programa em linguagem de máquina em um arquivo com as instruções ordenadas e com os endereços indicados por elas, especificados como labels, já convertidos para números quando possível
Ligador:
Ligadores, ou “linkers”, são programas especiais que recebem como entrada os arquivos objeto correspondentes a estes arquivos e geram como saída o programa final em linguagem de máquina.
Um linker realiza, então, quatro tarefas básicas:
1. Determina as posições de memória para os trechos de código de cada módulo que compõe o programa sendo “linkado”
2. Resolve as referências entre os arquivos
3. Procura nas bibliotecas (libraries), indicadas pelo programador, as rotinas usadas nos fontes de cada módulo
4. Indica ao programador quais são os labels que não foram resolvidos (não tenham correspondente em nenhum módulo ou library indicados)
Compilador:
Compiladores são programas que recebem como entrada arquivos texto contendo módulos escritos em linguagem de alto nível e geram como saída arquivos objeto correspondentes a cada módulo, ou, se todas as bibliotecas e módulos são apresentados como entrada, geram um programa executável diretamente.
Interpretador:
Programas interpretadores recebem como entrada arquivos texto contendo programas em linguagem assembly ou linguagem de alto nível, ou arquivos binários com instruções de máquina, e os executam diretamente.
Interpretadores percorrem os programas, a partir de seu ponto de entrada, executando cada comando.
Algumas vezes, antes de poderem ser interpretados, os programas têm que ser pré-processados. No caso de Java, por exemplo, o programa fonte é transformado em byte-code, em um processo equivalente ao processo de compilação, e posteriormente pode ser interpretado (executado) por uma máquina virtual Java.
Na verdade, os processadores são interpretadores implementados em hardware!
"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !