A tradução de um programa escrito em linguagem de alto nível para a linguagem de máquina pode ser realizada de 2 modos:
através de um compilador (Linguagem Compilada) ou
através de um interpretador (Linguagem Interpretada);
Antes de prosseguirmos é importante diferenciarmos o funcionamento de é um interpretador e de um compilador (ou montador).
Um compilador (ou um montador) quando traduz um programa (código fonte) gera um código objeto como resultado da tradução, e assim ele, através do linker, liga todos os módulos gerados e as bibliotecas utilizadas, produzindo então um arquivo executável.
Mais especificamente teríamos:
- Primeiramente, o compilador "lê" todo o código fonte , analisando este semanticamente e sintaticamente, de forma que se algum erro for encontrado, um aviso de erro será dado para cada erro em questão. Se nenhum erro for encontrado o programa poderá ser executado sem maiores problemas. O compilador converte então o código do programa em código objeto (tradução). Para conseguir o arquivo executável final o código objeto é convertido pelo linker (fig.1).
O programa objeto é formado por instruções de máquina de uma determinada família de hardware, resultado da tradução do programa fonte escrito pelo programador, acrescido de mais algumas chamadas a rotinas do sistema operacional. Por isso diz-se que um fonte foi compilado para um determinado sistema operacional.
http://www.deinf.ufma.br/~acmo/grad/lp1/portabty.html