Questa è una pratica abituale sui sistemi Unix perché semplifica i compilatori. La compilazione non dipende in larga misura dai dettagli grintosi del codice macchina e molti compilatori possono essere indirizzati allo stesso assemblatore.
Alcuni compilatori hanno come target una macchina astratta intermedia (come JVM) o persino una macchina intermedia per il calcestruzzo (MIPS) che non è l'hardware effettivo su cui il codice verrà mai eseguito.
Alcuni compilatori vanno direttamente al codice macchina. Non è molto portabile e la portabilità è una grande cosa ora (non era solito tornare indietro nell'età della pietra dell'informatica).