Table of Contents

Enum CilCode

Namespace
AsmResolver.PE.DotNet.Cil
Assembly
AsmResolver.PE.dll

Provides members defining all possible numerical values for each CIL operation code.

public enum CilCode : ushort
Extension Methods

Fields

Add = 88

Add two values, returning a new value.

Add_Ovf = 214

Add signed integer values with overflow check.

Add_Ovf_Un = 215

Add unsigned integer values with overflow check.

And = 95

Bitwise AND of two integral values, returns an integral value.

Arglist = 65024

Return argument list handle for the current method.

Beq = 59

Branch to target if equal.

Beq_S = 46

Branch to target if equal, short form.

Bge = 60

Branch to target if greater than or equal to.

Bge_S = 47

Branch to target if greater than or equal to, short form.

Bge_Un = 65

Branch to target if greater than or equal to (unsigned or unordered).

Bge_Un_S = 52

Branch to target if greater than or equal to (unsigned or unordered), short form.

Bgt = 61

Branch to target if greater than.

Bgt_S = 48

Branch to target if greater than, short form.

Bgt_Un = 66

Branch to target if greater than (unsigned or unordered).

Bgt_Un_S = 53

Branch to target if greater than (unsigned or unordered), short form.

Ble = 62

Branch to target if less than or equal to.

Ble_S = 49

Branch to target if less than or equal to, short form.

Ble_Un = 67

Branch to target if less than or equal to (unsigned or unordered).

Ble_Un_S = 54

Branch to target if less than or equal to (unsigned or unordered), short form.

Blt = 63

Branch to target if less than.

Blt_S = 50

Branch to target if less than, short form.

Blt_Un = 68

Branch to target if less than (unsigned or unordered).

Blt_Un_S = 55

Branch to target if less than (unsigned or unordered), short form.

Bne_Un = 64

Branch to target if unequal or unordered.

Bne_Un_S = 51

Branch to target if unequal or unordered, short form.

Box = 140

Convert a boxable value to its boxed form.

Br = 56

Branch to target.

Br_S = 43

Branch to target, short form.

Break = 1

Inform a debugger that a breakpoint has been reached.

Brfalse = 57

Branch to target if value is zero (false).

Brfalse_S = 44

Branch to target if value is zero (false), short form.

Brtrue = 58

Branch to target if value is non-zero (true).

Brtrue_S = 45

Branch to target if value is non-zero (true), short form.

Call = 40

Call method described by method.

Calli = 41

Call method indicated on the stack with arguments described by a calling convention.

Callvirt = 111

Call a method associated with an object.

Castclass = 116

Cast obj to class.

Ceq = 65025

Push 1 (of type int32) if value1 equals value2, else push 0.

Cgt = 65026

Push 1 (of type int32) if value1 greater that value2, else push 0.

Cgt_Un = 65027

Push 1 (of type int32) if value1 greater that value2, unsigned or unordered, else push 0.

Ckfinite = 195

Throw ArithmeticException if value is not a finite number.

Clt = 65028

Push 1 (of type int32) if value1 lower than value2, else push 0.

Clt_Un = 65029

Push 1 (of type int32) if value1 lower than value2, unsigned or unordered, else push 0.

Constrained = 65046

Call a virtual method on a type constrained to be type T.

Conv_I = 211

Convert to native int, pushing native int on stack.

Conv_I1 = 103

Convert to int8, pushing int32 on stack.

Conv_I2 = 104

Convert to int16, pushing int32 on stack.

Conv_I4 = 105

Convert to int32, pushing int32 on stack.

Conv_I8 = 106

Convert to int64, pushing int64 on stack.

Conv_Ovf_I = 212

Convert to a native int (on the stack as native int) and throw an exception on overflow.

Conv_Ovf_I1 = 179

Convert to an int8 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I1_Un = 130

Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I2 = 181

Convert to an int16 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I2_Un = 131

Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I4 = 183

Convert to an int32 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I4_Un = 132

Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_I8 = 185

