「共通中間言語」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | '''共通中間言語''' | + | '''共通中間言語'''(きょうつうちゅうかんげんご、'''C'''ommon '''I'''ntermediate '''L'''anguage、'''CIL''')とは、[[Mono]]および[[.NET Framework]]で用いられる[[アセンブリ言語]]に類似した仮想マシン語のことである。.NET Frameworkがベータ版だったころまでは「'''M'''icro'''s'''oft '''I'''ntermediate '''L'''anguage」('''MSIL''')として知られており、今なおMSILと呼ぶひとは多い。 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
CILは、[[オブジェクト指向]]な[[アセンブリ言語]]であり、かつ完全にスタックベースの言語である。 | CILは、[[オブジェクト指向]]な[[アセンブリ言語]]であり、かつ完全にスタックベースの言語である。 | ||
− | + | .NET系の[[プログラミング言語]]で書かれた[[ソースコード]]は[[コンパイル]]されてCILに変換される。CIL自体はプラットフォームに依存しない(特定CPUに依存しない)命令セットで構成されている。 | |
− | + | そのためCILは、理論上は[[ネイティブコード]]に変換することも(Monoでは実験的に可能)、.NET Frameworkの仮想マシンである[[共通言語基盤]]([[CLR]])で実行することもできる。 | |
− | |||
− | |||
− | |||
− | |||
== 使用例 == | == 使用例 == | ||
− | + | CILによる「[[Hello, world]]」プログラムの例。 | |
<source lang="cil"> | <source lang="cil"> | ||
− | + | .method public static void Main() cil managed | |
− | . | ||
− | |||
{ | { | ||
− | + | .entrypoint | |
− | . | + | .maxstack 1 |
− | + | ldstr "hello, world" | |
− | + | call void [mscorlib]System.Console::WriteLine(string) | |
− | + | ret | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
52行目: | 27行目: | ||
|- | |- | ||
| 0x58 | | 0x58 | ||
− | | | + | | <code>add</code> |
| 2つの値を加算し、新しい値を返す | | 2つの値を加算し、新しい値を返す | ||
|- | |- | ||
| 0xD6 | | 0xD6 | ||
− | | | + | | <code>add.ovf</code> |
| 2つの符号付き整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | | 2つの符号付き整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | ||
|- | |- | ||
| 0xD7 | | 0xD7 | ||
− | | | + | | <code>add.ovf.un</code> |
| 2つの符号なし整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | | 2つの符号なし整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | ||
|- | |- | ||
| 0x5F | | 0x5F | ||
− | | | + | | <code>and</code> |
| 2つの値のビットごとのANDを計算し、新しい値を返す。 | | 2つの値のビットごとのANDを計算し、新しい値を返す。 | ||
|- | |- | ||
| 0xFE 0x00 | | 0xFE 0x00 | ||
− | | | + | | <code>arglist</code> |
| 現在のメソッドの引数リストのハンドル(アンマネージポインター)を返す。 | | 現在のメソッドの引数リストのハンドル(アンマネージポインター)を返す。 | ||
|- | |- | ||
| 0x3B <int32> | | 0x3B <int32> | ||
− | | | + | | <code>beq</code> target |
| 2つの値が等しいときに、targetへ処理を移す。 | | 2つの値が等しいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2E <int8> | | 0x2E <int8> | ||
− | | | + | | <code>beq.s</code> target |
| 2つの値が等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 2つの値が等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3C <int32> | | 0x3C <int32> | ||
− | | | + | | <code>bge</code> target |
| 値1が値2より大きいまたは等しいときに、targetへ処理を移す。 | | 値1が値2より大きいまたは等しいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2E <int8> | | 0x2E <int8> | ||
− | | | + | | <code>bge.s</code> target |
| 値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x41 <int32> | | 0x41 <int32> | ||
− | | | + | | <code>bge.un</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x34 <int8> | | 0x34 <int8> | ||
− | | | + | | <code>bge.un.s</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3D <int32> | | 0x3D <int32> | ||
− | | | + | | <code>bgt</code> target) |
| 値1が値2より大きいときに、targetへ処理を移す。 | | 値1が値2より大きいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x30 <int8> | | 0x30 <int8> | ||
− | | | + | | <code>bgt.s</code> target |
| 値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x42 <int32> | | 0x42 <int32> | ||
− | | | + | | <code>bgt.un</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x35 <int8> | | 0x35 <int8> | ||
− | | | + | | <code>bgt.un.s</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3E <int32> | | 0x3E <int32> | ||
− | | | + | | <code>ble</code> target |
| 値1が値2より小さいまたは等しいときに、targetへ処理を移す。 | | 値1が値2より小さいまたは等しいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x31 <int8> | | 0x31 <int8> | ||
− | | | + | | <code>ble.s</code> target |
| 値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x43 <int32> | | 0x43 <int32> | ||
− | | | + | | <code>ble.un</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x36 <int8> | | 0x36 <int8> | ||
− | | | + | | <code>ble.un.s</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいまたは等しいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3F <int32> | | 0x3F <int32> | ||
− | | | + | | <code>blt</code> target |
| 値1が値2より小さいときに、targetへ処理を移す。 | | 値1が値2より小さいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x32 <int8> | | 0x32 <int8> | ||
− | | | + | | <code>blt.s</code> target |
| 値1が値2より小さいときに、targetへ処理を移す。。飛び先がint8の範囲内のとき用。 | | 値1が値2より小さいときに、targetへ処理を移す。。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x44 <int32> | | 0x44 <int32> | ||
− | | | + | | <code>blt.un</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x37 <int8> | | 0x37 <int8> | ||
− | | | + | | <code>blt.un.s</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より小さいときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x40 <int32> | | 0x40 <int32> | ||
− | | | + | | <code>bne.un</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x33 <int8> | | 0x33 <int8> | ||
− | | | + | | <code>bne.un.s</code> target |
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 符号なし整数値または順序なし(浮動小数点)を比較し、値1と値2が等しくないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x8C <T> | | 0x8C <T> | ||
− | | | + | | <code>box</code> <valTypeToken> |
| 値型をオブジェクト参照に変換する。 | | 値型をオブジェクト参照に変換する。 | ||
|- | |- | ||
| 0x38 <int32> | | 0x38 <int32> | ||
− | | | + | | <code>br</code> target |
| 無条件で、targetへ処理を移す。 | | 無条件で、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2B <int8> | | 0x2B <int8> | ||
− | | | + | | <code>br.s</code> target |
| 無条件で、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 無条件で、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x01 | | 0x01 | ||
− | | | + | | <code>break</code> |
| ブレイクポイントに達したことをデバッガーに通知する。 | | ブレイクポイントに達したことをデバッガーに通知する。 | ||
|- | |- | ||
| 0x39 <int32> | | 0x39 <int32> | ||
− | | | + | | <code>brfalse</code> target |
| 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。 | | 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2C <int8> | | 0x2C <int8> | ||
− | | | + | | <code>brfalse.s</code> target |
| 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3A <int32> | | 0x3A <int32> | ||
− | | | + | | <code>brinst</code> target |
| 値がnullでもゼロでもないときに、targetへ処理を移す。(brtrueの別名) | | 値がnullでもゼロでもないときに、targetへ処理を移す。(brtrueの別名) | ||
|- | |- | ||
| 0x2D <int8> | | 0x2D <int8> | ||
− | | | + | | <code>brinst.s</code> target |
| 値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。(brtrue.sの別名) | | 値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。(brtrue.sの別名) | ||
|- | |- | ||
| 0x39 <int32> | | 0x39 <int32> | ||
− | | | + | | <code>brnull</code> target |
| 値がnullのときに、targetへ処理を移す。 | | 値がnullのときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2C <int8> | | 0x2C <int8> | ||
− | | | + | | <code>brnull.s</code> target |
| 値がnullのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値がnullのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x3A <int32> | | 0x3A <int32> | ||
− | | | + | | <code>brtrue</code> target |
| 値がnullでもゼロでもないときに、targetへ処理を移す。 | | 値がnullでもゼロでもないときに、targetへ処理を移す。 | ||
|- | |- | ||
| 0x2D <int8> | | 0x2D <int8> | ||
− | | | + | | <code>brtrue.s</code> target |
| 値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | | 値がnullでもゼロでもないときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。 | ||
|- | |- | ||
| 0x39 <int32> | | 0x39 <int32> | ||
− | | | + | | <code>brzero</code> target |
| 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。(brfalseの別名) | | 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。(brfalseの別名) | ||
|- | |- | ||
| 0x2C <int8> | | 0x2C <int8> | ||
− | | | + | | <code>brzero.s</code> target |
| 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。(brfalse.sの別名) | | 値がfalseまたはnullまたはゼロのときに、targetへ処理を移す。飛び先がint8の範囲内のとき用。(brfalse.sの別名) | ||
|- | |- | ||
| 0x28 <T> | | 0x28 <T> | ||
− | | | + | | <code>call</code> methodDesc |
| methodDescに書かれたメソッドを呼び出す。 | | methodDescに書かれたメソッドを呼び出す。 | ||
|- | |- | ||
| 0x29 <T> | | 0x29 <T> | ||
− | | | + | | <code>calli</code> callSiteDescr |
| callSiteDescrで引数の型を指定し、事前にftnで指定したメソッド(評価スタックに積まれてる関数ポインタ)を呼び出す。 | | callSiteDescrで引数の型を指定し、事前にftnで指定したメソッド(評価スタックに積まれてる関数ポインタ)を呼び出す。 | ||
|- | |- | ||
| 0x6F <T> | | 0x6F <T> | ||
− | | | + | | <code>callvirt</code> method |
| オブジェクトの遅延評価メソッドを呼び出し、戻り値を評価スタックに積む。 | | オブジェクトの遅延評価メソッドを呼び出し、戻り値を評価スタックに積む。 | ||
|- | |- | ||
| 0x74 <T> | | 0x74 <T> | ||
− | | | + | | <code>castclass</code> class |
| | | | ||
|- | |- | ||
| 0xFE 0x01 | | 0xFE 0x01 | ||
− | | | + | | <code>ceq</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x02 | | 0xFE 0x02 | ||
− | | | + | | <code>cgt</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x03 | | 0xFE 0x03 | ||
− | | | + | | <code>cgt.un</code> |
| | | | ||
|- | |- | ||
| 0xC3 | | 0xC3 | ||
− | | | + | | <code>ckfinite</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x04 | | 0xFE 0x04 | ||
− | | | + | | <code>clt</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x05 | | 0xFE 0x05 | ||
− | | | + | | <code>clt.un</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x16 <T> | | 0xFE 0x16 <T> | ||
− | | | + | | <code>constrained.</code> thisType |
| | | | ||
|- | |- | ||
| 0xD3 | | 0xD3 | ||
− | | | + | | <code>conv.i</code> |
| | | | ||
|- | |- | ||
| 0x67 | | 0x67 | ||
− | | | + | | <code>conv.i1</code> |
| | | | ||
|- | |- | ||
| 0x68 | | 0x68 | ||
− | | | + | | <code>conv.i2</code> |
| | | | ||
|- | |- | ||
| 0x69 | | 0x69 | ||
− | | | + | | <code>conv.i4</code> |
| | | | ||
|- | |- | ||
| 0x6A | | 0x6A | ||
− | | | + | | <code>conv.i8</code> |
| | | | ||
|- | |- | ||
| 0xD4 | | 0xD4 | ||
− | | | + | | <code>conv.ovf.i</code> |
| | | | ||
|- | |- | ||
| 0x8A | | 0x8A | ||
− | | | + | | <code>conv.ovf.i.un</code> |
| | | | ||
|- | |- | ||
| 0xB3 | | 0xB3 | ||
− | | | + | | <code>conv.ovf.i1</code> |
| | | | ||
|- | |- | ||
| 0x82 | | 0x82 | ||
− | | | + | | <code>conv.ovf.i1.un</code> |
| | | | ||
|- | |- | ||
| 0xB5 | | 0xB5 | ||
− | | | + | | <code>conv.ovf.i2</code> |
| | | | ||
|- | |- | ||
| 0x83 | | 0x83 | ||
− | | | + | | <code>conv.ovf.i2.un</code> |
| | | | ||
|- | |- | ||
| 0xB7 | | 0xB7 | ||
− | | | + | | <code>conv.ovf.i4</code> |
| | | | ||
|- | |- | ||
| 0x84 | | 0x84 | ||
− | | | + | | <code>conv.ovf.i4.un</code> |
| | | | ||
|- | |- | ||
| 0xB9 | | 0xB9 | ||
− | | | + | | <code>conv.ovf.i8</code> |
| | | | ||
|- | |- | ||
| 0x85 | | 0x85 | ||
− | | | + | | <code>conv.ovf.i8.un</code> |
| | | | ||
|- | |- | ||
| 0xD5 | | 0xD5 | ||
− | | | + | | <code>conv.ovf.u</code> |
| | | | ||
|- | |- | ||
| 0x8B | | 0x8B | ||
− | | | + | | <code>conv.ovf.u.un</code> |
| | | | ||
|- | |- | ||
| 0xB4 | | 0xB4 | ||
− | | | + | | <code>conv.ovf.u1</code> |
| | | | ||
|- | |- | ||
| 0x86 | | 0x86 | ||
− | | | + | | <code>conv.ovf.u1.un</code> |
| | | | ||
|- | |- | ||
| 0xB6 | | 0xB6 | ||
− | | | + | | <code>conv.ovf.u2</code> |
| | | | ||
|- | |- | ||
| 0x87 | | 0x87 | ||
− | | | + | | <code>conv.ovf.u2.un</code> |
| | | | ||
|- | |- | ||
| 0xB8 | | 0xB8 | ||
− | | | + | | <code>conv.ovf.u4</code> |
| | | | ||
|- | |- | ||
| 0x88 | | 0x88 | ||
− | | | + | | <code>conv.ovf.u4.un</code> |
| | | | ||
|- | |- | ||
| 0xBA | | 0xBA | ||
− | | | + | | <code>conv.ovf.u8</code> |
| | | | ||
|- | |- | ||
| 0x89 | | 0x89 | ||
− | | | + | | <code>conv.ovf.u8.un</code> |
| | | | ||
|- | |- | ||
| 0x76 | | 0x76 | ||
− | | | + | | <code>conv.r.un</code> |
| | | | ||
|- | |- | ||
| 0x6B | | 0x6B | ||
− | | | + | | <code>conv.r4</code> |
| | | | ||
|- | |- | ||
| 0x6C | | 0x6C | ||
− | | | + | | <code>conv.r8</code> |
| | | | ||
|- | |- | ||
| 0xE0 | | 0xE0 | ||
− | | | + | | <code>conv.u</code> |
| | | | ||
|- | |- | ||
| 0xD2 | | 0xD2 | ||
− | | | + | | <code>conv.u1</code> |
| | | | ||
|- | |- | ||
| 0xD1 | | 0xD1 | ||
− | | | + | | <code>conv.u2</code> |
| | | | ||
|- | |- | ||
| 0x6D | | 0x6D | ||
− | | | + | | <code>conv.u4</code> |
| | | | ||
|- | |- | ||
| 0x6E | | 0x6E | ||
− | | | + | | <code>conv.u8</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x17 | | 0xFE 0x17 | ||
− | | | + | | <code>cpblk</code> |
| | | | ||
|- | |- | ||
| 0x70 <T> | | 0x70 <T> | ||
− | | | + | | <code>cpobj</code> classTok |
| | | | ||
|- | |- | ||
| 0x5B | | 0x5B | ||
− | | | + | | <code>div</code> |
| | | | ||
|- | |- | ||
| 0x5C | | 0x5C | ||
− | | | + | | <code>div.un</code> |
| | | | ||
|- | |- | ||
| 0x25 | | 0x25 | ||
− | | | + | | <code>dup</code> |
| | | | ||
|- | |- | ||
| 0xDC | | 0xDC | ||
− | | | + | | <code>endfault</code> |
| | | | ||
|- | |- | ||
| 0xFE 0X11 | | 0xFE 0X11 | ||
− | | | + | | <code>endfilter</code> |
| | | | ||
|- | |- | ||
| 0xDC | | 0xDC | ||
− | | | + | | <code>endfinally</code> |
| | | | ||
|- | |- | ||
| 0x4C | | 0x4C | ||
− | | | + | | <code>idind.u8</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x18 | | 0xFE 0x18 | ||
− | | | + | | <code>initblk</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x15 <T> | | 0xFE 0x15 <T> | ||
− | | | + | | <code>initobj</code> typeTok |
| | | | ||
|- | |- | ||
| 0x75 <T> | | 0x75 <T> | ||
− | | | + | | <code>isinst</code> class |
| | | | ||
|- | |- | ||
| 0x27 <T> | | 0x27 <T> | ||
− | | | + | | <code>jmp</code> method |
| | | | ||
|- | |- | ||
| 0xFE 0x09 <uint16> | | 0xFE 0x09 <uint16> | ||
− | | | + | | <code>ldarg</code> index |
| | | | ||
|- | |- | ||
| 0x02 | | 0x02 | ||
− | | | + | | <code>ldarg.0</code> |
| | | | ||
|- | |- | ||
| 0x03 | | 0x03 | ||
− | | | + | | <code>ldarg.1</code> |
| | | | ||
|- | |- | ||
| 0x04 | | 0x04 | ||
− | | | + | | <code>ldarg.2</code> |
| | | | ||
|- | |- | ||
| 0x05 | | 0x05 | ||
− | | | + | | <code>ldarg.3</code> |
| | | | ||
|- | |- | ||
| 0x0E <uint8> | | 0x0E <uint8> | ||
− | | | + | | <code>ldarg.s</code> index |
| | | | ||
|- | |- | ||
| 0xFE 0x0A <uint16> | | 0xFE 0x0A <uint16> | ||
− | | | + | | <code>ldarga</code> index |
| | | | ||
|- | |- | ||
| 0x0F <uint8> | | 0x0F <uint8> | ||
− | | | + | | <code>ldarga.s</code> index |
| | | | ||
|- | |- | ||
| 0x20 <int32> | | 0x20 <int32> | ||
− | | | + | | <code>ldc.i4</code> num |
− | | | + | | |
|- | |- | ||
| 0x16 | | 0x16 | ||
− | | | + | | <code>ldc.i4.0</code> |
− | | | + | | |
|- | |- | ||
| 0x17 | | 0x17 | ||
− | | | + | | <code>ldc.i4.1</code> |
− | | | + | | |
|- | |- | ||
| 0x18 | | 0x18 | ||
− | | | + | | <code>ldc.i4.2</code> |
− | | | + | | |
|- | |- | ||
| 0x19 | | 0x19 | ||
− | | | + | | <code>ldc.i4.3</code> |
− | | | + | | |
|- | |- | ||
| 0x1A | | 0x1A | ||
− | | | + | | <code>ldc.i4.4</code> |
− | | | + | | |
|- | |- | ||
| 0x1B | | 0x1B | ||
− | | | + | | <code>ldc.i4.5</code> |
− | | | + | | |
|- | |- | ||
| 0x1C | | 0x1C | ||
− | | | + | | <code>ldc.i4.6</code> |
− | | | + | | |
|- | |- | ||
| 0x1D | | 0x1D | ||
− | | | + | | <code>ldc.i4.7</code> |
− | | | + | | |
|- | |- | ||
| 0x1E | | 0x1E | ||
− | | | + | | <code>ldc.i4.8</code> |
− | | | + | | |
|- | |- | ||
| 0x15 | | 0x15 | ||
− | | | + | | <code>ldc.i4.m1</code> |
− | | | + | | |
|- | |- | ||
| 0x1F <int8> | | 0x1F <int8> | ||
− | | | + | | <code>ldc.i4.s</code> num |
− | | | + | | |
|- | |- | ||
| 0x21 <int64> | | 0x21 <int64> | ||
− | | | + | | <code>ldc.i8</code> num |
− | | | + | | |
|- | |- | ||
| 0x22 <float32> | | 0x22 <float32> | ||
− | | | + | | <code>ldc.r4</code> num |
− | | | + | | |
|- | |- | ||
| 0x23 <float64> | | 0x23 <float64> | ||
− | | | + | | <code>ldc.r8</code> num |
− | | | + | | |
|- | |- | ||
| 0xA3 <T> | | 0xA3 <T> | ||
− | | | + | | <code>ldelem</code> <typeTok> |
| | | | ||
|- | |- | ||
| 0x97 | | 0x97 | ||
− | | | + | | <code>ldelem.i</code> |
| | | | ||
|- | |- | ||
| 0x90 | | 0x90 | ||
− | | | + | | <code>ldelem.i1</code> |
| | | | ||
|- | |- | ||
| 0x92 | | 0x92 | ||
− | | | + | | <code>ldelem.i2</code> |
| | | | ||
|- | |- | ||
| 0x94 | | 0x94 | ||
− | | | + | | <code>ldelem.i4</code> |
| | | | ||
|- | |- | ||
| 0x96 | | 0x96 | ||
− | | | + | | <code>ldelem.i8</code> |
| | | | ||
|- | |- | ||
| 0x98 | | 0x98 | ||
− | | | + | | <code>ldelem.r4</code> |
| | | | ||
|- | |- | ||
| 0x99 | | 0x99 | ||
− | | | + | | <code>ldelem.r8</code> |
| | | | ||
|- | |- | ||
| 0x9A | | 0x9A | ||
− | | | + | | <code>ldelem.ref</code> |
| | | | ||
|- | |- | ||
| 0x91 | | 0x91 | ||
− | | | + | | <code>ldelem.u1</code> |
| | | | ||
|- | |- | ||
| 0x93 | | 0x93 | ||
− | | | + | | <code>ldelem.u2</code> |
| | | | ||
|- | |- | ||
| 0x95 | | 0x95 | ||
− | | | + | | <code>ldelem.u4</code> |
| | | | ||
|- | |- | ||
| 0x96 | | 0x96 | ||
− | | | + | | <code>ldelem.u8</code> |
| | | | ||
|- | |- | ||
| 0x8F <T> | | 0x8F <T> | ||
− | | | + | | <code>ldelema</code> class |
| | | | ||
|- | |- | ||
| 0x7B <T> | | 0x7B <T> | ||
− | | | + | | <code>ldfld</code> field |
| | | | ||
|- | |- | ||
| 0x7C <T> | | 0x7C <T> | ||
− | | | + | | <code>ldflda</code> field |
| | | | ||
|- | |- | ||
| 0xFE 0x06 <T> | | 0xFE 0x06 <T> | ||
− | | | + | | <code>ldftn</code> method |
| | | | ||
|- | |- | ||
| 0x4D | | 0x4D | ||
− | | | + | | <code>ldind.i</code> |
| | | | ||
|- | |- | ||
| 0x46 | | 0x46 | ||
− | | | + | | <code>ldind.i1</code> |
| | | | ||
|- | |- | ||
| 0x48 | | 0x48 | ||
− | | | + | | <code>ldind.i2</code> |
| | | | ||
|- | |- | ||
| 0x4A | | 0x4A | ||
− | | | + | | <code>ldind.i4</code> |
| | | | ||
|- | |- | ||
| 0x4C | | 0x4C | ||
− | | | + | | <code>ldind.i8</code> |
| | | | ||
|- | |- | ||
| 0x4E | | 0x4E | ||
− | | | + | | <code>ldind.r4</code> |
| | | | ||
|- | |- | ||
| 0x4F | | 0x4F | ||
− | | | + | | <code>ldind.r8</code> |
| | | | ||
|- | |- | ||
| 0x50 | | 0x50 | ||
− | | | + | | <code>ldind.ref</code> |
| | | | ||
|- | |- | ||
| 0x47 | | 0x47 | ||
− | | | + | | <code>ldind.u1</code> |
| | | | ||
|- | |- | ||
| 0x49 | | 0x49 | ||
− | | | + | | <code>ldind.u2</code> |
| | | | ||
|- | |- | ||
| 0x4B | | 0x4B | ||
− | | | + | | <code>ldind.u4</code> |
| | | | ||
|- | |- | ||
| 0x8E | | 0x8E | ||
− | | | + | | <code>ldlen</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x0C <uint16> | | 0xFE 0x0C <uint16> | ||
− | | | + | | <code>ldloc</code> index |
| | | | ||
|- | |- | ||
| 0x06 | | 0x06 | ||
− | | | + | | <code>ldloc.0</code> |
| | | | ||
|- | |- | ||
| 0x07 | | 0x07 | ||
− | | | + | | <code>ldloc.1</code> |
| | | | ||
|- | |- | ||
| 0x08 | | 0x08 | ||
− | | | + | | <code>ldloc.2</code> |
| | | | ||
|- | |- | ||
| 0x09 | | 0x09 | ||
− | | | + | | <code>ldloc.3</code> |
| | | | ||
|- | |- | ||
| 0x11 <uint8> | | 0x11 <uint8> | ||
− | | | + | | <code>ldloc.s</code> indx |
| | | | ||
|- | |- | ||
| 0xFE 0x0D <uint16> | | 0xFE 0x0D <uint16> | ||
− | | | + | | <code>ldloca</code> index |
| | | | ||
|- | |- | ||
| 0x12 <uint8> | | 0x12 <uint8> | ||
− | | | + | | <code>ldloca.s</code> index |
| | | | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
− | | | + | | <code>ldnull</code> |
| | | | ||
|- | |- | ||
| 0x71 <T> | | 0x71 <T> | ||
− | | | + | | <code>ldobj</code> typeTok |
| | | | ||
|- | |- | ||
| 0x7E <T> | | 0x7E <T> | ||
− | | | + | | <code>ldsfld</code> field |
| | | | ||
|- | |- | ||
| 0x7F <T> | | 0x7F <T> | ||
− | | | + | | <code>ldsflda</code> field |
| | | | ||
|- | |- | ||
| 0x72 <T> | | 0x72 <T> | ||
− | | | + | | <code>ldstr</code> mdToken |
| | | | ||
|- | |- | ||
| 0xD0 <T> | | 0xD0 <T> | ||
− | | | + | | <code>ldtoken</code> token |
| | | | ||
|- | |- | ||
| 0xFE 0x07 <T> | | 0xFE 0x07 <T> | ||
− | | | + | | <code>ldvirtftn</code> method |
| | | | ||
|- | |- | ||
| 0xDD <int32> | | 0xDD <int32> | ||
− | | | + | | <code>leave</code> target |
| | | | ||
|- | |- | ||
| 0xDE <int8> | | 0xDE <int8> | ||
− | | | + | | <code>leave.s</code> target |
| | | | ||
|- | |- | ||
| 0xFE 0x0F | | 0xFE 0x0F | ||
− | | | + | | <code>localloc</code> |
| | | | ||
|- | |- | ||
| 0xC6 <T> | | 0xC6 <T> | ||
− | | | + | | <code>mkrefany</code> class |
| | | | ||
|- | |- | ||
| 0x5A | | 0x5A | ||
− | | | + | | <code>mul</code> |
| | | | ||
|- | |- | ||
| 0xD8 | | 0xD8 | ||
− | | | + | | <code>mul.ovf</code> |
| | | | ||
|- | |- | ||
| 0xD9 | | 0xD9 | ||
− | | | + | | <code>mul.ovf.un</code> |
| | | | ||
|- | |- | ||
| 0x65 | | 0x65 | ||
− | | | + | | <code>neg</code> |
− | | | + | | |
|- | |- | ||
| 0x8D <T> | | 0x8D <T> | ||
− | | | + | | <code>newarr</code> etype |
− | | | + | | |
|- | |- | ||
| 0x73 <T> | | 0x73 <T> | ||
− | | | + | | <code>newobj</code> ctor |
− | | | + | | |
|- | |- | ||
| 0xFE 0x19 | | 0xFE 0x19 | ||
− | | | + | | <code>no.</code> { <code>typecheck</code>, <code>rangecheck</code>, <code>nullcheck</code> } [prefix] |
| | | | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
− | | | + | | <code>nop</code> |
− | | | + | | |
|- | |- | ||
| 0x66 | | 0x66 | ||
− | | | + | | <code>not</code> |
− | | | + | | |
|- | |- | ||
| 0x60 | | 0x60 | ||
− | | | + | | <code>or</code> |
− | | | + | | |
|- | |- | ||
| 0x26 | | 0x26 | ||
− | | | + | | <code>pop</code> |
− | | | + | | |
|- | |- | ||
| 0xFE 0x1E | | 0xFE 0x1E | ||
− | | | + | | <code>readonly.</code> |
− | | | + | | |
|- | |- | ||
| 0xFE 0x1D | | 0xFE 0x1D | ||
− | | | + | | <code>refanytype</code> |
| | | | ||
|- | |- | ||
| 0xC2 <T> | | 0xC2 <T> | ||
− | | | + | | <code>refanyval</code> type |
| | | | ||
|- | |- | ||
| 0x5D | | 0x5D | ||
− | | | + | | <code>rem</code> |
| | | | ||
|- | |- | ||
| 0x5E | | 0x5E | ||
− | | | + | | <code>rem.un</code> |
| | | | ||
|- | |- | ||
| 0x2A | | 0x2A | ||
− | | | + | | <code>ret</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x1A | | 0xFE 0x1A | ||
− | | | + | | <code>rethrow</code> |
− | | | + | | |
|- | |- | ||
| 0x62 | | 0x62 | ||
− | | | + | | <code>shl</code> |
− | | | + | | |
|- | |- | ||
| 0x63 | | 0x63 | ||
− | | | + | | <code>shr</code> |
− | | | + | | |
|- | |- | ||
| 0x64 | | 0x64 | ||
− | | | + | | <code>shr.un</code> |
− | | | + | | |
|- | |- | ||
| 0xFE 0x1C <T> | | 0xFE 0x1C <T> | ||
− | | | + | | <code>sizeof</code> valType |
− | | | + | | |
|- | |- | ||
| 0xFE 0x0B <uint16> | | 0xFE 0x0B <uint16> | ||
− | | | + | | <code>starg</code> num |
− | | | + | | |
|- | |- | ||
| 0x10 <uint8> | | 0x10 <uint8> | ||
− | | | + | | <code>starg.s</code> num |
− | | | + | | |
|- | |- | ||
| 0xA4 <T> | | 0xA4 <T> | ||
− | | | + | | <code>stelem</code> typeTok |
| | | | ||
|- | |- | ||
| 0x9B | | 0x9B | ||
− | | | + | | <code>stelem.i</code> |
| | | | ||
|- | |- | ||
| 0x9C | | 0x9C | ||
− | | | + | | <code>stelem.i1</code> |
| | | | ||
|- | |- | ||
| 0x9D | | 0x9D | ||
− | | | + | | <code>stelem.i2</code> |
| | | | ||
|- | |- | ||
| 0x9E | | 0x9E | ||
− | | | + | | <code>stelem.i4</code> |
| | | | ||
|- | |- | ||
| 0x9F | | 0x9F | ||
− | | | + | | <code>stelem.i8</code> |
| | | | ||
|- | |- | ||
| 0xA0 | | 0xA0 | ||
− | | | + | | <code>stelem.r4</code> |
| | | | ||
|- | |- | ||
| 0xA1 | | 0xA1 | ||
− | | | + | | <code>stelem.r8</code> |
| | | | ||
|- | |- | ||
| 0xA2 | | 0xA2 | ||
− | | | + | | <code>stelem.ref</code> |
| | | | ||
|- | |- | ||
| 0x7D <T> | | 0x7D <T> | ||
− | | | + | | <code>stfld</code> field |
| | | | ||
|- | |- | ||
| 0xDF | | 0xDF | ||
− | | | + | | <code>stind.i</code> |
| | | | ||
|- | |- | ||
| 0x52 | | 0x52 | ||
− | | | + | | <code>stind.i1</code> |
| | | | ||
|- | |- | ||
| 0x53 | | 0x53 | ||
− | | | + | | <code>stind.i2</code> |
| | | | ||
|- | |- | ||
| 0x54 | | 0x54 | ||
− | | | + | | <code>stind.i4</code> |
| | | | ||
|- | |- | ||
| 0x55 | | 0x55 | ||
− | | | + | | <code>stind.i8</code> |
| | | | ||
|- | |- | ||
| 0x56 | | 0x56 | ||
− | | | + | | <code>stind.r4</code> |
| | | | ||
|- | |- | ||
| 0x57 | | 0x57 | ||
− | | | + | | <code>stind.r8</code> |
| | | | ||
|- | |- | ||
| 0x51 | | 0x51 | ||
− | | | + | | <code>stind.ref</code> |
| | | | ||
|- | |- | ||
| 0xFE 0x0E <uint16> | | 0xFE 0x0E <uint16> | ||
− | | | + | | <code>stloc</code> index |
− | | | + | | |
|- | |- | ||
| 0x0A | | 0x0A | ||
− | | | + | | <code>stloc.0</code> |
− | | | + | | |
|- | |- | ||
| 0x0B | | 0x0B | ||
− | | | + | | <code>stloc.1</code> |
− | | | + | | |
|- | |- | ||
| 0x0C | | 0x0C | ||
− | | | + | | <code>stloc.2</code> |
− | | | + | | |
|- | |- | ||
| 0x0D | | 0x0D | ||
− | | | + | | <code>stloc.3</code> |
− | | | + | | |
|- | |- | ||
| 0x13 <uint8> | | 0x13 <uint8> | ||
− | | | + | | <code>stloc.s</code> index |
− | | | + | | |
|- | |- | ||
| 0x81 <T> | | 0x81 <T> | ||
− | | | + | | <code>stobj</code> class |
| | | | ||
|- | |- | ||
| 0x80 <T> | | 0x80 <T> | ||
− | | | + | | <code>stsfld</code> field |
| | | | ||
|- | |- | ||
| 0x59 | | 0x59 | ||
− | | | + | | <code>sub</code> |
| | | | ||
|- | |- | ||
| 0xDA | | 0xDA | ||
− | | | + | | <code>sub.ovf</code> |
| | | | ||
|- | |- | ||
| 0xDB | | 0xDB | ||
− | | | + | | <code>sub.ovf.un</code> |
| | | | ||
|- | |- | ||
| 0x45 <uint32> <int32> ... <int32> | | 0x45 <uint32> <int32> ... <int32> | ||
− | | | + | | <code>switch</code> N, t1...tN |
− | | | + | | |
|- | |- | ||
| 0xFE 0x14 | | 0xFE 0x14 | ||
− | | | + | | <code>tail.</code> |
− | | | + | | |
|- | |- | ||
| 0x7A | | 0x7A | ||
− | | | + | | <code>throw</code> |
− | | | + | | |
|- | |- | ||
| 0xFE 0x12 <uint8> | | 0xFE 0x12 <uint8> | ||
− | | | + | | <code>unaligned.</code> alignment |
| | | | ||
|- | |- | ||
| 0x79 <T> | | 0x79 <T> | ||
− | | | + | | <code>unbox</code> valType |
| | | | ||
|- | |- | ||
| 0xA5 <T> | | 0xA5 <T> | ||
− | | | + | | <code>unbox.any</code> typeTok |
| | | | ||
|- | |- | ||
| 0xFE 0x13 | | 0xFE 0x13 | ||
− | | | + | | <code>volatile.</code> |
− | | | + | | |
|- | |- | ||
| 0x61 | | 0x61 | ||
− | | | + | | <code>xor</code> |
− | | | + | | |
|- | |- | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
== 関連項目 == | == 関連項目 == | ||
* [[Mono]] | * [[Mono]] | ||
* [[.NET Framework]] | * [[.NET Framework]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 参考文献 == | == 参考文献 == | ||
983行目: | 948行目: | ||
== 外部リンク == | == 外部リンク == | ||
− | + | {{stub}} |