Codice oggetto

In informatica, il codice oggetto (o file oggetto) è la traduzione del codice sorgente in linguaggio macchina (binario), comprensibile solo all'elaboratore. Il codice oggetto è generato automaticamente da un apposito programma detto compilatore; viene poi passato ad un linker che genera un codice eseguibile. Questi due passi sono a volte fusi in uno solo, detto generalmente di compilazione

Descrizione[modifica | modifica wikitesto]

Schema di funzionamento di un compilatore
Lo stesso argomento in dettaglio: Codice sorgente, Compilazione e Linker.

Mentre il programma sorgente corrisponde, volendo fare un paragone, al progetto di una casa, il programma oggetto corrisponde alla casa in sé, che viene utilizzata. Il file oggetto è quindi, agli occhi dell'utilizzatore, il programma che gira sul computer. I contenuti del codice oggetto sono specifici sia a seconda del tipo di computer utilizzato, sia a seconda del compilatore o linguaggio utilizzato per generarlo. In linea generale codici oggetto per computer differenti non possono essere scambiati, né è possibile mescolare codici oggetto generati da compilatori diversi (esistono molte eccezioni a quest'ultima regola).

I codici oggetto si trovano normalmente raggruppati in file oggetto che contengono una serie di funzioni strettamente imparentate tra di loro, ad esempio una serie di operazioni matematiche. Ciò permette di avere un numero maneggevole di file oggetto, tra i quali l'utente sceglierà un insieme limitato per il suo programma. Tali file oggetto vengono spesso chiamati librerie, di cui esistono diversi tipi.

Il codice oggetto è composto normalmente da codice eseguibile, più una serie di informazioni che permettono al linker di unirlo, se richiesto, con altri codici oggetto per generare un programma funzionante. Queste informazioni sono per la maggior parte inserite nella decorazione delle funzioni presenti nel codice oggetto.

Chi ha soltanto il file oggetto può utilizzarlo ma, generalmente, non è in grado di risalire al codice sorgente che lo ha generato (software proprietario) se questo non è liberamente distribuito dallo sviluppatore (software libero). In generale l'analisi del codice oggetto per risalire alle sue funzioni (nel caso queste non siano note) è, se non impossibile, perlomeno molto difficile ed è un ramo del reverse engineering.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica