|
 |
Struttura dell'Header dei Files EXE |
SCHEDA n° 01 [
4
di 4] |
 |
|
Descrizione dell'Header - Area Riservata |
|
 | Dall'offset 001C
inizia la seconda parte dell'Header, un'area di dimensioni variabili
utilizzata per gestire gli eventuali overlay;
subito dopo vengono scritte le voci della Tabella di Rilocazione. |
 | Nei nostri esempi, avendo dedotto che la
Tabella di locazione comincia all'offset 001E
(valore contenuto nella locazione 0018)
le locazioni dell'Area Riservata sono 2:
 | offset 001C,
byte,
01
(DB
01H)
01
(DB
01H), Buffer
Il valore 01H è un dato non
documentato immesso dai compilatori Microsoft, come MASM,
al fine di documentare la versione della struttura Header del file EXE |
 | offset 001D,
byte,
00
(DB
00H)
00
(DB
00H), ?????
non documentato.
|
|
 |
|
Descrizione dell'Header - Tabella di rilocazione |
|
 | Lo scopo della Tabella
di Rilocazione è stato ribadito in più occasioni: fino al
momento dell'effettivo caricamento non è possibile conoscere il valore del
segmento in cui verrà allocato il programma EXE. |
 | Per questa ragione il
linker
è costretto a lasciare a 0000H tutti i
riferimenti a segmento, come se il programma dovesse essere caricato
all'inizio della memoria, nelle prime locazioni RAM. |
 | La raccolta di Informazioni
di Controllo, descritta nella pagina precedente, contiene
sempre sia la locazione d'inizio della Tabella (all'offset 0018,
StartOfRelocationTable)
che il numero delle sue voci (all'offset 0006,
RelocationRecords). |
 | Il modo migliore per rappresentare ciascuna
voce (record) della
Tabella
di Rilocazione (4 bytes) è quello di creare una struttura:
VoceTab
STRUC
OffsetVoce DW ???? ;
esempio 0012
SegmentVoce DW ???? ;
esempio 0000
VoceTab
ENDS |
dove
SegmentVoce indica
il paragrafo (16 bytes) del modulo caricabile e
OffsetVoce lo
spiazzamento relativo a quel paragrafo. |
 | Ogni voce rappresenta il
puntatore (SegmentVoce:OffsetVoce)
a un oggetto (indirizzo entry-point
o variabile) del programma (modulo
caricabile) che contiene riferimento ad un segmento da rilocare. |
 | Il loader del Dos provvederà alla rilocazione
sommando a SegmentVoce
il valore del segmento nel quale si
accinge a caricare il programma, lasciando inalterato OffsetVoce. |
|
Scheda n° 01 |
|
|
Struttura
dell'Header dei Files EXE
|
|
 |
 |
 |
|
Scheda n° 01 -
4
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|