| Ogni ambiente di programmazione offre, insieme
al compilatore, anche una versione personalizzata di Linker, sebbene la sua
attività non possa che essere sempre la
stessa:
| recupera
gli indirizzi lasciati vuoti dal compilatore (figura a
sinistra, marcati con E, esterni) e
sostituisce gli 0000H dell'oggetto con il corrispondente valore (figura
al centro, marcati con R, rilocati):
0100 E8 0000 E
0103 E8 0000 E |
0100
E8 0108 R
0103 E8 0103 R |
CALL
BiosCls
CALL
KeyWait |
|
| se l'oggetto ha riferimenti esterni ad
altri oggetti, provvede a recuperarli
e ad unirli in un unico programma
eseguibile; per ogni EXTRN
in un oggetto deve esserci un PUBLIC
con lo stesso nome in un altro oggetto. |
| L'universalità del linker si può capire proprio da questa sua capacità: si possono compilare i componenti Obj in ambienti diversi, per esempio in
Assembly e in Pascal, lasciando poi al
linker il compito di integrarli tra di loro.
|
|
predispone
all'inizio del file EXE una intestazione
(header) contenente le informazioni necessarie al Dos per caricarlo
(rilocarlo) in memoria
nel punto desiderato. La rilocabilità del programma
EXE è da ritenersi a
livello segmento: spetta al Dos stabilire, nel preciso
momento del caricamento in Ram, quale sarà la prima area libera,
adattando ad essa tutti gli indirizzi di segmento dell'eseguibile. |
|