| Opcode | Instruction | Description | 
|---|
| 0x58 |  | Add two values, returning a new value. | 
| 0xD6 |  | Add signed integer values with overflow check. | 
| 0xD7 |  | Add unsigned integer values with overflow check. | 
| 0x5F |  | Bitwise AND of two integral values, returns an integral value. | 
| 0xFE 0x00 |  | Return argument list handle for the current method. | 
| 0x3B |  | Branch to target if equal. | 
| 0x2E |  | Branch to target if equal, short form. | 
| 0x3C |  | Branch to target if greater than or equal to. | 
| 0x2F |  | Branch to target if greater than or equal to, short form. | 
| 0x41 |  | Branch to target if greater than or equal to (unsigned or unordered). | 
| 0x34 |  | Branch to target if greater than or equal to (unsigned or unordered), short form | 
| 0x3D |  | Branch to target if greater than. | 
| 0x30 |  | Branch to target if greater than, short form. | 
| 0x42 |  | Branch to target if greater than (unsigned or unordered). | 
| 0x35 |  | Branch to target if greater than (unsigned or unordered), short form. | 
| 0x3E |  | Branch to target if less than or equal to. | 
| 0x31 |  | Branch to target if less than or equal to, short form. | 
| 0x43 |  | Branch to target if less than or equal to (unsigned or unordered). | 
| 0x36 |  | Branch to target if less than or equal to (unsigned or unordered), short form | 
| 0x3F |  | Branch to target if less than. | 
| 0x32 |  | Branch to target if less than, short form. | 
| 0x44 |  | Branch to target if less than (unsigned or unordered). | 
| 0x37 |  | Branch to target if less than (unsigned or unordered), short form. | 
| 0x40 |  | Branch to target if unequal or unordered. | 
| 0x33 |  | Branch to target if unequal or unordered, short form. | 
| 0x8C |  | Convert a boxable value to its boxed form | 
| 0x38 |  | Branch to target. | 
| 0x2B |  | Branch to target, short form. | 
| 0x01 |  | Inform a debugger that a breakpoint has been reached. | 
| 0x39 |  | Branch to target if value is zero (false). | 
| 0x2C | 
brfalse.s <int8 (target)>
 | Branch to target if value is zero (false), short form. | 
