「共通中間言語」の版間の差分
imported>Administrator 編集の要約なし |
imported>Administrator |
||
| 20行目: | 20行目: | ||
== CILの命令セット == | == CILの命令セット == | ||
{| class="wikitable sortable" | |||
|+ | |||
! style="" | コード | |||
! style="" | 命令 | |||
! style="" | 概要 | |||
|- | |||
| 0x58 | |||
| <code>add</code> | |||
| 2つの値を加算し、新しい値を返す | |||
|- | |||
| 0xD6 | |||
| <code>add.ovf</code> | |||
| 2つの符号付き整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | |||
|- | |||
| 0xD7 | |||
| <code>add.ovf.un</code> | |||
| 2つの符号なし整数値を加算し、かつオーバーフローのチェックを行い、新しい値を返す。 | |||
|- | |||
| 0x5F | |||
| <code>and</code> | |||
| 2つの値のビットごとのANDを計算し、新しい値を返す。 | |||
|- | |||
| 0xFE 0x00 | |||
| <code>arglist</code> | |||
| 現在のメソッドの引数リストのハンドル(アンマネージポインター)を返す。 | |||
|- | |||
| 0x3B <int32> | |||
| <code>beq</code> target | |||
| 2つの値が等しいときに、targetバイト移動したところへ処理を移す。 | |||
|- | |||
| 0x2E <int8> | |||
| <code>beq.s</code> target | |||
| 2つの値が等しいときに、targetバイト移動したところへ処理を移す。飛び先がint8の範囲内のとき用。 | |||
|- | |||
| 0x3C <int32> | |||
| <code>bge</code> target | |||
| 値1が値2より大きいまたは等しいときに、targetバイト移動したところへ処理を移す。 | |||
|- | |||
| 0x2E <int8> | |||
| <code>bge.s</code> target | |||
| 値1が値2より大きいまたは等しいときに、targetバイト移動したところへ処理を移す。飛び先がint8の範囲内のとき用。 | |||
|- | |||
| 0x41 <int32> | |||
| <code>bge.un</code> target | |||
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetバイト移動したところへ処理を移す。 | |||
|- | |||
| 0x34 <int8> | |||
| <code>bge.un.s</code> target | |||
| 符号なし整数値または順序なし(浮動小数点)を比較し、値1が値2より大きいまたは等しいときに、targetバイト移動したところへ処理を移す。飛び先がint8の範囲内のとき用。 | |||
|- | |||
| 0x3D <int32> | |||
| <code>bgt</code> target) | |||
| | |||
|- | |||
| 0x30 <int8> | |||
| <code>bgt.s</code> target | |||
| | |||
|- | |||
| 0x42 <int32> | |||
| <code>bgt.un</code> target | |||
| | |||
|- | |||
| 0x35 <int8> | |||
| <code>bgt.un.s</code> target | |||
| | |||
|- | |||
| 0x3E <int32> | |||
| <code>ble</code> target | |||
| | |||
|- | |||
| 0x31 <int8> | |||
| <code>ble.s</code> target | |||
| | |||
|- | |||
| 0x43 <int32> | |||
| <code>ble.un</code> target | |||
| | |||
|- | |||
| 0x36 <int8> | |||
| <code>ble.un.s</code> target | |||
| | |||
|- | |||
| 0x3F <int32> | |||
| <code>blt</code> target | |||
| | |||
|- | |||
| 0x32 <int8> | |||
| <code>blt.s</code> target | |||
| | |||
|- | |||
| 0x44 <int32> | |||
| <code>blt.un</code> target | |||
| | |||
|- | |||
| 0x37 <int8> | |||
| <code>blt.un.s</code> target | |||
| | |||
|- | |||
| 0x40 <int32> | |||
| <code>bne.un</code> target | |||
| | |||
|- | |||
| 0x33 <int8> | |||
| <code>bne.un.s</code> target | |||
| | |||
|- | |||
| 0x8C <T> | |||
| <code>box</code> <valTypeToken> | |||
| | |||
|- | |||
| 0x38 <int32> | |||
| <code>br</code> target | |||
| | |||
|- | |||
| 0x2B <int8> | |||
| <code>br.s</code> target | |||
| | |||
|- | |||
| 0x01 | |||
| <code>break</code> | |||
| | |||
|- | |||
| 0x39 <int32> | |||
| <code>brfalse</code> target | |||
| | |||
|- | |||
| 0x2C <int8> | |||
| <code>brfalse.s</code> target | |||
| | |||
|- | |||
| 0x3A <int32> | |||
| <code>brinst</code> target | |||
| | |||
|- | |||
| 0x2D <int8> | |||
| <code>brinst.s</code> target | |||
| | |||
|- | |||
| 0x39 <int32> | |||
| <code>brnull</code> target | |||
| | |||
|- | |||
| 0x2C <int8> | |||
| <code>brnull.s</code> target | |||
| | |||
|- | |||
| 0x3A <int32> | |||
| <code>brtrue</code> target | |||
| | |||
|- | |||
| 0x2D <int8> | |||
| <code>brtrue.s</code> target | |||
| | |||
|- | |||
| 0x39 <int32> | |||
| <code>brzero</code> target | |||
| | |||
|- | |||
| 0x2C <int8> | |||
| <code>brzero.s</code> target | |||
| | |||
|- | |||
| 0x28 <T> | |||
| <code>call</code> methodDesc | |||
| | |||
|- | |||
| 0x29 <T> | |||
| <code>calli</code> callSiteDescr | |||
| | |||
|- | |||
| 0x6F <T> | |||
| <code>callvirt</code> method | |||
| | |||
|- | |||
| 0x74 <T> | |||
| <code>castclass</code> class | |||
| | |||
|- | |||
| 0xFE 0x01 | |||
| <code>ceq</code> | |||
| | |||
|- | |||
| 0xFE 0x02 | |||
| <code>cgt</code> | |||
| | |||
|- | |||
| 0xFE 0x03 | |||
| <code>cgt.un</code> | |||
| | |||
|- | |||
| 0xC3 | |||
| <code>ckfinite</code> | |||
| | |||
|- | |||
| 0xFE 0x04 | |||
| <code>clt</code> | |||
| | |||
|- | |||
| 0xFE 0x05 | |||
| <code>clt.un</code> | |||
| | |||
|- | |||
| 0xFE 0x16 <T> | |||
| <code>constrained.</code> thisType | |||
| | |||
|- | |||
| 0xD3 | |||
| <code>conv.i</code> | |||
| | |||
|- | |||
| 0x67 | |||
| <code>conv.i1</code> | |||
| | |||
|- | |||
| 0x68 | |||
| <code>conv.i2</code> | |||
| | |||
|- | |||
| 0x69 | |||
| <code>conv.i4</code> | |||
| | |||
|- | |||
| 0x6A | |||
| <code>conv.i8</code> | |||
| | |||
|- | |||
| 0xD4 | |||
| <code>conv.ovf.i</code> | |||
| | |||
|- | |||
| 0x8A | |||
| <code>conv.ovf.i.un</code> | |||
| | |||
|- | |||
| 0xB3 | |||
| <code>conv.ovf.i1</code> | |||
| | |||
|- | |||
| 0x82 | |||
| <code>conv.ovf.i1.un</code> | |||
| | |||
|- | |||
| 0xB5 | |||
| <code>conv.ovf.i2</code> | |||
| | |||
|- | |||
| 0x83 | |||
| <code>conv.ovf.i2.un</code> | |||
| | |||
|- | |||
| 0xB7 | |||
| <code>conv.ovf.i4</code> | |||
| | |||
|- | |||
| 0x84 | |||
| <code>conv.ovf.i4.un</code> | |||
| | |||
|- | |||
| 0xB9 | |||
| <code>conv.ovf.i8</code> | |||
| | |||
|- | |||
| 0x85 | |||
| <code>conv.ovf.i8.un</code> | |||
| | |||
|- | |||
| 0xD5 | |||
| <code>conv.ovf.u</code> | |||
| | |||
|- | |||
| 0x8B | |||
| <code>conv.ovf.u.un</code> | |||
| | |||
|- | |||
| 0xB4 | |||
| <code>conv.ovf.u1</code> | |||
| | |||
|- | |||
| 0x86 | |||
| <code>conv.ovf.u1.un</code> | |||
| | |||
|- | |||
| 0xB6 | |||
| <code>conv.ovf.u2</code> | |||
| | |||
|- | |||
| 0x87 | |||
| <code>conv.ovf.u2.un</code> | |||
| | |||
|- | |||
| 0xB8 | |||
| <code>conv.ovf.u4</code> | |||
| | |||
|- | |||
| 0x88 | |||
| <code>conv.ovf.u4.un</code> | |||
| | |||
|- | |||
| 0xBA | |||
| <code>conv.ovf.u8</code> | |||
| | |||
|- | |||
| 0x89 | |||
| <code>conv.ovf.u8.un</code> | |||
| | |||
|- | |||
| 0x76 | |||
| <code>conv.r.un</code> | |||
| | |||
|- | |||
| 0x6B | |||
| <code>conv.r4</code> | |||
| | |||
|- | |||
| 0x6C | |||
| <code>conv.r8</code> | |||
| | |||
|- | |||
| 0xE0 | |||
| <code>conv.u</code> | |||
| | |||
|- | |||
| 0xD2 | |||
| <code>conv.u1</code> | |||
| | |||
|- | |||
| 0xD1 | |||
| <code>conv.u2</code> | |||
| | |||
|- | |||
| 0x6D | |||
| <code>conv.u4</code> | |||
| | |||
|- | |||
| 0x6E | |||
| <code>conv.u8</code> | |||
| | |||
|- | |||
| 0xFE 0x17 | |||
| <code>cpblk</code> | |||
| | |||
|- | |||
| 0x70 <T> | |||
| <code>cpobj</code> classTok | |||
| | |||
|- | |||
| 0x5B | |||
| <code>div</code> | |||
| | |||
|- | |||
| 0x5C | |||
| <code>div.un</code> | |||
| | |||
|- | |||
| 0x25 | |||
| <code>dup</code> | |||
| | |||
|- | |||
| 0xDC | |||
| <code>endfault</code> | |||
| | |||
|- | |||
| 0xFE 0X11 | |||
| <code>endfilter</code> | |||
| | |||
|- | |||
| 0xDC | |||
| <code>endfinally</code> | |||
| | |||
|- | |||
| 0x4C | |||
| <code>idind.u8</code> | |||
| | |||
|- | |||
| 0xFE 0x18 | |||
| <code>initblk</code> | |||
| | |||
|- | |||
| 0xFE 0x15 <T> | |||
| <code>initobj</code> typeTok | |||
| | |||
|- | |||
| 0x75 <T> | |||
| <code>isinst</code> class | |||
| | |||
|- | |||
| 0x27 <T> | |||
| <code>jmp</code> method | |||
| | |||
|- | |||
| 0xFE 0x09 <uint16> | |||
| <code>ldarg</code> index | |||
| | |||
|- | |||
| 0x02 | |||
| <code>ldarg.0</code> | |||
| | |||
|- | |||
| 0x03 | |||
| <code>ldarg.1</code> | |||
| | |||
|- | |||
| 0x04 | |||
| <code>ldarg.2</code> | |||
| | |||
|- | |||
| 0x05 | |||
| <code>ldarg.3</code> | |||
| | |||
|- | |||
| 0x0E <uint8> | |||
| <code>ldarg.s</code> index | |||
| | |||
|- | |||
| 0xFE 0x0A <uint16> | |||
| <code>ldarga</code> index | |||
| | |||
|- | |||
| 0x0F <uint8> | |||
| <code>ldarga.s</code> index | |||
| | |||
|- | |||
| 0x20 <int32> | |||
| <code>ldc.i4</code> num | |||
| | |||
|- | |||
| 0x16 | |||
| <code>ldc.i4.0</code> | |||
| | |||
|- | |||
| 0x17 | |||
| <code>ldc.i4.1</code> | |||
| | |||
|- | |||
| 0x18 | |||
| <code>ldc.i4.2</code> | |||
| | |||
|- | |||
| 0x19 | |||
| <code>ldc.i4.3</code> | |||
| | |||
|- | |||
| 0x1A | |||
| <code>ldc.i4.4</code> | |||
| | |||
|- | |||
| 0x1B | |||
| <code>ldc.i4.5</code> | |||
| | |||
|- | |||
| 0x1C | |||
| <code>ldc.i4.6</code> | |||
| | |||
|- | |||
| 0x1D | |||
| <code>ldc.i4.7</code> | |||
| | |||
|- | |||
| 0x1E | |||
| <code>ldc.i4.8</code> | |||
| | |||
|- | |||
| 0x15 | |||
| <code>ldc.i4.m1</code> | |||
| | |||
|- | |||
| 0x1F <int8> | |||
| <code>ldc.i4.s</code> num | |||
| | |||
|- | |||
| 0x21 <int64> | |||
| <code>ldc.i8</code> num | |||
| | |||
|- | |||
| 0x22 <float32> | |||
| <code>ldc.r4</code> num | |||
| | |||
|- | |||
| 0x23 <float64> | |||
| <code>ldc.r8</code> num | |||
| | |||
|- | |||
| 0xA3 <T> | |||
| <code>ldelem</code> <typeTok> | |||
| | |||
|- | |||
| 0x97 | |||
| <code>ldelem.i</code> | |||
| | |||
|- | |||
| 0x90 | |||
| <code>ldelem.i1</code> | |||
| | |||
|- | |||
| 0x92 | |||
| <code>ldelem.i2</code> | |||
| | |||
|- | |||
| 0x94 | |||
| <code>ldelem.i4</code> | |||
| | |||
|- | |||
| 0x96 | |||
| <code>ldelem.i8</code> | |||
| | |||
|- | |||
| 0x98 | |||
| <code>ldelem.r4</code> | |||
| | |||
|- | |||
| 0x99 | |||
| <code>ldelem.r8</code> | |||
| | |||
|- | |||
| 0x9A | |||
| <code>ldelem.ref</code> | |||
| | |||
|- | |||
| 0x91 | |||
| <code>ldelem.u1</code> | |||
| | |||
|- | |||
| 0x93 | |||
| <code>ldelem.u2</code> | |||
| | |||
|- | |||
| 0x95 | |||
| <code>ldelem.u4</code> | |||
| | |||
|- | |||
| 0x96 | |||
| <code>ldelem.u8</code> | |||
| | |||
|- | |||
| 0x8F <T> | |||
| <code>ldelema</code> class | |||
| | |||
|- | |||
| 0x7B <T> | |||
| <code>ldfld</code> field | |||
| | |||
|- | |||
| 0x7C <T> | |||
| <code>ldflda</code> field | |||
| | |||
|- | |||
| 0xFE 0x06 <T> | |||
| <code>ldftn</code> method | |||
| | |||
|- | |||
| 0x4D | |||
| <code>ldind.i</code> | |||
| | |||
|- | |||
| 0x46 | |||
| <code>ldind.i1</code> | |||
| | |||
|- | |||
| 0x48 | |||
| <code>ldind.i2</code> | |||
| | |||
|- | |||
| 0x4A | |||
| <code>ldind.i4</code> | |||
| | |||
|- | |||
| 0x4C | |||
| <code>ldind.i8</code> | |||
| | |||
|- | |||
| 0x4E | |||
| <code>ldind.r4</code> | |||
| | |||
|- | |||
| 0x4F | |||
| <code>ldind.r8</code> | |||
| | |||
|- | |||
| 0x50 | |||
| <code>ldind.ref</code> | |||
| | |||
|- | |||
| 0x47 | |||
| <code>ldind.u1</code> | |||
| | |||
|- | |||
| 0x49 | |||
| <code>ldind.u2</code> | |||
| | |||
|- | |||
| 0x4B | |||
| <code>ldind.u4</code> | |||
| | |||
|- | |||
| 0x8E | |||
| <code>ldlen</code> | |||
| | |||
|- | |||
| 0xFE 0x0C <uint16> | |||
| <code>ldloc</code> index | |||
| | |||
|- | |||
| 0x06 | |||
| <code>ldloc.0</code> | |||
| | |||
|- | |||
| 0x07 | |||
| <code>ldloc.1</code> | |||
| | |||
|- | |||
| 0x08 | |||
| <code>ldloc.2</code> | |||
| | |||
|- | |||
| 0x09 | |||
| <code>ldloc.3</code> | |||
| | |||
|- | |||
| 0x11 <uint8> | |||
| <code>ldloc.s</code> indx | |||
| | |||
|- | |||
| 0xFE 0x0D <uint16> | |||
| <code>ldloca</code> index | |||
| | |||
|- | |||
| 0x12 <uint8> | |||
| <code>ldloca.s</code> index | |||
| | |||
|- | |||
| 0x14 | |||
| <code>ldnull</code> | |||
| | |||
|- | |||
| 0x71 <T> | |||
| <code>ldobj</code> typeTok | |||
| | |||
|- | |||
| 0x7E <T> | |||
| <code>ldsfld</code> field | |||
| | |||
|- | |||
| 0x7F <T> | |||
| <code>ldsflda</code> field | |||
| | |||
|- | |||
| 0x72 <T> | |||
| <code>ldstr</code> mdToken | |||
| | |||
|- | |||
| 0xD0 <T> | |||
| <code>ldtoken</code> token | |||
| | |||
|- | |||
| 0xFE 0x07 <T> | |||
| <code>ldvirtftn</code> method | |||
| | |||
|- | |||
| 0xDD <int32> | |||
| <code>leave</code> target | |||
| | |||
|- | |||
| 0xDE <int8> | |||
| <code>leave.s</code> target | |||
| | |||
|- | |||
| 0xFE 0x0F | |||
| <code>localloc</code> | |||
| | |||
|- | |||
| 0xC6 <T> | |||
| <code>mkrefany</code> class | |||
| | |||
|- | |||
| 0x5A | |||
| <code>mul</code> | |||
| | |||
|- | |||
| 0xD8 | |||
| <code>mul.ovf</code> | |||
| | |||
|- | |||
| 0xD9 | |||
| <code>mul.ovf.un</code> | |||
| | |||
|- | |||
| 0x65 | |||
| <code>neg</code> | |||
| | |||
|- | |||
| 0x8D <T> | |||
| <code>newarr</code> etype | |||
| | |||
|- | |||
| 0x73 <T> | |||
| <code>newobj</code> ctor | |||
| | |||
|- | |||
| 0xFE 0x19 | |||
| <code>no.</code> { <code>typecheck</code>, <code>rangecheck</code>, <code>nullcheck</code> } [prefix] | |||
| | |||
|- | |||
| 0x00 | |||
| <code>nop</code> | |||
| | |||
|- | |||
| 0x66 | |||
| <code>not</code> | |||
| | |||
|- | |||
| 0x60 | |||
| <code>or</code> | |||
| | |||
|- | |||
| 0x26 | |||
| <code>pop</code> | |||
| | |||
|- | |||
| 0xFE 0x1E | |||
| <code>readonly.</code> | |||
| | |||
|- | |||
| 0xFE 0x1D | |||
| <code>refanytype</code> | |||
| | |||
|- | |||
| 0xC2 <T> | |||
| <code>refanyval</code> type | |||
| | |||
|- | |||
| 0x5D | |||
| <code>rem</code> | |||
| | |||
|- | |||
| 0x5E | |||
| <code>rem.un</code> | |||
| | |||
|- | |||
| 0x2A | |||
| <code>ret</code> | |||
| | |||
|- | |||
| 0xFE 0x1A | |||
| <code>rethrow</code> | |||
| | |||
|- | |||
| 0x62 | |||
| <code>shl</code> | |||
| | |||
|- | |||
| 0x63 | |||
| <code>shr</code> | |||
| | |||
|- | |||
| 0x64 | |||
| <code>shr.un</code> | |||
| | |||
|- | |||
| 0xFE 0x1C <T> | |||
| <code>sizeof</code> valType | |||
| | |||
|- | |||
| 0xFE 0x0B <uint16> | |||
| <code>starg</code> num | |||
| | |||
|- | |||
| 0x10 <uint8> | |||
| <code>starg.s</code> num | |||
| | |||
|- | |||
| 0xA4 <T> | |||
| <code>stelem</code> typeTok | |||
| | |||
|- | |||
| 0x9B | |||
| <code>stelem.i</code> | |||
| | |||
|- | |||
| 0x9C | |||
| <code>stelem.i1</code> | |||
| | |||
|- | |||
| 0x9D | |||
| <code>stelem.i2</code> | |||
| | |||
|- | |||
| 0x9E | |||
| <code>stelem.i4</code> | |||
| | |||
|- | |||
| 0x9F | |||
| <code>stelem.i8</code> | |||
| | |||
|- | |||
| 0xA0 | |||
| <code>stelem.r4</code> | |||
| | |||
|- | |||
| 0xA1 | |||
| <code>stelem.r8</code> | |||
| | |||
|- | |||
| 0xA2 | |||
| <code>stelem.ref</code> | |||
| | |||
|- | |||
| 0x7D <T> | |||
| <code>stfld</code> field | |||
| | |||
|- | |||
| 0xDF | |||
| <code>stind.i</code> | |||
| | |||
|- | |||
| 0x52 | |||
| <code>stind.i1</code> | |||
| | |||
|- | |||
| 0x53 | |||
| <code>stind.i2</code> | |||
| | |||
|- | |||
| 0x54 | |||
| <code>stind.i4</code> | |||
| | |||
|- | |||
| 0x55 | |||
| <code>stind.i8</code> | |||
| | |||
|- | |||
| 0x56 | |||
| <code>stind.r4</code> | |||
| | |||
|- | |||
| 0x57 | |||
| <code>stind.r8</code> | |||
| | |||
|- | |||
| 0x51 | |||
| <code>stind.ref</code> | |||
| | |||
|- | |||
| 0xFE 0x0E <uint16> | |||
| <code>stloc</code> index | |||
| | |||
|- | |||
| 0x0A | |||
| <code>stloc.0</code> | |||
| | |||
|- | |||
| 0x0B | |||
| <code>stloc.1</code> | |||
| | |||
|- | |||
| 0x0C | |||
| <code>stloc.2</code> | |||
| | |||
|- | |||
| 0x0D | |||
| <code>stloc.3</code> | |||
| | |||
|- | |||
| 0x13 <uint8> | |||
| <code>stloc.s</code> index | |||
| | |||
|- | |||
| 0x81 <T> | |||
| <code>stobj</code> class | |||
| | |||
|- | |||
| 0x80 <T> | |||
| <code>stsfld</code> field | |||
| | |||
|- | |||
| 0x59 | |||
| <code>sub</code> | |||
| | |||
|- | |||
| 0xDA | |||
| <code>sub.ovf</code> | |||
| | |||
|- | |||
| 0xDB | |||
| <code>sub.ovf.un</code> | |||
| | |||
|- | |||
| 0x45 <uint32> <int32> ... <int32> | |||
| <code>switch</code> N, t1...tN | |||
| | |||
|- | |||
| 0xFE 0x14 | |||
| <code>tail.</code> | |||
| | |||
|- | |||
| 0x7A | |||
| <code>throw</code> | |||
| | |||
|- | |||
| 0xFE 0x12 <uint8> | |||
| <code>unaligned.</code> alignment | |||
| | |||
|- | |||
| 0x79 <T> | |||
| <code>unbox</code> valType | |||
| | |||
|- | |||
| 0xA5 <T> | |||
| <code>unbox.any</code> typeTok | |||
| | |||
|- | |||
| 0xFE 0x13 | |||
| <code>volatile.</code> | |||
| | |||
|- | |||
| 0x61 | |||
| <code>xor</code> | |||
| | |||
|- | |||
|} | |||
== 関連項目 == | == 関連項目 == | ||