| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Capitolo 2 | 
| Gli strumenti di Lavoro | 
      LINKER 7/10 [43 di 87]  | 
 
  | 
| 
     | 
    
  | 
  
| Il file EXE è il prodotto del Linker e contiene dentro di sé tutte le informazioni necessarie al loader del Dos per allocare il programma in memoria e al processore per eseguirlo. | |
| Dunque, nonostante l'apparenza, non si tratta di un file già pronto all'esecuzione; il sistema operativo deve intervenire per caricare (rilocare) le sue parti componenti (segmenti) nella giusta posizione in memoria Ram, anche in funzione delle reali disponibilità di questa risorsa. | |
| Si tratta di un compito molto impegnativo e complesso (per fortuna a noi completamente trasparente) svolto con l'indispensabile aiuto dei bytes dell'intestazione (header) predisposta dal Linker davanti all'effettivo codice macchina (modulo caricabile) del programma. | 
| 
     
  | 
  
| 
           | 
          Data la rilevanza di questa struttura è stata predisposta una scheda che ne svela tutti i segreti! | 
| 
     
  | 
  
| L'intestazione occupa almeno 512 bytes del programma EXE ed è costituita da 2 parti: nella prima (Informazioni di controllo) sono fornite indicazioni utili per la messa a punto del programma (come i valori da mettere nei registri del processore) mentre nella seconda (Tabella di Rilocazione) ci sono i puntatori alle variabili e agli indirizzi importanti del programma, che devono essere adattati alla effettiva posizione in ram. | |||||||||
| Esistono numerose utility in grado di mettere in chiaro i bytes di ques'area, come ExeMod e ExeHdr (usate nella citata scheda). | |||||||||
Per levarci la curiosità di vedere il valore
    dei 782
    bytes di Prova.EXE e dei 793
    bytes di Prova1.EXE abbiamo utilizzato
    il programma DiskEdit:
 
 
 
 
 NOTA:
    il programma DiskEdit è una
    tipica applicazione Dos e non può
    essere eseguito nell'ambiente multitasking di Windows; per questo bisogna
    chiudere sessione riavviando il
    sistema in modalità DOS. 
  | |||||||||
Vediamo di analizzare i bytes rilevati da DiskEdit;
    per
    evitare inutile spreco di spazio il resoconto mostra i 782
    bytes di Prova.EXE e i 793
    bytes di Prova1.EXE senza i  736 bytes
    centrali, tutti di valore  00H:
  
  | 
| 
     
  | 
  
| 
           | 
          Dunque: rispettivamente solo 14 e 26 bytes (su 782 e 793) sono codice macchina, per altro gli unici presenti nell'eventuale versione COM, ottenuta per intercessione di Exe2Bin. | 
  | 
| 
      
       |  
    Capitolo 2 | 
      
       | 
    LINKER 7/10 | 
    
    ![]()  | 
    
    ![]()  | 
    
    ![]()  | 
 ||
| 43 di 87 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |