Frameworkで用いられるアセンブリ言語、および共通言語基盤(CLI、.NETの仮想マシン)が理解できる架空の機械語のことである。Language」(MSIL)として知られており、今なおMSILと呼ぶひとは多い。ソースを編集]一般的に「中間言語」と言えばバイナリ形式。「共通中間言語」という言葉自体は、アセンブリ言語(テキスト)としての意味も、マシン語(バイナリ)としての意味もあり、非常に曖昧な表現となっている。どちらを表しているかは文脈から読み取る必要がある。紛らわしいのでバイナリ形式のことを「マネージドコード」もしくは「ピュアマネージドコード」と呼ぶひともいる。人によっては「CILコード」と「CILイメージ」で使い分けている人もいる。どれが正解かは知らない。このページでは主にアセンブリ言語としての共通中間言語について記載する。ソースを編集]CILは、オブジェクト指向なアセンブリ言語であり、かつ完全にスタックベースの言語である。Framework系のプログラミング言語で書かれたソースコードは、各種コンパイラでコンパイルされてCILイメージに変換される。CIL自体は特定のプラットフォームに依存しない(特定CPUに依存しない)命令セットで構成されている。Frameworkの仮想マシンである共通言語基盤(CLI)で実行することもできる。MonoDevelopでは、このアセンブリ言語を使ったプロジェクトを作れる。world」プログラムの例。2つの符号付き整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。2つの符号なし整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。2つの値のビットごとのANDを計算し、新しい値を返す。現在のメソッドの引数リストのハンドル(アンマネージポインター)を返す。2つの値が等しいときに、targetへ処理を移す。2つの値が等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値1が値2より大きいまたは等しいときに、targetへ処理を移す。値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値1が値2より大きいときに、targetへ処理を移す。値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値1が値2より小さいまたは等しいときに、targetへ処理を移す。値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値1が値2より小さいときに、targetへ処理を移す。値1が値2より小さいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値型をオブジェクト参照に変換する。無条件で、targetへ処理を移す。無条件で、targetへ処理を移す。飛び先がint8の範囲内のとき用。ブレイクポイントに達したことをデバッガーに通知する。値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値がnullでもゼロでもないときに、targetへ処理を移す。値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値がnullのときに、targetへ処理を移す。値がnullのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値がnullでもゼロでもないときに、targetへ処理を移す。値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。methodDescに書かれたメソッドを呼び出す。callSiteDescrで引数の型を指定し、事前にftnで指定したメソッド(評価スタックに積まれてる関数ポインタ)を呼び出す。オブジェクトの遅延評価メソッドを呼び出し、戻り値を評価スタックに積む。numをInt32型の値とみなしスタックに積む。数字の「0」をInt32型の値としてスタックに積む。数字の「1」をInt32型の値としてスタックに積む。数字の「2」をInt32型の値としてスタックに積む。数字の「3」をInt32型の値としてスタックに積む。数字の「4」をInt32型の値としてスタックに積む。数字の「5」をInt32型の値としてスタックに積む。数字の「6」をInt32型の値としてスタックに積む。数字の「7」をInt32型の値としてスタックに積む。数字の「8」をInt32型の値としてスタックに積む。数字の「-1」をInt32型の値としてスタックに積む。numをInt32型の値とみなしスタックに積む。numがint8の範囲内のとき用。numをInt64型の値とみなしスタックに積む。numをfloat32型の値とみなしスタックに積む。numをfloat64型の値とみなしスタックに積む。評価スタックの一番上の値を取り出し、「2の補数」を計算し、評価スタックに積む。etypeで示される型の配列を作成し、その参照を評価スタックに積む。新しいオブジェクトまたは値型の新しいインスタンスを作成し、その参照を評価スタックに積む。エディットコンテニューやブレイクポイントを使ったときの穴埋め用。評価スタックの一番上にある値を取り出し、ビットごとの補数(1の補数)を計算し、評価スタックに積む。評価スタックの一番上にある2つの値を取り出し、ビットごとの補数を計算し、評価スタックに積む。スタックの一番上にある値を取り出す。以降の配列アドレス演算で、実行時に型チェックを実行しないこと、および可変性が制限されたマネージドポインターを返すことを指定する。現在の例外を再スローする。ハンドラー内でのみ使える。評価スタックから値とシフトするビット数を取り出し、0を使用して左にビットシフト(論理シフト)し、結果を評価スタックに積む。評価スタックから値とシフトするビット数を取り出し、0を使用して右にビットシフト(論理シフト)し、結果を評価スタックに積む。評価スタックから符号なし整数値とシフトするビット数を取り出し、0を使用して右にビットシフト(論理シフト)し、結果を評価スタックに積む。valTypeで指定された値型のサイズ(バイト数)を算出し、評価スタックに積む。評価スタックの一番上にある値を取り出し、numで指定したインデックスの引数スロットに格納する。評価スタックの一番上にある値を取り出し、numで指定したインデックスの引数スロットに格納する。インデックスが8ビット以内のとき用。スタック上の値をインデックス番号indexのローカル変数に取り出す。スタック上の値をインデックス番号0のローカル変数に取り出す。スタック上の値をインデックス番号1のローカル変数に取り出す。スタック上の値をインデックス番号2のローカル変数に取り出す。スタック上の値をインデックス番号3のローカル変数に取り出す。スタック上の値をインデックス番号indexのローカル変数に取り出す。indexが0~255以内のとき用。ジャンプテーブルを作り、評価スタックから取り出した値と一致するインデックスが示すアドレスに飛ぶ。一致するものが無ければ続行する。後続のメソッドが実行される直前に、後続のメソッドの引数を除く、現在のメソッドのスタックフレームを削除する。末尾呼び出し最適化用。現在の評価スタックにある例外オブジェクトをスローする。後続の命令が使う評価スタック上の値が、揮発性である(複数のスレッドによって変更される可能性がある)ことを指定し、ランタイムによるキャッシュなどを禁止させる。評価スタックから2つの整数値と取り出し、ビットごとの排他的論理和を計算し、結果を評価スタックに積む。Librariesとほぼ同じような内容。加筆、訂正などをして下さる協力者を求めています。このテンプレートは分野別のスタブテンプレート(Monobook:スタブカテゴリ参照)に変更することが望まれています。プライバシー・ポリシーMonoBookについて免責事項モバイルビュ。