Compilazione in MSIL
Quando compila in codice gestito, il compilatore converte il codice sorgente in Microsoft Intermediate Language (MSIL), una serie di istruzioni indipendenti dalla CPU facilmente convertibile in codice nativo. MSIL comprende istruzioni per il caricamento, la memorizzazione, l'inizializzazione e il richiamo di metodi su oggetti, per le operazioni aritmetiche e logiche, il flusso di controllo, l'accesso diretto alla memoria, la gestione delle eccezioni e altre operazioni ancora. Prima di poter eseguire il codice, è necessario convertire MSIL in codice specifico della CPU, normalmente mediante un compilatore JIT. Poiché in Common Language Runtime sono forniti uno o più compilatori JIT per ogni architettura di computer supportata, su ciascuna di queste può essere compilata in modalità JIT ed eseguita la medesima serie di istruzioni MSIL.
Quando un compilatore genera codice MSIL, genera anche metadati. I metadati descrivono i tipi contenuti nel codice, inclusa la definizione di ciascun tipo, le firme dei membri di ciascun tipo, i membri a cui fa riferimento il codice e altri dati utilizzati in fase di esecuzione. Il codice MSIL e i metadati sono contenuti in un file eseguibile trasportabile (PE, Portable Executable) che è basato sul formato file oggetto comune (COFF, Common Object File Format) eseguibile trasportabile pubblicato Microsoft, storicamente utilizzato per il contenuto eseguibile, e ne rappresenta un'estensione. Grazie a questo formato di file, che supporta sia MSIL che codice nativo che metadati, il sistema operativo è in grado di riconoscere immagini in Common Language Runtime. La presenza di metadati nel file, assieme al MSIL, consente al codice di autodescriversi, per cui non vi è alcuna necessità di librerie di tipi o del linguaggio di definizione dell'interfaccia (IDL, Interface Definition Language). In base a Common Language Runtime, vengono individuati ed estratti dal file i metadati necessari durante l'esecuzione.
Vedere anche
Riferimenti
Concetti
Processo di esecuzione gestita