Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Struttura dell'Header dei Files EXE |
SCHEDA n° 01 [ 4 di 4] |
|
|
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:
|
|
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:
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 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|