Sezione |
Indirizzi Base
Registri Interni
|
Capitolo 2 |
Gli strumenti di Lavoro |
CATENA DI MONTAGGIO 5/7 [6 di 87] |
|
|
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. |
|
Capitolo 2 | CATENA DI MONTAGGIO 5/7 | |||||||
6 di 87 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|