メインメニューを開く

差分

共通中間言語

11,101 バイト追加, 2012年4月13日 (金) 16:46
== 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>
|
|-
|}
== 関連項目 ==
匿名利用者