Convert to an int64 (on the stack as int64) and throw an exception on overflow.

Conv_Ovf_I8_Un = 133

Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow.

Conv_Ovf_I_Un = 138

Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow.

Conv_Ovf_U = 213

Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow.

Conv_Ovf_U1 = 180

Convert to an unsigned int8 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U1_Un = 134

Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U2 = 182

Convert to an unsigned int16 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U2_Un = 135

Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U4 = 184

Convert to an unsigned int32 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U4_Un = 136

Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow.

Conv_Ovf_U8 = 186

Convert to an unsigned int64 (on the stack as int64) and throw an exception on overflow.

Conv_Ovf_U8_Un = 137

Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow.

Conv_Ovf_U_Un = 139

Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow.

Conv_R4 = 107

Convert to float32, pushing F on stack.

Conv_R8 = 108

Convert to float64, pushing F on stack.

Conv_R_Un = 118

Convert unsigned integer to floating-point, pushing F on stack.

Conv_U = 224

Convert to native unsigned int, pushing native int on stack.

Conv_U1 = 210

Convert to unsigned int8, pushing int32 on stack.

Conv_U2 = 209

Convert to unsigned int16, pushing int32 on stack.

Conv_U4 = 109

Convert to unsigned int32, pushing int32 on stack.

Conv_U8 = 110

Convert to unsigned int64, pushing int64 on stack.

Cpblk = 65047

Copy data from memory to memory.

Cpobj = 112

Copy a value type from src to dest.

Div = 91

Divide two values to return a quotient or floating-point result.

Div_Un = 92

Divide two values, unsigned, returning a quotient.

Dup = 37

Duplicate the value on the top of the stack.

Endfilter = 65041

End an exception handling filter clause.

Endfinally = 220

End finally clause of an exception block.

Initblk = 65048

Set all bytes in a block of memory to a given byte value.

Initobj = 65045

Initialize the value at address dest.

Isinst = 117

Test if obj is an instance of class, returning null or an instance of that class or interface.

Jmp = 39

Exit current method and jump to the specified method.

Ldarg = 65033

Load argument onto the stack.

Ldarg_0 = 2

Load argument 0 onto the stack.

Ldarg_1 = 3

Load argument 1 onto the stack.

Ldarg_2 = 4

Load argument 2 onto the stack.

Ldarg_3 = 5

Load argument 3 onto the stack.

Ldarg_S = 14

Load argument onto the stack, short form.

Ldarga = 65034

Fetch the address of the argument indexed.

Ldarga_S = 15

Fetch the address of argument, short form.

Ldc_I4 = 32

Push num of type int32 onto the stack as int32.

Ldc_I4_0 = 22

Push 0 onto the stack as int32.

Ldc_I4_1 = 23

Push 1 onto the stack as int32.

Ldc_I4_2 = 24

Push 2 onto the stack as int32.

Ldc_I4_3 = 25

Push 3 onto the stack as int32.

Ldc_I4_4 = 26

Push 4 onto the stack as int32.

Ldc_I4_5 = 27

Push 5 onto the stack as int32.

Ldc_I4_6 = 28

Push 6 onto the stack as int32.

Ldc_I4_7 = 29

Push 7 onto the stack as int32.

Ldc_I4_8 = 30

Push 8 onto the stack as int32.

Ldc_I4_M1 = 21

Push -1 onto the stack as int32.

Ldc_I4_S = 31

Push num onto the stack as int32, short form.

Ldc_I8 = 33

Push num of type int64 onto the stack as int64.

Ldc_R4 = 34

Push num of type float32 onto the stack as F.

Ldc_R8 = 35

Push num of type float64 onto the stack as F.

Ldelem = 163

Load the element at index onto the top of the stack.

Ldelem_I = 151

Load the element with type native int at index onto the top of the stack as a native int.

Ldelem_I1 = 144

Load the element with type int8 at index onto the top of the stack as an int32.

Ldelem_I2 = 146

Load the element with type int16 at index onto the top of the stack as an int32.

Ldelem_I4 = 148

