MSIL へのコンパイル

マネージ コードへのコンパイル時に、コンパイラはソース コードを MSIL (Microsoft Intermediate Language) に変換します。MSIL は CPU に依存しない一連の命令で、効率的にネイティブ コードに変換できます。MSIL には、オブジェクトに対する読み込み、格納、初期化、および呼び出し用の命令の他に、算術演算と論理演算、制御フロー、DMA (Direct Memory Access)、例外処理、およびその他の操作のための命令も含まれています。コードを実行する前に、MSIL を CPU 固有のコードに変換する必要があります。通常、この変換は Just-In-Time (JIT) コンパイラによって行われます。共通言語ランタイムはサポートするコンピュータ アーキテクチャごとに JIT コンパイラを提供しているため、同じ MSIL セットを JIT コンパイルして、サポートされているすべてのアーキテクチャで実行できます。

コンパイラは、MSIL を生成するときにメタデータも生成します。メタデータには、コード内の型について、それぞれの型の定義、型のメンバのシグネチャ、コードが参照するメンバ、共通言語ランタイムが実行時に使用するその他のデータなどが記述されています。MSIL とメタデータは、実行可能ファイルのファイル形式として使用されてきた従来の Microsoft PE と COFF (Common Object File Format) に基づき、それらを拡張したポータブル実行可能 (PE) ファイルに格納されます。MSIL、ネイティブ コード、およびメタデータを保存できるこのファイル形式を使用すると、オペレーティング システムが共通言語ランタイムのイメージを認識できるようになります。MSIL と共にメタデータがこのファイルに格納されるため、コードは自己記述型になります。つまり、タイプ ライブラリやインターフェイス定義言語 (IDL: Interface Definition Language) は必要なくなります。共通言語ランタイムは、実行時にこのファイルから必要に応じてメタデータを検出および抽出します。

参照

関連項目

MSIL アセンブラ (Ilasm.exe)

概念

マネージ実行プロセス

その他の技術情報

メタデータと自己言及的なコンポーネント