| 0x3A |  | Branch to target if value is a non-null object reference (alias for brtrue). | 
| 0x2D |  | Branch to target if value is a non-null object reference, short form (alias for brtrue.s). | 
| 0x39 |  | Branch to target if value is null (alias for brfalse). | 
| 0x2C |  | Branch to target if value is null (alias for brfalse.s), short form. | 
| 0x3A |  | Branch to target if value is non-zero (true). | 
| 0x2D |  | Branch to target if value is non-zero (true), short form. | 
| 0x39 |  | Branch to target if value is zero (alias for brfalse). | 
| 0x2C |  | Branch to target if value is zero (alias for brfalse.s), short form. | 
| 0x28 |  | Call method described by method. | 
| 0x29 |  | Call method indicated on the stack with arguments described by callsitedescr. | 
| 0x6F |  | Call a method associated with an object. | 
| 0x74 |  | Cast obj to class. | 
| 0xFE 0x01 |  | Push 1 (of type int32) if value1 equals value2, else push 0. | 
| 0xFE 0x02 |  | Push 1 (of type int32) if value1 > value2, else push 0. | 
| 0xFE 0x03 |  | Push 1 (of type int32) if value1 > value2, unsigned or unordered, else push 0. | 
| 0xC3 |  | Throw ArithmeticException if value is not a finite number. | 
| 0xFE 0x04 |  | Push 1 (of type int32) if value1 < value2, else push 0. | 
| 0xFE 0x05 |  | Push 1 (of type int32) if value1 < value2, unsigned or unordered, else push 0. | 
| 0xFE 0x16 |  | Call a virtual method on a type constrained to be type T | 
| 0xD3 |  | Convert to native int, pushing native int on stack. | 
| 0x67 |  | Convert to int8, pushing int32 on stack. | 
| 0x68 |  | Convert to int16, pushing int32 on stack. | 
| 0x69 |  | Convert to int32, pushing int32 on stack. | 
| 0x6A |  | Convert to int64, pushing int64 on stack. | 
| 0xD4 |  | Convert to a native int (on the stack as native int) and throw an exception on overflow. | 
| 0x8A |  | Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow. | 
| 0xB3 |  | Convert to an int8 (on the stack as int32) and throw an exception on overflow. | 
| 0x82 |  | Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow. | 
| 0xB5 |  | Convert to an int16 (on the stack as int32) and throw an exception on overflow. | 
| 0x83 |  | Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow. | 
| 0xB7 |  | Convert to an int32 (on the stack as int32) and throw an exception on overflow. | 
| 0x84 |  | Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow. | 
| 0xB9 |  | Convert to an int64 (on the stack as int64) and throw an exception on overflow. | 
| 0x85 |  | Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow. | 
| 0xD5 |  | Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow. | 
| 0x8B |  | Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow. | 
| 0xB4 |  | Convert to an unsigned int8 (on the stack as int32) and throw an exception on overflow. | 
| 0x86 |  | Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow. | 
| 0xB6 |  | Convert to an unsigned int16 (on the stack as int32) and throw an exception on overflow. | 
| 0x87 |  | Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow. | 
| 0xB8 |  | Convert to an unsigned int32 (on the stack as int32) and throw an exception on overflow. | 
| 0x88 |  | Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow. | 
| 0xBA |  | Convert to an unsigned int64 (on the stack as int64) and throw an exception on overflow. | 
| 0x89 |  | Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow. | 
| 0x76 |  | Convert unsigned integer to floating-point, pushing F on stack. | 
| 0x6B |  | Convert to float32, pushing F on stack. | 
| 0x6C |  | Convert to float64, pushing F on stack. | 
| 0xE0 |  | Convert to native unsigned int, pushing native int on stack. | 
| 0xD2 |  | Convert to unsigned int8, pushing int32 on stack. | 
| 0xD1 |  | Convert to unsigned int16, pushing int32 on stack. | 
| 0x6D |  | Convert to unsigned int32, pushing int32 on stack. | 
| 0x6E |  | Convert to unsigned int64, pushing int64 on stack. | 
| 0xFE 0x17 |  | Copy data from memory to memory. | 
| 0x70 |  | Copy a value type from src to dest. | 
| 0x5B |  | Divide two values to return a quotient or floating-point result. | 
| 0x5C |  | Divide two values, unsigned, returning a quotient. | 
| 0x25 |  | Duplicate the value on the top of the stack. | 
| 0xDC |  | End fault clause of an exception block. | 
| 0xFE 0x11 |  | End an exception handling filter clause. | 
| 0xDC |  | End finally clause of an exception block. | 
| 0x4C |  | Indirect load value of type unsigned int64 as int64 on the stack (alias for ldind.i8). | 
| 0xFE 0x18 |  | Set all bytes in a block of memory to a given byte value. | 
| 0xFE 0x15 |  | Initialize the value at address dest. | 
| 0x75 |  | Test if obj is an instance of class, returning null or an instance of that class or interface. | 
| 0x27 |  | Exit current method and jump to the specified method. | 
| 0xFE 0x09 |  | Load argument numbered num onto the stack. | 
| 0x02 |  | Load argument 0 onto the stack. | 
| 0x03 |  | Load argument 1 onto the stack. | 
| 0x04 |  | Load argument 2 onto the stack. | 
| 0x05 |  | Load argument 3 onto the stack. | 
| 0x0E |  | Load argument numbered num onto the stack, short form. | 
| 0xFE 0x0A |  | Fetch the address of argument argNum. | 
| 0x0F | 
ldarga.s <uint8 (argNum)>
 | Fetch the address of argument argNum, short form. | 
