Sezione |
Indirizzi Base
Registri Interni
|
Capitolo 2 |
Gli strumenti di Lavoro |
EX2BIN 5/6 [52 di 87] |
|
|
L'allocazione in memoria di questo eseguibile
è di gran lunga meno impegnativa di
quella
descritta per un programma
EXE; vediamo in dettaglio le fasi di allocazione
di
un COM da parte del loader del
Dos:
|
|
La presenza in memoria di un programma eseguibile produce alla fine il medesimo effetto, indipendentemente dalla sua natura. Di fatto se il compito affidato all'eseguibile è sostanzialmente molto complesso il file non può essere di tipo COM; per contro, se il file EXE è strutturato in modo semplice può (e conviene..) essere trasformato in un file di tipo COM. Con questa premessa vediamo le principali differenze tra le 2 versioni. |
|
I COM usano sempre un solo segmento (64k), mentre gli EXE possono averne più di uno e possono quindi disporre di più memoria (fino a 256k); anche per questo i secondi hanno di norma dimensioni più grandi dei primi. |
|
Gli EXE sono files rilocabili mentre i COM sono assoluti (non rilocabili). |
|
Anche se entrambi usassero un solo segmento i COM sono più COMpatti degli EXE perché sono codice macchina puro (tutti e soli i bytes associati alle istruzioni) e non contengono le informazioni di controllo e la tabella necessarie al Dos per eseguire la rilocazione degli indirizzi di segmento; per questo sono caricati in memoria in modo più veloce. |
|
Se nella cartella abbiamo entrambe le versioni il Sistema Operativo esegue sempre i COM. |
|
Il Dos predispone in entrambi i tipo un Prefisso del Segmento di programma (PSP) e in entrambi obbliga i registri di segmento DS e ES a puntarlo. |
|
NB: negli EXE il registro DS non sta puntando l'effettivo segmento dei dati (nei COM il discorso non ha senso: codice, dati e stack sono tutti nello stesso segmento). |
|
Nei COM è necessario riservare l'area per i PSP con la direttiva ORG 100H, mentre negli EXE questa operazione non è necessaria, dato che il segmento di codice è posto in memoria in una posizione diversa da quella occupata dal segmento dei dati. |
|
Nei COM il codice operativo della prima istruzione è sempre allocato all'indirizzo 0100H nell'unico segmento; negli EXE può invece trovarsi in qualunque punto della memoria. |
|
Capitolo 2 | EX2BIN 5/6 | |||||||
52 di 87 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|