SoFunction
Updated on 2025-03-07

.NET framework intermediate language IL instruction collection

name illustrate
Add Add two values ​​and push the result onto the calculation stack.
Add two integers together, perform an overflow check, and push the result to the calculation stack.
Add two unsigned integer values, perform an overflow check, and push the result to the calculation stack.
And Computes the bitwise "AND" of two values ​​and pushes the result onto the calculation stack.
Arglist Returns an unmanaged pointer to the parameter list of the current method.
Beq If the two values ​​are equal, control is transferred to the target instruction.
If the two values ​​are equal, control is transferred to the target instruction (short format).
Bge If the first value is greater than or equal to the second value, control is transferred to the target instruction.
If the first value is greater than or equal to the second value, control is transferred to the target instruction (short format).
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is greater than the second value, control is transferred to the target instruction.
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is greater than the second value, control is transferred to the target instruction (short format).
Bgt If the first value is greater than the second value, control is transferred to the target instruction.
If the first value is greater than the second value, control is transferred to the target instruction (short format).
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is greater than the second value, control is transferred to the target instruction.
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is greater than the second value, control is transferred to the target instruction (short format).
Ble If the first value is less than or equal to the second value, control is transferred to the target instruction.
If the first value is less than or equal to the second value, control is transferred to the target instruction (short format).
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is less than or equal to the second value, control is transferred to the target instruction.
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is less than or equal to the second value, control is transferred to the target instruction (short format).
Blt If the first value is less than the second value, control is transferred to the target instruction.
If the first value is less than the second value, control is transferred to the target instruction (short format).
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is less than the second value, control is transferred to the target instruction.
When comparing unsigned integer values ​​or unsorted floating point values, if the first value is less than the second value, control is transferred to the target instruction (short format).
When two unsigned integer values ​​or unsorted floating point values ​​are not equal, control is transferred to the target instruction.
When two unsigned integer values ​​or unsorted floating point values ​​are not equal, control is transferred to the target instruction (short format).
Box Converts a value class to an object reference (type O).
Br Unconditionally transfer control to the target instruction.
Unconditionally transfer control to the target instruction (short format).
Break Send a signal to the Common Language Structure (CLI) to inform the debugger that a breakpoint has hit.
Brfalse If value is false, empty reference (Nothing in Visual Basic), or zero, control is transferred to the target instruction.
If value is false, empty reference, or zero, control is transferred to the target instruction.
Brtrue If value is true, non-null, or non-zero, control is transferred to the target instruction.
If value is true, non-null, or non-zero, control is transferred to the target instruction (short format).
Call Calls a method indicated by the passed method specifier.
Calli The method indicated on the calculation stack (as a pointer to the entry point) is called by calling the parameters described in the convention.
Callvirt Call a late binding method on the object and push the return value to the calculation stack.
Castclass Try to convert the object passed by the reference to the specified class.
Ceq Compare two values. If the two values ​​are equal, the integer value 1 (int32) is pushed to the calculation stack; otherwise, 0 (int32) is pushed to the calculation stack.
Cgt Compare two values. If the first value is greater than the second value, the integer value 1 (int32) is pushed to the calculation stack; otherwise, 0 (int32) is pushed to the calculation stack.
Compare two unsigned or unsorted values. If the first value is greater than the second value, the integer value 1 (int32) is pushed to the calculation stack; otherwise, 0 (int32) is pushed to the calculation stack.
Ckfinite If the value is not a finite number, an ArithmeticException is raised.
Clt Compare two values. If the first value is less than the second value, the integer value 1 (int32) is pushed to the calculation stack; otherwise, 0 (int32) is pushed to the calculation stack.
Compare unsigned or unsorted values ​​value1 and value2. If value1 is less than value2, the integer value 1 (int32) is pushed to the calculation stack; otherwise, 0 (int32) is pushed to the calculation stack.
Constrained Constrain the type to which the virtual method is called.
Converts the value at the top of the compute stack to a native int.
Conv.I1 Convert the value at the top of the compute stack to int8 and then expand (filled) it to int32.
Conv.I2 Convert the value at the top of the compute stack to int16 and then expand (filled) it to int32.
Conv.I4 Converts the value at the top of the compute stack to int32.
Conv.I8 Converts the value at the top of the compute stack to int64.
Converts a signed value at the top of the compute stack to a signed native int and throws an OverflowException on overflow.
Converts an unsigned value at the top of the compute stack to a signed native int and throws an OverflowException on overflow.
.I1 Converts the signed value at the top of the compute stack to signed int8 and expands it to int32 and throws an OverflowException on overflow.
. Converts the unsigned value at the top of the compute stack to signed int8 and expands it to int32 and throws an OverflowException on overflow.
.I2 Converts the signed value at the top of the compute stack to signed int16 and expands it to int32, and throws an OverflowException on overflow.
. Converts the unsigned value at the top of the compute stack to signed int16 and expands it to int32, and throws an OverflowException on overflow.
.I4 Converts the signed value at the top of the compute stack to a signed int32 and throws an OverflowException on overflow.
. Converts an unsigned value at the top of the compute stack to a signed int32 and throws an OverflowException on overflow.
.I8 Converts the signed value at the top of the compute stack to a signed int64 and throws an OverflowException on overflow.
. Converts an unsigned value at the top of the compute stack to a signed int64 and throws an OverflowException on overflow.
Converts a signed value at the top of the compute stack to an unsigned native int and throws an OverflowException on overflow.
Converts an unsigned value at the top of the compute stack to an unsigned native int and throws an OverflowException on overflow.
.U1 Converts the signed value at the top of the compute stack to unsigned int8 and expands it to int32, and throws an OverflowException on overflow.
. Converts an unsigned value at the top of the compute stack to unsigned int8 and expands it to int32, and throws an OverflowException on overflow.
.U2 Converts the signed value at the top of the compute stack to unsigned int16 and expands it to int32, and throws an OverflowException on overflow.
. Converts the unsigned value at the top of the compute stack to unsigned int16 and expands it to int32, and throws an OverflowException on overflow.
.U4 Converts the signed value at the top of the compute stack to unsigned int32 and throws an OverflowException on overflow.
. Converts an unsigned value at the top of the compute stack to unsigned int32 and throws an OverflowException on overflow.
.U8 Converts the signed value at the top of the compute stack to unsigned int64 and throws an OverflowException on overflow.
. Converts an unsigned value at the top of the compute stack to unsigned int64 and throws an OverflowException on overflow.
Converts the unsigned integer value at the top of the calculation stack to float32.
Conv.R4 Converts the value at the top of the compute stack to float32.
Conv.R8 Converts the value at the top of the compute stack to float64.
Convert the value at the top of the compute stack to an unsigned native int and then expand it to a native int.
Conv.U1 Convert the value at the top of the compute stack to unsigned int8 and then expand it to int32.
Conv.U2 Convert the value at the top of the compute stack to unsigned int16 and then expand it to int32.
Conv.U4 Convert the value at the top of the compute stack to unsigned int32 and then expand it to int32.
Conv.U8 Convert the value at the top of the compute stack to unsigned int64 and expand it to int64.
Cpblk Copy the specified number of bytes from the source address to the destination address.
Cpobj Copy the value type at the address of the object (&, *, or native int type) to the address of the target object (&, *, or native int type).
Div Divide the two values ​​and push the result onto the calculation stack as floating point (type F) or quotient (type int32).
The two unsigned integer values ​​are divided and the result ( int32 ) is pushed onto the calculation stack.
Dup Copy the current topmost value on the compute stack and push the copy to the compute stack.
Endfilter Transfer control from the filter clause of the exception back to the common language structure (CLI) exception handler.
Endfinally Transfer control from the fault or finally clause of the exception block back to the common language structure (CLI) exception handler.
Initblk Initializes a specified block of memory located at a specific address to a given size and initial value.
Initobj Initializes each field of the value type at the specified address to 0 of the null reference or the appropriate primitive type.
Isinst Tests whether the object reference (type O) is an instance of a specific class.
Jmp Exit the current method and skip to the specified method.
Ldarg Loads the parameter (referenced by the specified index value) onto the stack.
Ldarg.0 Load the parameter indexed to 0 onto the calculation stack.
Ldarg.1 Load the parameter indexed to 1 onto the calculation stack.
Ldarg.2 Load the parameter indexed to 2 onto the calculation stack.
Ldarg.3 Load the parameter indexed to 3 onto the calculation stack.
Load the parameter (referenced by the specified short format index) onto the calculation stack.
Ldarga Load the parameter address onto the calculation stack.
Load parameter addresses onto the calculation stack in short format.
Ldc.I4 Push the provided value of type int32 as int32 onto the calculation stack.
Ldc.I4.0 Push the integer value 0 as int32 onto the calculation stack.
Ldc.I4.1 Push the integer value 1 as int32 onto the calculation stack.
Ldc.I4.2 Push the integer value 2 as int32 onto the calculation stack.
Ldc.I4.3 Push the integer value 3 as int32 onto the calculation stack.
Ldc.I4.4 Push the integer value 4 as int32 onto the calculation stack.
Ldc.I4.5 Push the integer value 5 as int32 onto the calculation stack.
Ldc.I4.6 Push the integer value 6 as int32 onto the calculation stack.
Ldc.I4.7 Push the integer value 7 as int32 onto the calculation stack.
Ldc.I4.8 Push the integer value 8 as int32 onto the calculation stack.
Ldc.I4.M1 Push the integer value -1 as int32 onto the calculation stack.
Ldc. Push the provided int8 value as int32 onto the calculation stack (short format).
Ldc.I8 Push the provided value of type int64 as int64 onto the calculation stack.
Ldc.R4 Push the provided value of type float32 as F (float) onto the calculation stack.
Ldc.R8 Push the provided value of type float64 as F (float) onto the calculation stack.
Ldelem Load elements from the specified array index to the top of the compute stack, as specified in the directive.
Load an element of type native int at the specified array index as native int to the top of the compute stack.
Ldelem.I1 Load an element of type int8 at the specified array index as int32 to the top of the calculation stack.
Ldelem.I2 Load an element of type int16 at the specified array index as int32 to the top of the calculation stack.
Ldelem.I4 Load an element of type int32 at the specified array index as int32 to the top of the calculation stack.
Ldelem.I8 Load an element of type int64 at the specified array index as int64 to the top of the calculation stack.
Ldelem.R4 Load an element of type float32 at the specified array index as F (floatpoint) to the top of the calculation stack.
Ldelem.R8 Load an element of type float64 at the index of the specified array as F (floatpoint) to the top of the calculation stack.
Load the element containing the object reference at the specified array index as O type (object reference) to the top of the calculation stack.
Ldelem.U1 Load an element of type unsigned int8 at the specified array index as int32 to the top of the compute stack.
Ldelem.U2 Load an element of type unsigned int16 at the index of the specified array to the top of the compute stack as int32.
Ldelem.U4 Load an element of type unsigned int32 at the specified array index as int32 to the top of the compute stack.
Ldelema Load the address of the array element located at the specified array index as a & type (managed pointer) to the top of the compute stack.
Ldfld Finds the value in the object that references the field currently on the calculation stack.
Ldflda Find the address in the object whose references the field currently located on the calculation stack.
Ldftn Push an unmanaged pointer (native int type) to native code that implements a specific method onto the compute stack.
Load the value of type native int indirectly on the compute stack as native int .
Ldind.I1 Load the value of type int8 indirectly as int32 on the calculation stack.
Ldind.I2 Load the value of type int16 indirectly as int32 on the calculation stack.
Ldind.I4 Load the value of type int32 indirectly on the calculation stack as int32.
Ldind.I8 Load the value of type int64 indirectly as int64 on the calculation stack.
Ldind.R4 Load the value of type float32 indirectly onto the calculation stack as F (float) type.
Ldind.R8 Load the value of type float64 indirectly onto the calculation stack as the F (float) type.
Load the object reference indirectly onto the calculation stack as an O (object reference) type.
Ldind.U1 Load the value of type unsigned int8 indirectly as int32 on the calculation stack.
Ldind.U2 Load the value of type unsigned int16 indirectly as int32 on the calculation stack.
Ldind.U4 Load the value of type unsigned int32 indirectly on the calculation stack as int32.
Ldlen Push the number of elements of a zero-based, one-dimensional array to the calculation stack.
Ldloc Load local variables at the specified index onto the calculation stack.
Ldloc.0 Load local variables at index 0 onto the calculation stack.
Ldloc.1 Load local variables at index 1 onto the calculation stack.
Ldloc.2 Load local variables at index 2 onto the calculation stack.
Ldloc.3 Load local variables at index 3 onto the calculation stack.
Load local variables at a specific index onto the calculation stack (short format).
Ldloca Load the address of the local variable located at a specific index onto the calculation stack.
Load the address of local variables located at a specific index onto the calculation stack (short format).
Ldnull Push an empty reference (type O) onto the compute stack.
Ldobj Copy the value type object pointed to by the address to the top of the calculation stack.
Ldsfld Push the value of the static field onto the calculation stack.
Ldsflda Push the address of the static field to the calculation stack.
Ldstr Push a new object reference to the string stored in the metadata.
Ldtoken Convert the metadata tag to its runtime representation and push it onto the compute stack.
Ldvirtftn Push an unmanaged pointer (native int type) to native code implementing a specific virtual method associated with the specified object to the compute stack.
Leave Exit the protected code area and unconditionally transfer control to a specific target instruction.
Exit the protected code area and unconditionally transfer control to the target instruction (abbreviation).
Localloc Allocate a specific number of bytes from the local dynamic memory pool and push the address of the first allocated byte (transient pointer, * type) to the compute stack.
Mkrefany Push a typed reference to a specific type instance onto the compute stack.
Mul Multiply the two values ​​and push the result onto the calculation stack.
Multiply two integer values, perform an overflow check, and push the result to the calculation stack.
Multiply two unsigned integer values, perform an overflow check, and push the result to the calculation stack.
Neg Perform inverting a value and push the result onto the calculation stack.
Newarr Push object references to a new zero-based one-dimensional array whose elements belong to a specific type onto the calculation stack.
Newobj Creates a new object or instance of value type and pushes an object reference (O type) onto the calculation stack.
Nop If the opcode is patched, the space is filled. Although processing cycles may be consumed, no meaningful operation is performed.
Not Compute bitwise complement of integer values ​​on the top of the stack and push the result as the same type onto the calculation stack.
Or Compute bitwise complements of two integer values ​​located at the top of the stack and pushes the result onto the calculation stack.
Pop Removes the value currently at the top of the compute stack.
Prefix1 Infrastructure. This instruction is a reserved instruction.
Prefix2 Infrastructure. This instruction is a reserved instruction.
Prefix3 Infrastructure. This instruction is a reserved instruction.
Prefix4 Infrastructure. This instruction is a reserved instruction.
Prefix5 Infrastructure. This instruction is a reserved instruction.
Prefix6 Infrastructure. This instruction is a reserved instruction.
Prefix7 Infrastructure. This instruction is a reserved instruction.
Prefixref Infrastructure. This instruction is a reserved instruction.
Readonly Specifies that the following array address operation does not perform type checking at runtime and returns a managed pointer with limited variability.
Refanytype Retrieves type tags embedded within typed references.
Refanyval Retrieves the address (& type) embedded within the typed reference.
Rem Divide the two values ​​and push the remainder onto the calculation stack.
Divide two unsigned values ​​and push the remainder onto the calculation stack.
Ret Return from the current method and push the return value (if present) from the caller's compute stack to the callee's compute stack.
Rethrow The current exception is raised again.
Shl Move the integer value left (filled with zeros) the specified number of bits and push the result onto the calculation stack.
Shr Moves the integer value right (keep the symbol) the specified number of bits and pushes the result onto the calculation stack.
Move the unsigned integer value right (filled with zeros) the specified number of bits and push the result onto the calculation stack.
Sizeof Push the size (in bytes) of the provided value type onto the calculation stack.
Starg Stores the value at the top of the calculation stack into the parameter slot at the specified index.
Stores the value at the top of the calculation stack at the specified index in the parameter slot (short format).
Stelem Replaces the array element at a given index with the value in the calculation stack, whose type is specified in the instruction.
Replaces the array element at a given index with the native int value on the compute stack.
Stelem.I1 Replaces the array element at a given index with the int8 value on the compute stack.
Stelem.I2 Replaces the array element at a given index with the int16 value on the compute stack.
Stelem.I4 Replaces the array element at a given index with the int32 value on the compute stack.
Stelem.I8 Replaces the array element at a given index with the int64 value on the compute stack.
Stelem.R4 Replaces the array element at a given index with the float32 value on the compute stack.
Stelem.R8 Replaces the array element at a given index with the float64 value on the compute stack.
Replaces the array element at a given index with the object ref value (type O) on the compute stack.
Stfld Replace the value stored in the field of the object reference or pointer with the new value.
Stores a value of type native int at the provided address.
Stind.I1 Store a value of type int8 at the provided address.
Stind.I2 Store a value of type int16 at the provided address.
Stind.I4 Store a value of type int32 at the provided address.
Stind.I8 Store a value of type int64 at the provided address.
Stind.R4 Stores a value of type float32 at the provided address.
Stind.R8 Stores a value of type float64 at the provided address.
Stores the object reference value at the provided address.
Stloc Pop up the current value from the top of the compute stack and store it in the list of local variables at the specified index.
Stloc.0 Pop up the current value from the top of the calculation stack and store it in the list of local variables at index 0.
Stloc.1 Pop up the current value from the top of the calculation stack and store it into the list of local variables at index 1.
Stloc.2 Pop up the current value from the top of the calculation stack and store it into the list of local variables at index 2.
Stloc.3 Pop up the current value from the top of the calculation stack and store it into the list of local variables at index 3.
Pop up the current value from the top of the calculation stack and store it at index in the local variable list (short format).
Stobj Copy the value of the specified type from the compute stack to the provided memory address.
Stsfld Replace the value of the static field with the value from the calculation stack.
Sub Subtract one value from the other values ​​and push the result onto the calculation stack.
Subtract an integer value from another value, perform an overflow check, and push the result onto the calculation stack.
Subtract an unsigned integer value from another value, perform an overflow check, and push the result onto the calculation stack.
Switch Implement jump table.
Tailcall Execute a suffixed method call instruction to remove the stack frame of the current method before executing the actual call instruction.
Throw Raises an exception object currently on the calculation stack.
Unaligned Indicates that the address currently on the calculation stack may not be aligned with the natural size of the immediate ldind, stind, ldfld, stfld, ldobj, stobj, initblk, or cpblk directives.
Unbox Converts a boxed representation of a value type to its unboxed form.
Converts the boxed representation of the type specified in the directive to the unboxed form.
Volatile Specifying that the address currently at the top of the computing stack can be volatile and the results of reading the location cannot be cached, or multiple memory areas of the address cannot be cancelled.
Xor Computes a bitwise exclusive OR of two values ​​located at the top of the compute stack and pushes the result onto the compute stack.