Load the element with type int32 at index onto the top of the stack as an int32.

Ldelem_I8 = 150

Load the element with type signed or unsigned int64 at index onto the top of the stack as a signed int64.

Ldelem_R4 = 152

Load the element with type float32 at index onto the top of the stack as an F.

Ldelem_R8 = 153

Load the element with type float64 at index onto the top of the stack as an F.

Ldelem_Ref = 154

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.

Ldelem_U1 = 145

Load the element with type unsigned int8 at index onto the top of the stack as an int32.

Ldelem_U2 = 147

Load the element with type unsigned int16 at index onto the top of the stack as an int32.

Ldelem_U4 = 149

Load the element with type unsigned int32 at index onto the top of the stack as an int32.

Ldelema = 143

Load the address of element at index onto the top of the stack.

Ldfld = 123

Push the value of field of object (or value type) obj, onto the stack.

Ldflda = 124

Push the address of field of object obj on the stack.

Ldftn = 65030

Push a pointer to a method referenced by method, on the stack.

Ldind_I = 77

Indirect load value of type native int as native int on the stack.

Ldind_I1 = 70

Indirect load value of type int8 as int32 on the stack.

Ldind_I2 = 72

Indirect load value of type int16 as int32 on the stack.

Ldind_I4 = 74

Indirect load value of type int32 as int32 on the stack.

Ldind_I8 = 76

Indirect load value of type signed or unsigned int64 as signed int64 on the stack.

Ldind_R4 = 78

Indirect load value of type float32 as F on the stack.

Ldind_R8 = 79

Indirect load value of type float64 as F on the stack.

Ldind_Ref = 80

Indirect load value of type object ref as O on the stack.

Ldind_U1 = 71

Indirect load value of type unsigned int8 as int32 on the stack.

Ldind_U2 = 73

Indirect load value of type unsigned int16 as int32 on the stack.

Ldind_U4 = 75

Indirect load value of type unsigned int32 as int32 on the stack.

Ldlen = 142

Push the length (of type native unsigned int) of array on the stack.

Ldloc = 65036

Load local variable of index onto stack.

Ldloc_0 = 6

Load local variable 0 onto stack.

Ldloc_1 = 7

Load local variable 1 onto stack.

Ldloc_2 = 8

Load local variable 2 onto stack.

Ldloc_3 = 9

Load local variable 3 onto stack.

Ldloc_S = 17

Load local variable of index onto stack, short form.

Ldloca = 65037

Load address of local variable with index index.

Ldloca_S = 18

Load address of local variable with index, short form.

Ldnull = 20

Push a null reference on the stack.

Ldobj = 113

Copy the value stored at address src to the stack.

Ldsfld = 126

Push the value of the static field on the stack.

Ldsflda = 127

Push the address of the static field, field, on the stack.

Ldstr = 114

Push a string object for the literal string.

Ldtoken = 208

Convert metadata token to its runtime representation.

Ldvirtftn = 65031

Push address of virtual method on the stack.

Leave = 221

Exit a protected region of code.

Leave_S = 222

Exit a protected region of code, short form.

Localloc = 65039

Allocate space from the local memory pool.

Mkrefany = 198

Push a typed reference to ptr of type class onto the stack.

Mul = 90

Multiply values.

Mul_Ovf = 216

Multiply signed integer values. Signed result shall fit in same size.

Mul_Ovf_Un = 217

Multiply unsigned integer values. Unsigned result shall fit in same size.

Neg = 101

Negate value.

Newarr = 141

Create a new array with elements of type etype.

Newobj = 115

Allocate an uninitialized object or value type and call ctor.

Nop = 0

Do nothing (No operation).

Not = 102

Bitwise complement (logical not).

Or = 96

Bitwise OR of two integer values, returns an integer.

Pop = 38

Pop value from the stack.

Prefix1 = 254

This prefix opcode is reserved and currently not implemented in the runtime

Prefix2 = 253

This prefix opcode is reserved and currently not implemented in the runtime

Prefix3 = 252

