ICDロゴ

MSIL (Microsoft Intermediate Language)

【エム・エス・アイ・エル】

最終更新日: 2000/12/15

 Microsoft.NETプラットフォームにおける実行プログラムの形式として開発された中間言語。中間言語の状態で保存された実行プログラムは、実行時にJITコンパイラ(Just-In-Timeコンパイラ)によって特定のマイクロプロセッサ・アーキテクチャに依存したネイティブ・コードに変換され、実行されることになる。このしくみにより、MSIL形式にコンパイルされた実行プログラムは、特定のハードウェア環境(マイクロプロセッサ・アーキテクチャなど)に依存することなく、適切なソフトウェア環境(MSIL向けのJITコンパイラが利用できることなど)さえ整っていれば、どこででも実行可能になる。

 いわばMSILは、抽象化されたマイクロプロセッサ向けのアセンブリ・コードだと考えることができる。実際その気になれば、アセンブリ言語をマニュアルでコーディングするように、MSILをコーディングして、実行させることも可能となっている。しかし通常は、C/C++言語など、高級言語でソースプログラムをコーディングし、これをコンパイルしてMSILに変換することになる。ただし抽象的なマイクロプロセッサ向けのアセンブリ・コードといっても、現存する一般的なマイクロプロセッサのマシン語コードと比較すれば、MSILには高度な機能が多数盛り込まれている。たとえばMSILでは、ソフトウェア・オブジェクトの作成や初期化、配列の直接操作、エラー処理用の例外捕獲機能などが備えられている。

 Sun Microsystemsが開発したJavaアーキテクチャでは、プログラムをバイト・コードと呼ばれる中間形式で保存しておき、それを実行時にVM(Virtual Machine)と呼ばれるシステム・ソフトウェアで実行したり、JITコンパイラでネイティブ・コードに変換して実行したりする。MSILによって実現されるソフトウェア環境の基本的な機能やねらいは、このJavaアーキテクチャにほぼ等しい。

 マイクロソフトは、MSILを生成できるプログラム開発環境として、.NET Framework SDK(コマンドライン・ベースのプログラム開発環境を提供するソフトウェア・セット)やVisual Studio.NET(グラフィカル・インターフェイスを備えたプログラム開発環境)を開発し、いずれも2000年末から開発者向けのベータ版ダウンロード・サービスを開始した。これら開発環境の最終的な製品版は、2001年に出荷される予定である。

 .NET Framework SDKおよびVisual Studio.NETでは、C/C++やVisual Basic、JScriptに加え、.NET向けに最適化された新しい言語処理系であるC#がサポートされる。いずれのプログラミング言語で作成されたコードも、コンパイルするとMSILに変換され、この形式で実行ファイルに保存される。

 MSILをネイティブ・コードに変換するJITコンパイラには、標準コンパイラとエコノミー・コンパイラの2種類がある。このうち前者の標準コンパイラでは、生成したネイティブ・コードの最適化が行われ、後者のエコノミー・コンパイラでは最適化が行われない。最適化を実施したネイティブ・コードのほうが、最終的な実行速度は向上するが、代わりにコンパイル時の負担が大きい。このためシステムの性能や、実行プログラムの性質などに応じて、2つのJITコンパイラを切り替えて使えるようにしている。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