| 0x20 |  | Push num of type int32 onto the stack as int32. | 
| 0x16 |  | Push 0 onto the stack as int32. | 
| 0x17 |  | Push 1 onto the stack as int32. | 
| 0x18 |  | Push 2 onto the stack as int32. | 
| 0x19 |  | Push 3 onto the stack as int32. | 
| 0x1A |  | Push 4 onto the stack as int32. | 
| 0x1B |  | Push 5 onto the stack as int32. | 
| 0x1C |  | Push 6 onto the stack as int32. | 
| 0x1D |  | Push 7 onto the stack as int32. | 
| 0x1E |  | Push 8 onto the stack as int32. | 
| 0x15 |  | Push -1 onto the stack as int32. | 
| 0x15 |  | Push -1 of type int32 onto the stack as int32 (alias for ldc.i4.m1). | 
| 0x1F |  | Push num onto the stack as int32, short form. | 
| 0x21 |  | Push num of type int64 onto the stack as int64. | 
| 0x22 |  | Push num of type float32 onto the stack as F. | 
| 0x23 |  | Push num of type float64 onto the stack as F. | 
| 0xA3 |  | Load the element at index onto the top of the stack. | 
| 0x97 |  | Load the element with type native int at index onto the top of the stack as a native int. | 
| 0x90 |  | Load the element with type int8 at index onto the top of the stack as an int32. | 
| 0x92 |  | Load the element with type int16 at index onto the top of the stack as an int32. | 
| 0x94 |  | Load the element with type int32 at index onto the top of the stack as an int32. | 
| 0x96 |  | Load the element with type int64 at index onto the top of the stack as an int64. | 
| 0x98 |  | Load the element with type float32 at index onto the top of the stack as an F | 
| 0x99 |  | Load the element with type float64 at index onto the top of the stack as an F. | 
| 0x9A |  | Load the element at index onto the top of the stack as an O. The type of the O is the same as the element type of the array pushed on the CIL stack. | 
| 0x91 |  | Load the element with type unsigned int8 at index onto the top of the stack as an int32. | 
| 0x93 |  | Load the element with type unsigned int16 at index onto the top of the stack as an int32. | 
| 0x95 |  | Load the element with type unsigned int32 at index onto the top of the stack as an int32. | 
| 0x96 |  | Load the element with type unsigned int64 at index onto the top of the stack as an int64 (alias for ldelem.i8). | 
| 0x8F |  | Load the address of element at index onto the top of the stack. | 
| 0x7B |  | Push the value of field of object (or value type) obj, onto the stack. | 
| 0x7C |  | Push the address of field of object obj on the stack. | 
| 0xFE 0x06 |  | Push a pointer to a method referenced by method, on the stack. | 
| 0x4D |  | Indirect load value of type native int as native int on the stack | 
| 0x46 |  | Indirect load value of type int8 as int32 on the stack. | 
| 0x48 |  | Indirect load value of type int16 as int32 on the stack. | 
| 0x4A |  | Indirect load value of type int32 as int32 on the stack. | 
| 0x4C |  | Indirect load value of type int64 as int64 on the stack. | 
| 0x4E |  | Indirect load value of type float32 as F on the stack. | 
| 0x4F |  | Indirect load value of type float64 as F on the stack. | 
| 0x50 |  | Indirect load value of type object ref as O on the stack. | 
| 0x47 |  | Indirect load value of type unsigned int8 as int32 on the stack | 
| 0x49 |  | Indirect load value of type unsigned int16 as int32 on the stack | 
| 0x4B |  | Indirect load value of type unsigned int32 as int32 on the stack | 
| 0x8E |  | Push the length (of type native unsigned int) of array on the stack. | 
| 0xFE 0x0C |  | Load local variable of index indx onto stack. | 
| 0x06 |  | Load local variable 0 onto stack. | 
| 0x07 |  | Load local variable 1 onto stack. | 
| 0x08 |  | Load local variable 2 onto stack. | 
| 0x09 |  | Load local variable 3 onto stack. | 
| 0x11 |  | Load local variable of index indx onto stack, short form. | 
| 0xFE 0x0D |  | Load address of local variable with index indx. | 
| 0x12 |  | Load address of local variable with index indx, short form. | 
| 0x14 |  | Push a null reference on the stack. | 
| 0x71 |  | Copy the value stored at address src to the stack. | 
| 0x7E |  | Push the value of field on the stack. | 
| 0x7F |  | Push the address of the static field, field, on the stack. | 
| 0x72 |  | Push a string object for the literal string. | 
| 0xD0 |  | Convert metadata token to its runtime representation. | 
| 0xFE 0x07 |  | Push address of virtual method on the stack. | 
| 0xDD |  | Exit a protected region of code. | 
| 0xDE |  | Exit a protected region of code, short form. | 
| 0xFE 0x0F |  | Allocate space from the local memory pool. | 
| 0xC6 |  | Push a typed reference to ptr of type class onto the stack. | 
| 0x5A |  | Multiply values. | 
| 0xD8 |  | Multiply signed integer values. Signed result shall fit in same size | 
| 0xD9 |  | Multiply unsigned integer values. Unsigned result shall fit in same size | 
| 0x65 |  | Negate value. | 
| 0x8D |  | Create a new array with elements of type etype. | 
| 0x73 |  | Allocate an uninitialized object or value type and call ctor. | 
| 0xFE 0x19 | 
no. {
 typecheck,
 rangecheck,
 nullcheck
 }
 | The specified fault check(s) normally performed as part of the execution of the subsequent instruction can/shall be skipped. | 
