Perché vogliamo che i nostri computer facciano di più che eseguire solo un programma fisso. 
 Avere un flusso di opcode in memoria e passarci all'infinito va bene se si ha una macchina monouso. Ma su un computer reale, vuoi ottenere cose come 
-  avere una chiamata binaria un'altra e trasferire il controllo ad essa 
 
-  avere una chiamata binaria e ricontrollare il controllo dopo la sua chiusura 
 
-  multi-task tra molti programmi e farlo apparire come se fossero in esecuzione simultaneamente 
 
-  assegnare a un programma i diritti di monitoraggio o amministrazione su un altro programma per limitare le cose che l'altro programma può eseguire 
 
-  e molto, molto di più! 
 
 Per tutto questo, è necessario un software eseguibile che consideri altri software eseguibili come i suoi dati di input, il che significa che devi essere in grado di esprimere cose come "questo codice possiede quell'indirizzo di memoria" o "quei due processi sono veramente istanze dello stesso programma e possono condividere il loro segmento di dati statici ". 
 Un sacco di byte in un file binario  è , infatti, una stringa di codice macchina, ma tutto il resto deve essere memorizzato in qualche modo, e un formato di file binario è solo una specifica dicendo come farlo.