共通中間言語
CILはオブジェクト指向かつスタックベースである。これは、たいていのプログラミング言語同様、命令のパラメータと結果が、いくつかのレジスタや他のメモリ領域に保持されるのではなく、単一のスタック上に保持されることを意味する。
x86における加算命令のアセンブリコード例を挙げる。
ここで、eaxとedxは汎用レジスタであり、上記はeaxにedxの内容を加算代入している。
これに相当する中間言語 (IL) のコードは以下のように表せる。
ここで、スタック上に2つのローカル変数がプッシュされる。加算命令が呼び出された際にオペランドがポップされ結果がプッシュされる。残った値はその後ポップされ最初のローカル変数にストアされる。
C#クラスインスタンスは以下のようにして作成される。
上記のステートメントは大体以下のような命令と同じである。