Arquivo objeto
Execução de Programa |
---|
Conceitos gerais |
Tipos de código |
Estratégia de compilação |
|
Runtimes notáveis |
|
Compiladores notáveis e toolchain |
|
Em programação de computadores, arquivo objeto é o código resultante da compilação do código fonte. Normalmente, o código fonte é formado por uma sequência de instruções no formato especificado por alguma linguagem de programação. Para cada arquivo de código fonte é gerado um arquivo com código objeto, que posteriormente é "ligado" aos outros, através de um linker, resultando num arquivo executável ou biblioteca.[1]
Um arquivo objeto não só contém código objeto, mas também informações sobre alocação de memória, os símbolos do programa (como nomes de variáveis e de funções) e também informações sobre debug.
Há vários formatos de arquivo objeto; originalmente, cada tipo de computador tinha seu próprio formato, mas com o advento de sistemas operacionais portáveis (como por exemplo o Unix) alguns formatos, como o COFF e o ELF, foram padronizados e utilizados em diferentes sistemas. É comum o mesmo formato de arquivo objeto servir tanto como entrada quanto para saída do linker, sendo portanto utilizado no arquivo executável ou biblioteca gerado.
O formato dos arquivos objetos é parte importante no projeto de um sistema operacional: ele afeta o tempo que os programas levam para serem ligados e assim afeta o tempo de desenvolvimento dos sistemas. Além disso, se o formato também é utilizado para os arquivos executáveis, ele influi no tempo que o programa leva para começar a executar, afetando assim a responsividade do programa para o usuário final. A maioria dos formatos é estruturada na forma de blocos todos do mesmo tipo, podendo ser mapeados conforme necessário pelo sistema de memória virtual do sistema operacional, sem necessidade de mais processamento antes de serem utilizados.
O tipo mais simples de código objeto é o COM do DOS, que é apenas um arquivo com bytes sempre carregados na mesma posição da memória. Outros formatos contém várias estruturas e sub-estruturas cuja especificação abrange várias páginas.
Referências
[editar | editar código-fonte]- ↑ «Arquivo objeto» (em inglês). BabelNet. Consultado em 12 de agosto de 2020