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 |
|