Execução de um Programa
Todos os programas passam por quatro etapas de transformação desde o código-fonte armazenado no computador até a etapa que este código será executado na máquina. A Figura 1 abaixo mostra essas etapas de tradução, alguns sistemas combinam essas etapas, porém essas são consideradas as quatro etapas lógicas pelas quais os programas passam.
Basicamente o processo de tradução e execução de uma linguagem de alto nível começa com um programa em linguagem de alto nível sendo compilado para um programa em assembly, e após essa operação ele é montado, através de um montador, em um módulo objeto em linguagem de máquina. O próximo processo fica por conta do link-editor que combina vários módulos com as rotinas de biblioteca para resolver todas as referências. Para finalizar, o Loader é encarregado de colocar o código de máquina nos locais apropriados da memória, para ser executado pelo processador. Vale salientar que em alguns sistemas pode acontecer de algumas etapas serem puladas ou combinadas para agilizar o processo. Por exemplo, alguns compiladores poderiam produzir o módulo objeto diretamente ou loaders poderiam ser utilizados juntos com o link-editor. Para a identificação correta dos arquivos, o Linux e Unix utilizam os sufixos “.java” para arquivos em Java, “.s” para os arquivos em assembly, “.o” para os arquivos objetos, “.so” para rotinas de bibliotecas link-editadas estaticamente e “.out” para os arquivos executáveis. Já os sistemas Windows utilizam os sufixos “.java” para arquivos em Java, “.asm” para os arquivos em assembly, “.obj” para os arquivos objetos, “.lib” e “.dll” para rotinas de bibliotecas link-editadas estaticamente e “.exe” para os arquivos executáveis.
No restante do artigo verificaremos cada uma dessas etapas e posteriormente finalizaremos o assunto em outro artigo mostrando como o Java entra nesse processo, no entanto primeiramente precisaremos entender como funcionam as etapas básicas no