「共通中間言語」の版間の差分
imported>Administrator |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (4人の利用者による、間の7版が非表示) | |||
| 1行目: | 1行目: | ||
'''共通中間言語''' | '''共通中間言語'''(読み:きょうつうちゅうかんげんご、[[英語]]:Common Intermediate Language、略称:CIL)とは、[[Mono]]および[[.NET Framework]]で用いられる[[アセンブリ言語]]、および[[共通言語基盤]]([[CLI]]、[[.NET]]の[[仮想マシン]])が理解できる架空の[[機械語]]のことである。 | ||
[[.NET Framework]]がベータ版だったころまでは「Microsoft Intermediate Language」([[MSIL]])として知られており、今なおMSILと呼ぶひとは多い。 | |||
== コード表現とバイナリイメージ表現 == | == コード表現とバイナリイメージ表現 == | ||
| 32行目: | 34行目: | ||
default void Main(string[] args) cil managed | default void Main(string[] args) cil managed | ||
{ | { | ||
// | // どうみてもエントリポイント | ||
.entrypoint | .entrypoint | ||
.maxstack 8 | .maxstack 8 | ||
| 467行目: | 469行目: | ||
| 0x20 <int32> | | 0x20 <int32> | ||
| [[共通中間言語/ldc.i4|ldc.i4]] num | | [[共通中間言語/ldc.i4|ldc.i4]] num | ||
| | | numをInt32型の値とみなしスタックに積む。 | ||
|- | |- | ||
| 0x16 | | 0x16 | ||
| [[共通中間言語/ldc.i4.0|ldc.i4.0]] | | [[共通中間言語/ldc.i4.0|ldc.i4.0]] | ||
| | | 数字の「0」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x17 | | 0x17 | ||
| [[共通中間言語/ldc.i4.1|ldc.i4.1]] | | [[共通中間言語/ldc.i4.1|ldc.i4.1]] | ||
| | | 数字の「1」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| [[共通中間言語/ldc.i4.2|ldc.i4.2]] | | [[共通中間言語/ldc.i4.2|ldc.i4.2]] | ||
| | | 数字の「2」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x19 | | 0x19 | ||
| [[共通中間言語/ldc.i4.3|ldc.i4.3]] | | [[共通中間言語/ldc.i4.3|ldc.i4.3]] | ||
| | | 数字の「3」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1A | | 0x1A | ||
| [[共通中間言語/ldc.i4.4|ldc.i4.4]] | | [[共通中間言語/ldc.i4.4|ldc.i4.4]] | ||
| | | 数字の「4」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1B | | 0x1B | ||
| [[共通中間言語/ldc.i4.5|ldc.i4.5]] | | [[共通中間言語/ldc.i4.5|ldc.i4.5]] | ||
| | | 数字の「5」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1C | | 0x1C | ||
| [[共通中間言語/ldc.i4.6|ldc.i4.6]] | | [[共通中間言語/ldc.i4.6|ldc.i4.6]] | ||
| | | 数字の「6」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1D | | 0x1D | ||
| [[共通中間言語/ldc.i4.7|ldc.i4.7]] | | [[共通中間言語/ldc.i4.7|ldc.i4.7]] | ||
| | | 数字の「7」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1E | | 0x1E | ||
| [[共通中間言語/ldc.i4.8|ldc.i4.8]] | | [[共通中間言語/ldc.i4.8|ldc.i4.8]] | ||
| | | 数字の「8」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x15 | | 0x15 | ||
| [[共通中間言語/ldc.i4.m1|ldc.i4.m1]] | | [[共通中間言語/ldc.i4.m1|ldc.i4.m1]] | ||
| | | 数字の「-1」をInt32型の値としてスタックに積む。 | ||
|- | |- | ||
| 0x1F <int8> | | 0x1F <int8> | ||
| [[共通中間言語/ldc.i4.s|ldc.i4.s]] num | | [[共通中間言語/ldc.i4.s|ldc.i4.s]] num | ||
| | | numをInt32型の値とみなしスタックに積む。numがint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x21 <int64> | | 0x21 <int64> | ||
| [[共通中間言語/ldc.i8|ldc.i8]] num | | [[共通中間言語/ldc.i8|ldc.i8]] num | ||
| | | numをInt64型の値とみなしスタックに積む。 | ||
|- | |- | ||
| 0x22 <float32> | | 0x22 <float32> | ||
| [[共通中間言語/ldc.r4|ldc.r4]] num | | [[共通中間言語/ldc.r4|ldc.r4]] num | ||
| | | numをfloat32型の値とみなしスタックに積む。 | ||
|- | |- | ||
| 0x23 <float64> | | 0x23 <float64> | ||
| [[共通中間言語/ldc.r8|ldc.r8]] num | | [[共通中間言語/ldc.r8|ldc.r8]] num | ||
| | | numをfloat64型の値とみなしスタックに積む。 | ||
|- | |- | ||
| 0xA3 <T> | | 0xA3 <T> | ||
| 887行目: | 889行目: | ||
| 0xFE 0x0E <uint16> | | 0xFE 0x0E <uint16> | ||
| [[共通中間言語/stloc|stloc]] index | | [[共通中間言語/stloc|stloc]] index | ||
| | | スタック上の値をインデックス番号indexのローカル変数に取り出す。 | ||
|- | |- | ||
| 0x0A | | 0x0A | ||
| [[共通中間言語/stloc.0|stloc.0]] | | [[共通中間言語/stloc.0|stloc.0]] | ||
| | | スタック上の値をインデックス番号0のローカル変数に取り出す。 | ||
|- | |- | ||
| 0x0B | | 0x0B | ||
| [[共通中間言語/stloc.1|stloc.1]] | | [[共通中間言語/stloc.1|stloc.1]] | ||
| | | スタック上の値をインデックス番号1のローカル変数に取り出す。 | ||
|- | |- | ||
| 0x0C | | 0x0C | ||
| [[共通中間言語/stloc.2|stloc.2]] | | [[共通中間言語/stloc.2|stloc.2]] | ||
| | | スタック上の値をインデックス番号2のローカル変数に取り出す。 | ||
|- | |- | ||
| 0x0D | | 0x0D | ||
| [[共通中間言語/stloc.3|stloc.3]] | | [[共通中間言語/stloc.3|stloc.3]] | ||
| | | スタック上の値をインデックス番号3のローカル変数に取り出す。 | ||
|- | |- | ||
| 0x13 <uint8> | | 0x13 <uint8> | ||
| [[共通中間言語/stloc.s|stloc.s]] index | | [[共通中間言語/stloc.s|stloc.s]] index | ||
| | | スタック上の値をインデックス番号indexのローカル変数に取り出す。indexが0~255以内のとき用。 | ||
|- | |- | ||
| 0x81 <T> | | 0x81 <T> | ||
| 964行目: | 966行目: | ||
== 関連ツール == | == 関連ツール == | ||
* [[monodis]] | * [[ilasm]] - [[Mono]]に付属する[[アセンブラ]] | ||
* [[monodis]] - [[Mono]]に付属する[[逆アセンブラ]] | |||
== 関連項目 == | == 関連項目 == | ||
| 980行目: | 983行目: | ||
== 外部リンク == | == 外部リンク == | ||
[[category: プログラミング言語]] | |||
[[category: .NET]] | |||