参考: Standard ECMA-335 4th edition の 330ページ〜460ページ
Assembly | Description | |
---|---|---|
0x00 | nop | Do nothing |
0x01 | break | Inform a debugger that a breakpoint has been reached. |
0x02 | ldarg.0 | Load argument 0 onto stack |
0x03 | ldarg.1 | Load argument 1 onto stack |
0x04 | ldarg.2 | Load argument 2 onto stack |
0x05 | ldarg.3 | Load argument 3 onto stack |
0x06 | ldloc.0 | Load local variable 0 onto stack. |
0x07 | ldloc.1 | Load local variable 1 onto stack. |
0x08 | ldloc.2 | Load local variable 2 onto stack. |
0x09 | ldloc.3 | Load local variable 3 onto stack. |
0x0a | stloc.0 | Pop value from stack into local variable 0. |
0x0b | stloc.1 | Pop value from stack into local variable 1. |
0x0c | stloc.2 | Pop value from stack into local variable 2. |
0x0d | stloc.3 | Pop value from stack into local variable 3. |
0x0e | ldarg.s | Load argument numbered num onto stack, short form. |
0x0f | ldarga.s | fetch the address of argument argNum, short form |
0x10 | starg.s | Store a value to the argument numbered num, short form |
0x11 | ldloc.s | Load local variable of index indx onto stack, short form. |
0x12 | ldloca.s | Load address of local variable with index indx, short form |
0x13 | stloc.s | Pop value from stack into local variable indx, short form. |
0x14 | ldnull | Push null reference on the stack |
0x15 | ldc.i4.m1 | Push -1 onto the stack as int32. |
0x16 | ldc.i4.0 | Push 0 onto the stack as int32. |
0x17 | ldc.i4.1 | Push 1 onto the stack as int32. |
0x18 | ldc.i4.2 | Push 2 onto the stack as int32. |
0x19 | ldc.i4.3 | Push 3 onto the stack as int32. |
0x1a | ldc.i4.4 | Push 4 onto the stack as int32. |
0x1b | ldc.i4.5 | Push 5 onto the stack as int32. |
0x1c | ldc.i4.6 | Push 6 onto the stack as int32. |
0x1d | ldc.i4.7 | Push 7 onto the stack as int32. |
0x1e | ldc.i4.8 | Push 8 onto the stack as int32. |
0x1f | ldc.i4.s | Push num onto the stack as int32, short form. |
0x20 | ldc.i4 | Push num of type int32 onto the stack as int32. |
0x21 | ldc.i8 | Push num of type int64 onto the stack as int64. |
0x22 | ldc.r4 | Push num of type float32 onto the stack as F. |
0x23 | ldc.r8 | Push num of type float64 onto the stack as F. |
0x25 | dup | Duplicate value on the top of the stack |
0x26 | pop | Pop a value from the stack |
0x27 | jmp | Exit current method and jump to specified method |
0x28 | call | Call method |
0x29 | calli | Call method indicated on the stack with arguments described by callsitedescr. |
0x2a | ret | Return from method, possibly returning a value |
0x2b | br.s | Branch to target, short form |
0x2c | brfalse.s | Branch to target if value is zero (false), short form |
0x2d | brtrue.s | Branch to target if value is non-zero (true), short form |
0x2e | beq.s | Branch to target if equal, short form |
0x2f | bge.s | Branch to target if greater than or equal to, short form |
0x30 | bgt.s | Branch to target if greater than, short form |
0x31 | ble.s | Branch to target if less than or equal to, short form |
0x32 | blt.s | Branch to target if less than, short form |
0x33 | bne.un.s | Branch to target if unequal or unordered, short form |
0x34 | bge.un.s | Branch to target if greater than or equal to (unsigned or unordered), short form |
0x35 | bgt.un.s | Branch to target if greater than (unsigned or unordered), short form |
0x36 | ble.un.s | Branch to target if less than or equal to (unsigned or unordered), short form |
0x37 | blt.un.s | Branch to target if less than (unsigned or unordered), short form |
0x38 | br | Branch to target |
0x39 | brfalse | Branch to target if value is zero (false) |
0x3a | brtrue | Branch to target if value is non-zero (true) |
0x3b | beq | Branch to target if equal |
0x3c | bge | Branch to target if greater than or equal to |
0x3d | bgt | Branch to target if greater than |
0x3e | ble | Branch to target if less than or equal to |
0x3f | blt | Branch to target if less than |
0x40 | bne.un | Branch to target if unequal or unordered |
0x41 | bge.un | Branch to target if greater than or equal to (unsigned or unordered) |
0x42 | bgt.un | Branch to target if greater than (unsigned or unordered) |
0x43 | ble.un | Branch to target if less than or equal to (unsigned or unordered) |
0x44 | blt.un | Branch to target if less than (unsigned or unordered) |
0x45 | switch | jump to one of n values |
0x46 | ldind.i1 | Indirect load value of type int8 as int32 on the stack. |
0x47 | ldind.u1 | Indirect load value of type unsigned int8 as int32 on the stack. |
0x48 | ldind.i2 | Indirect load value of type int16 as int32 on the stack. |
0x49 | ldind.u2 | Indirect load value of type unsigned int16 as int32 on the stack. |
0x4a | ldind.i4 | Indirect load value of type int32 as int32 on the stack. |
0x4b | ldind.u4 | Indirect load value of type unsigned int32 as int32 on the stack. |
0x4c | ldind.i8 | Indirect load value of type int64 as int64 on the stack. |
0x4d | ldind.i | Indirect load value of type native int as native int on the stack |
0x4e | ldind.r4 | Indirect load value of type float32 as F on the stack. |
0x4f | ldind.r8 | Indirect load value of type float64 as F on the stack. |
0x50 | ldind.ref | Indirect load value of type object ref as O on the stack. |
0x51 | stind.ref | Store value of type object ref (type O) into memory at address |
0x52 | stind.i1 | Store value of type int8 into memory at address |
0x53 | stind.i2 | Store value of type int16 into memory at address |
0x54 | stind.i4 | Store value of type int32 into memory at address |
0x55 | stind.i8 | Store value of type int64 into memory at address |
0x56 | stind.r4 | Store value of type float32 into memory at address |
0x57 | stind.r8 | Store value of type float64 into memory at address |
0x58 | add | Add two values, returning a new value |
0x59 | sub | Subtract value2 from value1, returning a new value |
0x5a | mul | Multiply values |
0x5b | div | Divide two values to return a quotient or floating-point result |
0x5c | div.un | Divide two values, unsigned, returning a quotient |
0x5d | rem | Remainder of dividing value1 by value2 |
0x5e | rem.un | Remainder of unsigned dividing value1 by value2 |
0x5f | and | Bitwise AND of two integral values, returns an integral value |
0x60 | or | Bitwise OR of two integer values, returns an integer. |
0x61 | xor | Bitwise XOR of integer values, returns an integer |
0x62 | shl | Shift an integer left (shifting in zeros), return an integer |
0x63 | shr | Shift an integer right (shift in sign), return an integer |
0x64 | shr.un | Shift an integer right (shift in zero), return an integer |
0x65 | neg | Negate value |
0x66 | not | Bitwise complement |
0x67 | conv.i1 | Convert to int8, pushing int32 on stack |
0x68 | conv.i2 | Convert to int16, pushing int32 on stack |
0x69 | conv.i4 | Convert to int32, pushing int32 on stack |
0x6a | conv.i8 | Convert to int64, pushing int64 on stack |
0x6b | conv.r4 | Convert to float32, pushing F on stack |
0x6c | conv.r8 | Convert to float64, pushing F on stack |
0x6d | conv.u4 | Convert to unsigned int32, pushing int32 on stack |
0x6e | conv.u8 | Convert to unsigned int64, pushing int64 on stack |
0x6f | callvirt | Call a method associated with obj |
0x70 | cpobj | Copy a value type from srcValObj to destValObj |
0x71 | ldobj | Copy instance of value type classTok to the stack. |
0x72 | ldstr | push a string object for the literal string |
0x73 | newobj | Allocate an uninitialized object or value type and call ctor |
0x74 | castclass | Cast obj to class |
0x75 | isinst | test if obj is an instance of class, returning null or an instance of that |
0x76 | conv.r.un | Convert unsigned integer to floating-point, pushing F on stack |
0x79 | unbox | Extract the value type data from obj, its boxed representation |
0x7a | throw | Throw an exception |
0x7b | ldfld | Push the value of field of object, or value type, obj, onto the stack |
0x7c | ldflda | Push the address of field of object obj on the stack |
0x7d | stfld | Replace the value of field of the object obj with val |
0x7e | ldsfld | Push the value of field on the stack |
0x7f | ldsflda | Push the address of the static field, field, on the stack |
0x80 | stsfld | Replace the value of field with val |
0x81 | stobj | Store a value of type classTok from the stack into memory |
0x82 | conv.ovf.i1.un | Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow |
0x83 | conv.ovf.i2.un | Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow |
0x84 | conv.ovf.i4.un | Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow |
0x85 | conv.ovf.i8.un | Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow |
0x86 | conv.ovf.u1.un | Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow |
0x87 | conv.ovf.u2.un | Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow |
0x88 | conv.ovf.u4.un | Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow |
0x89 | conv.ovf.u8.un | Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow |
0x8a | conv.ovf.i.un | Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow |
0x8b | conv.ovf.u.un | Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow |
0x8c | box | Convert valueType to a true object reference |
0x8d | newarr | Create a new array with elements of type etype |
0x8e | ldlen | Push the length (of type native unsigned int) of array on the stack |
0x8f | ldelema | Load the address of element at index onto the top of the stack |
0x90 | ldelem.i1 | Load the element with type int8 at index onto the top of the stack as an int32 |
0x91 | ldelem.u1 | Load the element with type unsigned int8 at index onto the top of the stack as an int32 |
0x92 | ldelem.i2 | Load the element with type int16 at index onto the top of the stack as an int32 |
0x93 | ldelem.u2 | Load the element with type unsigned int16 at index onto the top of the stack as an int32 |
0x94 | ldelem.i4 | Load the element with type int32 at index onto the top of the stack as an int32 |
0x95 | ldelem.u4 | Load the element with type unsigned int32 at index onto the top of the stack as an int32 |
0x96 | ldelem.i8 | Load the element with type int64 at index onto the top of the stack as an int64 |
0x97 | ldelem.i | Load the element with type native int at index onto the top of the stack as an native int |
0x98 | ldelem.r4 | Load the element with type float32 at index onto the top of the stack as an F |
0x99 | ldelem.r8 | Load the element with type float64 at index onto the top of the stack as an F |
0x9a | ldelem.ref | Load the element of type object, at index onto the top of the stack as an O |
0x9b | stelem.i | Replace array element at index with the i value on the stack |
0x9c | stelem.i1 | Replace array element at index with the int8 value on the stack |
0x9d | stelem.i2 | Replace array element at index with the int16 value on the stack |
0x9e | stelem.i4 | Replace array element at index with the int32 value on the stack |
0x9f | stelem.i8 | Replace array element at index with the int64 value on the stack |
0xa0 | stelem.r4 | Replace array element at index with the float32 value on the stack |
0xa1 | stelem.r8 | Replace array element at index with the float64 value on the stack |
0xa2 | stelem.ref | Replace array element at index with the ref value on the stack |
0xa3 | ldelem | Load the element at index onto the top of the stack |
0xa4 | stelem | Replace array element at index with the value on the stack |
0xa5 | unbox.any | Extract a value-type from obj, its boxed representation |
0xb3 | conv.ovf.i1 | Convert to an int8 (on the stack as int32) and throw an exception on overflow |
0xb4 | conv.ovf.u1 | Convert to a unsigned int8 (on the stack as int32) and throw an exception on overflow |
0xb5 | conv.ovf.i2 | Convert to an int16 (on the stack as int32) and throw an exception on overflow |
0xb6 | conv.ovf.u2 | Convert to a unsigned int16 (on the stack as int32) and throw an exception on overflow |
0xb7 | conv.ovf.i4 | Convert to an int32 (on the stack as int32) and throw an exception on overflow |
0xb8 | conv.ovf.u4 | Convert to a unsigned int32 (on the stack as int32) and throw an exception on overflow |
0xb9 | conv.ovf.i8 | Convert to an int64 (on the stack as int64) and throw an exception on overflow |
0xba | conv.ovf.u8 | Convert to a unsigned int64 (on the stack as int64) and throw an exception on overflow |
0xc2 | refanyval | Push the address stored in a typed reference |
0xc3 | ckfinite | Throw ArithmeticException if value is not a finite number |
0xc6 | mkrefany | Push a typed reference to ptr of type class onto the stack |
0xd0 | ldtoken | Convert metadata token to its runtime representation |
0xd1 | conv.u2 | Convert to unsigned int16, pushing int32 on stack |
0xd2 | conv.u1 | Convert to unsigned int8, pushing int32 on stack |
0xd3 | conv.i | Convert to native int, pushing native int on stack |
0xd4 | conv.ovf.i | Convert to an native int (on the stack as native int) and throw an exception on overflow |
0xd5 | conv.ovf.u | Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow |
0xd6 | add.ovf | Add signed integer values with overflow check. |
0xd7 | add.ovf.un | Add unsigned integer values with overflow check. |
0xd8 | mul.ovf | Multiply signed integer values. Signed result must fit in same size |
0xd9 | mul.ovf.un | Multiply unsigned integer values. Unsigned result must fit in same size |
0xda | sub.ovf | Subtract native int from a native int. Signed result must fit in same size |
0xdb | sub.ovf.un | Subtract native unsigned int from a native unsigned int. Unsigned result must fit in same size |
0xdc | endfinally | End finally clause of an exception block |
0xdd | leave | Exit a protected region of code. |
0xde | leave.s | Exit a protected region of code, short form |
0xdf | stind.i | Store value of type native int into memory at address |
0xe0 | conv.u | Convert to native unsigned int, pushing native int on stack |
0xfe 0x00 | arglist | Return argument list handle for the current method |
0xfe 0x01 | ceq | Push 1 (of type int32) if value1 equals value2, else 0 |
0xfe 0x02 | cgt | Push 1 (of type int32) if value1 > value2, else 0 |
0xfe 0x03 | cgt.un | Push 1 (of type int32) if value1 > value2, unsigned or unordered, else 0 |
0xfe 0x04 | clt | Push 1 (of type int32) if value1 < value2, else 0 |
0xfe 0x05 | clt.un | Push 1 (of type int32) if value1 < value2, unsigned or unordered, else 0 |
0xfe 0x06 | ldftn | Push a pointer to a method |
0xfe 0x07 | ldvirtftn | Push address of virtual method mthd on the stack |
0xfe 0x09 | ldarg | Load argument numbered num onto stack. |
0xfe 0x0a | ldarga | fetch the address of argument argNum. |
0xfe 0x0b | starg | Store a value to the argument numbered num |
0xfe 0x0c | ldloc | Load local variable of index indx onto stack. |
0xfe 0x0d | ldloca | Load address of local variable with index indx |
0xfe 0x0e | stloc | Pop value from stack into local variable indx. |
0xfe 0x0f | localloc | Allocate space from the local memory pool. |
0xfe 0x11 | endfilter | End filter clause of SEH exception handling |
0xfe 0x12 | unaligned. | Subsequent pointer instruction may be unaligned |
0xfe 0x13 | volatile. | Subsequent pointer reference is volatile |
0xfe 0x14 | tail. | Subsequent call terminates current method |
0xfe 0x15 | initobj | Initialize a value type |
0xfe 0x17 | cpblk | Copy data from memory to memory |
0xfe 0x18 | initblk | Set a block of memory to a given byte |
0xfe 0x1a | rethrow | Rethrow the current exception |
0xfe 0x1c | sizeof | Push the size, in bytes, of a value type as a unsigned int32 |
0xfe 0x1d | refanytype | Push the type token stored in a typed reference |