This prefix opcode is reserved and currently not implemented in the runtime

Prefix4 = 251

This prefix opcode is reserved and currently not implemented in the runtime

Prefix5 = 250

This prefix opcode is reserved and currently not implemented in the runtime

Prefix6 = 249

This prefix opcode is reserved and currently not implemented in the runtime

Prefix7 = 248

This prefix opcode is reserved and currently not implemented in the runtime

Prefixref = 255

This prefix opcode is reserved and currently not implemented in the runtime

Readonly = 65054

Specify that the subsequent array address operation performs no type check at runtime, and that it returns a controlled-mutability managed pointer.

Refanytype = 65053

Push the type token stored in a typed reference.

Refanyval = 194

Push the address stored in a typed reference.

Rem = 93

Remainder when dividing one value by another.

Rem_Un = 94

Remainder when dividing one unsigned value by another.

Ret = 42

Return from method, possibly with a value.

Rethrow = 65050

Rethrow the current exception.

Shl = 98

Shift an integer left (shifting in zeros), return an integer.

Shr = 99

Shift an integer right (shift in sign), return an integer.

Shr_Un = 100

Shift an integer right (shift in zero), return an integer.

Sizeof = 65052

Push the size, in bytes, of a type as an unsigned int32.

Starg = 65035

Store value to the argument.

Starg_S = 16

Store value to the argument numbered, short form.

Stelem = 164

Replace array element at index with the value on the stack.

Stelem_I = 155

Replace array element at index with the i value on the stack.

Stelem_I1 = 156

Replace array element at index with the int8 value on the stack.

Stelem_I2 = 157

Replace array element at index with the int16 value on the stack.

Stelem_I4 = 158

Replace array element at index with the int32 value on the stack.

Stelem_I8 = 159

Replace array element at index with the int64 value on the stack.

Stelem_R4 = 160

Replace array element at index with the float32 value on the stack.

Stelem_R8 = 161

Replace array element at index with the float64 value on the stack.

Stelem_Ref = 162

Replace array element at index with the ref value on the stack.

Stfld = 125

Replace the value of field of the object obj with value.

Stind_I = 223

Store value of type native int into memory at address.

Stind_I1 = 82

Store value of type int8 into memory at address.

Stind_I2 = 83

Store value of type int16 into memory at address.

Stind_I4 = 84

Store value of type int32 into memory at address.

Stind_I8 = 85

Store value of type int64 into memory at address.

Stind_R4 = 86

Store value of type float32 into memory at address.

Stind_R8 = 87

Store value of type float64 into memory at address.

Stind_Ref = 81

Store value of type object ref (type O) into memory at address.

Stloc = 65038

Pop a value from stack into local variable index.

Stloc_0 = 10

Pop a value from stack into local variable 0.

Stloc_1 = 11

Pop a value from stack into local variable 1.

Stloc_2 = 12

Pop a value from stack into local variable 2.

Stloc_3 = 13

Pop a value from stack into local variable 3.

Stloc_S = 19

Pop a value from stack into local variable with index, short form.

Stobj = 129

Store a value at an address.

Stsfld = 128

Replace the value of the static field.

Sub = 89

Subtract value2 from value1, returning a new value.

Sub_Ovf = 218

Subtract native int from a native int. Signed result shall fit in same size.

Sub_Ovf_Un = 219

Subtract native unsigned int from a native unsigned int. Unsigned result shall fit in same size.

Switch = 69

Jump to one of n values.

Tailcall = 65044

Subsequent call terminates current method.

Throw = 122

Throw an exception.

Unaligned = 65042

Subsequent pointer instruction might be unaligned.

Unbox = 121

Extract a value-type from obj, its boxed representation, and push a controlled-mutability managed pointer to it to the top of the stack.

Unbox_Any = 165

Extract a value-type from obj, its boxed representation, and copy to the top of the stack.

Volatile = 65043

Subsequent pointer reference is volatile.

Xor = 97

Bitwise XOR of integer values, returns an integer.

Remarks