Sezione |
Indirizzi Base
Registri Interni
|
Capitolo 2 |
Gli strumenti di Lavoro |
LINKER 7/10 [43 di 87] |
|
|
Il file EXE è il prodotto del Linker e contiene dentro di sé tutte le informazioni necessarie al loader del Dos per allocare il programma in memoria e al processore per eseguirlo. | |
Dunque, nonostante l'apparenza, non si tratta di un file già pronto all'esecuzione; il sistema operativo deve intervenire per caricare (rilocare) le sue parti componenti (segmenti) nella giusta posizione in memoria Ram, anche in funzione delle reali disponibilità di questa risorsa. | |
Si tratta di un compito molto impegnativo e complesso (per fortuna a noi completamente trasparente) svolto con l'indispensabile aiuto dei bytes dell'intestazione (header) predisposta dal Linker davanti all'effettivo codice macchina (modulo caricabile) del programma. |
|
Data la rilevanza di questa struttura è stata predisposta una scheda che ne svela tutti i segreti! |
|
L'intestazione occupa almeno 512 bytes del programma EXE ed è costituita da 2 parti: nella prima (Informazioni di controllo) sono fornite indicazioni utili per la messa a punto del programma (come i valori da mettere nei registri del processore) mentre nella seconda (Tabella di Rilocazione) ci sono i puntatori alle variabili e agli indirizzi importanti del programma, che devono essere adattati alla effettiva posizione in ram. | |||||||||
Esistono numerose utility in grado di mettere in chiaro i bytes di ques'area, come ExeMod e ExeHdr (usate nella citata scheda). | |||||||||
Per levarci la curiosità di vedere il valore
dei 782
bytes di Prova.EXE e dei 793
bytes di Prova1.EXE abbiamo utilizzato
il programma DiskEdit:
NOTA:
il programma DiskEdit è una
tipica applicazione Dos e non può
essere eseguito nell'ambiente multitasking di Windows; per questo bisogna
chiudere sessione riavviando il
sistema in modalità DOS.
| |||||||||
Vediamo di analizzare i bytes rilevati da DiskEdit;
per
evitare inutile spreco di spazio il resoconto mostra i 782
bytes di Prova.EXE e i 793
bytes di Prova1.EXE senza i 736 bytes
centrali, tutti di valore 00H:
|
|
Dunque: rispettivamente solo 14 e 26 bytes (su 782 e 793) sono codice macchina, per altro gli unici presenti nell'eventuale versione COM, ottenuta per intercessione di Exe2Bin. |
|
Capitolo 2 | LINKER 7/10 | |||||||
43 di 87 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|