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.