| 0x00 |  | Do nothing (No operation). | 
| 0x66 |  | Bitwise complement (logical not). | 
| 0x60 |  | Bitwise OR of two integer values, returns an integer. | 
| 0x26 |  | Pop value from the stack. | 
| 0xFE 0x1E |  | Specify that the subsequent array address operation performs no type check at runtime, and that it returns a controlled-mutability managed pointer | 
| 0xFE 0x1D |  | Push the type token stored in a typed reference. | 
| 0xC2 |  | Push the address stored in a typed reference. | 
| 0x5D |  | Remainder when dividing one value by another. | 
| 0x5E |  | Remainder when dividing one unsigned value by another. | 
| 0x2A |  | Return from method, possibly with a value. | 
| 0xFE 0x1A |  | Rethrow the current exception. | 
| 0x62 |  | Shift an integer left (shifting in zeros), return an integer. | 
| 0x63 |  | Shift an integer right (shift in sign), return an integer. | 
| 0x64 |  | Shift an integer right (shift in zero), return an integer. | 
| 0xFE 0x1C |  | Push the size, in bytes, of a type as an unsigned int32. | 
| 0xFE 0x0B |  | Store value to the argument numbered num. | 
| 0x10 |  | Store value to the argument numbered num, short form. | 
| 0xA4 |  | Replace array element at index with the value on the stack | 
| 0x9B |  | Replace array element at index with the i value on the stack. | 
| 0x9C |  | Replace array element at index with the int8 value on the stack. | 
| 0x9D |  | Replace array element at index with the int16 value on the stack. | 
| 0x9E |  | Replace array element at index with the int32 value on the stack. | 
| 0x9F |  | Replace array element at index with the int64 value on the stack. | 
| 0xA0 |  | Replace array element at index with the float32 value on the stack. | 
| 0xA1 |  | Replace array element at index with the float64 value on the stack. | 
| 0xA2 |  | Replace array element at index with the ref value on the stack. | 
| 0x7D |  | Replace the value of field of the object obj with value. | 
| 0xDF |  | Store value of type native int into memory at address | 
| 0x52 |  | Store value of type int8 into memory at address | 
| 0x53 |  | Store value of type int16 into memory at address | 
| 0x54 |  | Store value of type int32 into memory at address | 
| 0x55 |  | Store value of type int64 into memory at address | 
| 0x56 |  | Store value of type float32 into memory at address | 
| 0x57 |  | Store value of type float64 into memory at address | 
| 0x51 |  | Store value of type object ref (type O) into memory at address | 
| 0xFE 0x0E |  | Pop a value from stack into local variable indx. | 
| 0x0A |  | Pop a value from stack into local variable 0. | 
| 0x0B |  | Pop a value from stack into local variable 1. | 
| 0x0C |  | Pop a value from stack into local variable 2. | 
| 0x0D |  | Pop a value from stack into local variable 3. | 
| 0x13 |  | Pop a value from stack into local variable indx, short form. | 
| 0x81 |  | Store a value of type typeTok at an address. | 
| 0x80 |  | Replace the value of field with val. | 
| 0x59 |  | Subtract value2 from value1, returning a new value. | 
| 0xDA |  | Subtract native int from a native int. Signed result shall fit in same size | 
| 0xDB |  | Subtract native unsigned int from a native unsigned int. Unsigned result shall fit in same size. | 
| 0x45 | 
switch <uint32, int32,int32 (t1..tN)>
 | Jump to one of n values. | 
| 0xFE 0x14 |  | Subsequent call terminates current method | 
| 0x7A |  | Throw an exception. | 
| 0xFE 0x12 |  | Subsequent pointer instruction might be unaligned. | 
| 0x79 |  | Extract a value-type from obj, its boxed representation. | 
| 0xA5 |  | Extract a value-type from obj, its boxed representation | 
| 0xFE 0x13 |  | Subsequent pointer reference is volatile. | 
| 0x61 |  | Bitwise XOR of integer values, returns an integer. |