|
 |
Gli strumenti di Lavoro |
CATENA DI MONTAGGIO 5/7
[6 di 87] |
 |
|
Fase3: Trasformazione dell'Oggetto in Eseguibile |
|
 | Come già accennato l'oggetto
(.Obj) prodotto dall'assemblatore
non è eseguibile dal processore
sia perchè nel
codice macchina del programma i
bytes che esprimono gli indirizzi delle procedure non sono
ancora definiti, sia perchè intorno al codice sono presenti i bytes di supporto
che aiutano il gestore della terza fase a risolvere questo problema.
|
 | La trasformazione del codice oggetto
(.Obj) in quello eseguibile
(.Exe) è il primo
compito del
linker
(letteralmente collegatore); nel file oggetto
sono presenti le informazioni necessarie e sufficienti per portare a
termine con successo l'operazione. |
 | Il programma eseguibile
(.Exe) è ancora rilocabile
come l'oggetto da cui è stato generato:
questa caratteristica viene addirittura esaltata, dato che il linker
provvede a creare, in testa al codice macchina del programma vero e proprio,
una Tabella di Rilocazione (header)
contenente tutte le informazioni necessarie al Dos per caricarlo in memoria
nel punto desiderato. |
 | La dimensione dell'header
rende voluminosa la dimensione di questo file (almeno mezzo
kBytes più dello stretto necessario) e rallenta il suo
caricamento in memoria (obbliga il sistema operativo a compiti correzione di
ogni riferimento ad indirizzi, al fine di rilocarli
nella posizione desiderata).
|
 | Il secondo compito
del
linker è quello intrinseco
nel suo nome: collegare tra loro oggetti
(.Obj) di provenienza diversa per
dar origine ad un unico file eseguibile
(.Exe). |
 | Questo è un fatto molto
frequente perchè un buon programmatore evita di inserire nel proprio codice
sorgente le procedure di uso più frequente, per non appesantirne la
dimensione a scapito della sua fluida lettura. |
 | La soluzione è quella di raccogliere le
proprie procedure, trasformate a loro volta in oggetti, in una Libreria
e di "linkarla" all'oggetto prodotto dal compilatore (l'analisi
del Gestore di Librerie sarà sviluppata in un successivo
paragrafo). |
 | Naturalmente questa tecnica può tornar utile
anche in presenza di file sorgente (.Asm)
di notevoli dimensioni; basta infatti spezzarlo
in 2 o più parti, assemblare ciascuna di esse separatamente e, infine,
collegare tra loro gli Obj ottenuti.
|
 |
Il
trattamento riservato dal Linker al file di tipo Obj
è dunque indispensabile anche se esso è l'unico
oggetto coinvolto nell'operazione (cioè anche se il sorgente
non utilizza dichiarazioni Extrn,
relative a procedure e/o variabili esterne). |
 | Al termine il file eseguibile sarà salvato sul disco con estensione
.EXE. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|