工具 --- IL指令集解释
引言
汇总一下所有的 .NET IL 指令,以及它们的名称、操作码值、堆栈转换行为和描述。
作为反编译IL代码时的查询字典。
IL 指令集列表
以下内容来自微软官方文档,通过百度翻译API翻译为中文。
指令 | 英文描述 | 中文描述 |
---|---|---|
Add | Adds two values and pushes the result onto the evaluation stack. | 将两个值相加,并将结果推送到计算堆栈中。 |
Add_Ovf | Adds two integers, performs an overflow check, and pushes the result onto the evaluation stack. | 将两个整数相加,执行溢出检查,并将结果推送到计算堆栈上。 |
Add_Ovf_Un | Adds two unsigned integer values, performs an overflow check, and pushes the result onto the evaluation stack. | 将两个无符号整数值相加,执行溢出检查,并将结果推送到计算堆栈上。 |
And | Computes the bitwise AND of two values and pushes the result onto the evaluation stack. | 计算两个值的逐位“与”,并将结果推送到计算堆栈上。 |
Arglist | Returns an unmanaged pointer to the argument list of the current method. | 返回指向当前方法的参数列表的非托管指针。 |
Beq | Transfers control to a target instruction if two values are equal. | 如果两个值相等,则将控制权转移到目标指令。 |
Beq_S | Transfers control to a target instruction (short form) if two values are equal. | 如果两个值相等,则将控制转移到目标指令(缩写)。 |
Bge | Transfers control to a target instruction if the first value is greater than or equal to the second value. | 如果第一个值大于或等于第二个值,则将控制权转移到目标指令。 |
Bge_S | Transfers control to a target instruction (short form) if the first value is greater than or equal to the second value. | 如果第一个值大于或等于第二个值,则将控制权转移到目标指令(缩写)。 |
Bge_Un | Transfers control to a target instruction if the first value is greater than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值大于第二个值,则将控制权转移到目标指令。 |
Bge_Un_S | Transfers control to a target instruction (short form) if the first value is greater than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值大于第二个值,则将控制权转移到目标指令(缩写)。 |
Bgt | Transfers control to a target instruction if the first value is greater than the second value. | 如果第一个值大于第二个值,则将控制权转移到目标指令。 |
Bgt_S | Transfers control to a target instruction (short form) if the first value is greater than the second value. | 如果第一个值大于第二个值,则将控制转移到目标指令(缩写)。 |
Bgt_Un | Transfers control to a target instruction if the first value is greater than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值大于第二个值,则将控制权转移到目标指令。 |
Bgt_Un_S | Transfers control to a target instruction (short form) if the first value is greater than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值大于第二个值,则将控制权转移到目标指令(缩写)。 |
Ble | Transfers control to a target instruction if the first value is less than or equal to the second value. | 如果第一个值小于或等于第二个值,则将控制权转移到目标指令。 |
Ble_S | Transfers control to a target instruction (short form) if the first value is less than or equal to the second value. | 如果第一个值小于或等于第二个值,则将控制转移到目标指令(缩写)。 |
Ble_Un | Transfers control to a target instruction if the first value is less than or equal to the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令。 |
Ble_Un_S | Transfers control to a target instruction (short form) if the first value is less than or equal to the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令(缩写)。 |
Blt | Transfers control to a target instruction if the first value is less than the second value. | 如果第一个值小于第二个值,则将控制权转移到目标指令。 |
Blt_S | Transfers control to a target instruction (short form) if the first value is less than the second value. | 如果第一个值小于第二个值,则将控制转移到目标指令(缩写)。 |
Blt_Un | Transfers control to a target instruction if the first value is less than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值小于第二个值,则将控制权转移到目标指令。 |
Blt_Un_S | Transfers control to a target instruction (short form) if the first value is less than the second value, when comparing unsigned integer values or unordered float values. | 在比较无符号整数值或无序浮点值时,如果第一个值小于第二个值,则将控制权转移到目标指令(缩写)。 |
Bne_Un | Transfers control to a target instruction when two unsigned integer values or unordered float values are not equal. | 当两个无符号整数值或无序浮点值不相等时,将控制权转移到目标指令。 |
Bne_Un_S | Transfers control to a target instruction (short form) when two unsigned integer values or unordered float values are not equal. | 当两个无符号整数值或无序浮点值不相等时,将控制转移到目标指令(缩写)。 |
Box | Converts a value type to an object reference (type O). | 将值类型转换为对象引用(类型O)。 |
Br | Unconditionally transfers control to a target instruction. | 无条件地将控制权转移到目标指令。 |
Br_S | Unconditionally transfers control to a target instruction (short form). | 无条件地将控制转移到目标指令(缩写)。 |
Break | Signals the Common Language Infrastructure (CLI) to inform the debugger that a break point has been tripped. | 向公共语言基础结构(CLI)发出信号,通知调试器断点已被触发。 |
Brfalse | Transfers control to a target instruction if value is false, a null reference (Nothing in Visual Basic), or zero. | 如果值为false、null引用(在Visual Basic中为Nothing)或零,则将控制转移到目标指令。 |
Brfalse_S | Transfers control to a target instruction if value is false, a null reference, or zero. | 如果值为false、null引用或零,则将控制权转移到目标指令。 |
Brtrue | Transfers control to a target instruction if value is true, not null, or non-zero. | 如果值为true、非null或非零,则将控制转移到目标指令。 |
Brtrue_S | Transfers control to a target instruction (short form) if value is true, not null, or non-zero. | 如果值为true、非null或非零,则将控制转移到目标指令(缩写)。 |
Call | Calls the method indicated by the passed method descriptor. | 调用由传递的方法描述符指示的方法。 |
Calli | Calls the method indicated on the evaluation stack (as a pointer to an entry point) with arguments described by a calling convention. | 使用调用约定描述的参数调用计算堆栈上指示的方法(作为指向入口点的指针)。 |
Callvirt | Calls a late-bound method on an object, pushing the return value onto the evaluation stack. | 调用对象上的后期绑定方法,将返回值推送到计算堆栈上。 |
Castclass | Attempts to cast an object passed by reference to the specified class. | 尝试将通过引用传递的对象强制转换为指定的类。 |
Ceq | Compares two values. If they are equal, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack. | 比较两个值。如果它们相等,则将整数值1(int32)推送到评估堆栈上;否则0(int32)被推送到评估堆栈上。 |
Cgt | Compares two values. If the first value is greater than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack. | 比较两个值。如果第一个值大于第二个值,则将整数值1(int32)推送到评估堆栈上;否则0(int32)被推送到评估堆栈上。 |
Cgt_Un | Compares two unsigned or unordered values. If the first value is greater than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack. | 比较两个无符号或无序的值。如果第一个值大于第二个值,则将整数值1(int32)推送到评估堆栈上;否则0(int32)被推送到评估堆栈上。 |
Ckfinite | Throws ArithmeticException if value is not a finite number. | 如果值不是有限数,则引发ArithmeticException。 |
Clt | Compares two values. If the first value is less than the second, the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack. | 比较两个值。如果第一个值小于第二个值,则将整数值1(int32)推送到评估堆栈上;否则0(int32)被推送到评估堆栈上。 |
Clt_Un | Compares the unsigned or unordered values value1 and value2. If value1 is less than value2, then the integer value 1 (int32) is pushed onto the evaluation stack; otherwise 0 (int32) is pushed onto the evaluation stack. | 比较无符号或无序的值value1和value2。如果value1小于value2,则将整数值1(int32)推送到求值堆栈上;否则0(int32)被推送到评估堆栈上。 |
Constrained | Constrains the type on which a virtual method call is made. | 约束对其进行虚拟方法调用的类型。 |
Conv_I | Converts the value on top of the evaluation stack to native int. | 将计算堆栈顶部的值转换为本机int。 |
Conv_I1 | Converts the value on top of the evaluation stack to int8, then extends (pads) it to int32. | 将求值堆栈顶部的值转换为int8,然后将其扩展(pads)为int32。 |
Conv_I2 | Converts the value on top of the evaluation stack to int16, then extends (pads) it to int32. | 将求值堆栈顶部的值转换为int16,然后将其扩展(pads)为int32。 |
Conv_I4 | Converts the value on top of the evaluation stack to int32. | 将计算堆栈顶部的值转换为int32。 |
Conv_I8 | Converts the value on top of the evaluation stack to int64. | 将计算堆栈顶部的值转换为int64。 |
Conv_Ovf_I | Converts the signed value on top of the evaluation stack to signed native int, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为有符号的本机int,在溢出时引发OverflowException。 |
Conv_Ovf_I_Un | Converts the unsigned value on top of the evaluation stack to signed native int, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为有符号的本机int,在溢出时引发OverflowException。 |
Conv_Ovf_I1 | Converts the signed value on top of the evaluation stack to signed int8 and extends it to int32, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为有符号int8,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_I1_Un | Converts the unsigned value on top of the evaluation stack to signed int8 and extends it to int32, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为有符号int8,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_I2 | Converts the signed value on top of the evaluation stack to signed int16 and extending it to int32, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为有符号int16,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_I2_Un | Converts the unsigned value on top of the evaluation stack to signed int16 and extends it to int32, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为有符号int16,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_I4 | Converts the signed value on top of the evaluation stack to signed int32, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为有符号int32,在溢出时引发OverflowException。 |
Conv_Ovf_I4_Un | Converts the unsigned value on top of the evaluation stack to signed int32, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为有符号int32,在溢出时引发OverflowException。 |
Conv_Ovf_I8 | Converts the signed value on top of the evaluation stack to signed int64, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为有符号int64,在溢出时引发OverflowException。 |
Conv_Ovf_I8_Un | Converts the unsigned value on top of the evaluation stack to signed int64, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为有符号int64,在溢出时引发OverflowException。 |
Conv_Ovf_U | Converts the signed value on top of the evaluation stack to unsigned native int, throwing OverflowException on overflow. | 将计算堆栈顶部的有符号值转换为无符号本机int,在溢出时引发OverflowException。 |
Conv_Ovf_U_Un | Converts the unsigned value on top of the evaluation stack to unsigned native int, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为无符号本机int,在溢出时引发OverflowException。 |
Conv_Ovf_U1 | Converts the signed value on top of the evaluation stack to unsigned int8 and extends it to int32, throwing OverflowException on overflow. | 将求值堆栈顶部的有符号值转换为无符号int8,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_U1_Un | Converts the unsigned value on top of the evaluation stack to unsigned int8 and extends it to int32, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为无符号int8,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_U2 | Converts the signed value on top of the evaluation stack to unsigned int16 and extends it to int32, throwing OverflowException on overflow. | 将求值堆栈顶部的有符号值转换为无符号int16,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_U2_Un | Converts the unsigned value on top of the evaluation stack to unsigned int16 and extends it to int32, throwing OverflowException on overflow. | 将求值堆栈顶部的无符号值转换为无符号int16,并将其扩展为int32,从而在溢出时引发OverflowException。 |
Conv_Ovf_U4 | Converts the signed value on top of the evaluation stack to unsigned int32, throwing OverflowException on overflow. | 将求值堆栈顶部的有符号值转换为无符号int32,在溢出时引发OverflowException。 |
Conv_Ovf_U4_Un | Converts the unsigned value on top of the evaluation stack to unsigned int32, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为无符号int32,在溢出时引发OverflowException。 |
Conv_Ovf_U8 | Converts the signed value on top of the evaluation stack to unsigned int64, throwing OverflowException on overflow. | 将求值堆栈顶部的有符号值转换为无符号int64,在溢出时引发OverflowException。 |
Conv_Ovf_U8_Un | Converts the unsigned value on top of the evaluation stack to unsigned int64, throwing OverflowException on overflow. | 将计算堆栈顶部的无符号值转换为无符号int64,在溢出时引发OverflowException。 |
Conv_R_Un | Converts the unsigned integer value on top of the evaluation stack to float32. | 将计算堆栈顶部的无符号整数值转换为float32。 |
Conv_R4 | Converts the value on top of the evaluation stack to float32. | 将计算堆栈顶部的值转换为float32。 |
Conv_R8 | Converts the value on top of the evaluation stack to float64. | 将计算堆栈顶部的值转换为float64。 |
Conv_U | Converts the value on top of the evaluation stack to unsigned native int, and extends it to native int. | 将计算堆栈顶部的值转换为无符号本机int,并将其扩展为本机int。 |
Conv_U1 | Converts the value on top of the evaluation stack to unsigned int8, and extends it to int32. | 将求值堆栈顶部的值转换为无符号int8,并将其扩展为int32。 |
Conv_U2 | Converts the value on top of the evaluation stack to unsigned int16, and extends it to int32. | 将求值堆栈顶部的值转换为无符号int16,并将其扩展为int32。 |
Conv_U4 | Converts the value on top of the evaluation stack to unsigned int32, and extends it to int32. | 将求值堆栈顶部的值转换为无符号int32,并将其扩展为int32。 |
Conv_U8 | Converts the value on top of the evaluation stack to unsigned int64, and extends it to int64. | 将求值堆栈顶部的值转换为无符号int64,并将其扩展为int64。 |
Cpblk | Copies a specified number bytes from a source address to a destination address. | 将指定数量的字节从源地址复制到目标地址。 |
Cpobj | Copies the value type located at the address of an object (type &, or native int) to the address of the destination object (type &, or native int). | 将位于对象地址的值类型(类型&或本机int)复制到目标对象的地址(类型&,或本机整型)。 |
Div | Divides two values and pushes the result as a floating-point (type F) or quotient (type int32) onto the evaluation stack. | 将两个值相除,并将结果作为浮点(类型为F)或商(类型为int32)推送到计算堆栈中。 |
Div_Un | Divides two unsigned integer values and pushes the result (int32) onto the evaluation stack. | 对两个无符号整数值进行除法运算,并将结果(int32)推送到计算堆栈上。 |
Dup | Copies the current topmost value on the evaluation stack, and then pushes the copy onto the evaluation stack. | 复制评估堆栈上当前最顶端的值,然后将副本推送到评估堆栈上。 |
Endfilter | Transfers control from the filter clause of an exception back to the Common Language Infrastructure (CLI) exception handler. | 将控制从异常的filter子句转移回公共语言基础结构(CLI)异常处理程序。 |
Endfinally | Transfers control from the fault or finally clause of an exception block back to the Common Language Infrastructure (CLI) exception handler. | 将控制从异常块的fault或finally子句转移回公共语言基础结构(CLI)异常处理程序。 |
Initblk | Initializes a specified block of memory at a specific address to a given size and initial value. | 将特定地址的指定内存块初始化为给定的大小和初始值。 |
Initobj | Initializes each field of the value type at a specified address to a null reference or a 0 of the appropriate primitive type. | 将指定地址处的值类型的每个字段初始化为null引用或相应基元类型的0。 |
Isinst | Tests whether an object reference (type O) is an instance of a particular class. | 测试对象引用(类型O)是否是特定类的实例。 |
Jmp | Exits current method and jumps to specified method. | 退出当前方法并跳到指定的方法。 |
Ldarg | Loads an argument (referenced by a specified index value) onto the stack. | 将参数(由指定的索引值引用)加载到堆栈中。 |
Ldarg_0 | Loads the argument at index 0 onto the evaluation stack. | 将索引0处的参数加载到评估堆栈中。 |
Ldarg_1 | Loads the argument at index 1 onto the evaluation stack. | 将索引1处的参数加载到评估堆栈中。 |
Ldarg_2 | Loads the argument at index 2 onto the evaluation stack. | 将索引2处的参数加载到评估堆栈中。 |
Ldarg_3 | Loads the argument at index 3 onto the evaluation stack. | 将索引3处的参数加载到评估堆栈中。 |
Ldarg_S | Loads the argument (referenced by a specified short form index) onto the evaluation stack. | 将参数(由指定的缩写索引引用)加载到计算堆栈中。 |
Ldarga | Load an argument address onto the evaluation stack. | 将参数地址加载到评估堆栈中。 |
Ldarga_S | Load an argument address, in short form, onto the evaluation stack. | 将一个简短的参数地址加载到求值堆栈中。 |
Ldc_I4 | Pushes a supplied value of type int32 onto the evaluation stack as an int32. | 将提供的类型为int32的值作为int32推送到计算堆栈上。 |
Ldc_I4_0 | Pushes the integer value of 0 onto the evaluation stack as an int32. | 将整数值0作为int32推送到计算堆栈中。 |
Ldc_I4_1 | Pushes the integer value of 1 onto the evaluation stack as an int32. | 将整数值1作为int32推送到计算堆栈中。 |
Ldc_I4_2 | Pushes the integer value of 2 onto the evaluation stack as an int32. | 将整数值2作为int32推送到求值堆栈上。 |
Ldc_I4_3 | Pushes the integer value of 3 onto the evaluation stack as an int32. | 将整数值3作为int32推送到求值堆栈中。 |
Ldc_I4_4 | Pushes the integer value of 4 onto the evaluation stack as an int32. | 将整数值4作为int32推送到求值堆栈上。 |
Ldc_I4_5 | Pushes the integer value of 5 onto the evaluation stack as an int32. | 将整数值5作为int32推送到求值堆栈中。 |
Ldc_I4_6 | Pushes the integer value of 6 onto the evaluation stack as an int32. | 将整数值6作为int32推送到求值堆栈中。 |
Ldc_I4_7 | Pushes the integer value of 7 onto the evaluation stack as an int32. | 将整数值7作为int32推送到求值堆栈中。 |
Ldc_I4_8 | Pushes the integer value of 8 onto the evaluation stack as an int32. | 将整数值8作为int32推送到求值堆栈中。 |
Ldc_I4_M1 | Pushes the integer value of -1 onto the evaluation stack as an int32. | 将整数值-1作为int32推送到计算堆栈中。 |
Ldc_I4_S | Pushes the supplied int8 value onto the evaluation stack as an int32, short form. | 将提供的int8值作为int32的缩写形式推送到计算堆栈上。 |
Ldc_I8 | Pushes a supplied value of type int64 onto the evaluation stack as an int64. | 将提供的类型为int64的值作为int64推送到计算堆栈上。 |
Ldc_R4 | Pushes a supplied value of type float32 onto the evaluation stack as type F (float). | 将提供的float32类型的值作为类型F(float)推送到评估堆栈上。 |
Ldc_R8 | Pushes a supplied value of type float64 onto the evaluation stack as type F (float). | 将提供的float64类型的值作为类型F(float)推送到评估堆栈上。 |
Ldelem | Loads the element at a specified array index onto the top of the evaluation stack as the type specified in the instruction. | 将指定数组索引处的元素作为指令中指定的类型加载到计算堆栈的顶部。 |
Ldelem_I | Loads the element with type native int at a specified array index onto the top of the evaluation stack as a native int. | 将指定数组索引处类型为native int的元素作为native int加载到计算堆栈的顶部。 |
Ldelem_I1 | Loads the element with type int8 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为int8的元素作为int32加载到计算堆栈的顶部。 |
Ldelem_I2 | Loads the element with type int16 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为int16的元素作为int32加载到计算堆栈的顶部。 |
Ldelem_I4 | Loads the element with type int32 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为int32的元素作为int32加载到计算堆栈的顶部。 |
Ldelem_I8 | Loads the element with type int64 at a specified array index onto the top of the evaluation stack as an int64. | 将指定数组索引处类型为int64的元素作为int64加载到计算堆栈的顶部。 |
Ldelem_R4 | Loads the element with type float32 at a specified array index onto the top of the evaluation stack as type F (float). | 将指定数组索引处的float32类型的元素作为F(float)类型加载到评估堆栈的顶部。 |
Ldelem_R8 | Loads the element with type float64 at a specified array index onto the top of the evaluation stack as type F (float). | 将指定数组索引处float64类型的元素作为F(float)类型加载到评估堆栈的顶部。 |
Ldelem_Ref | Loads the element containing an object reference at a specified array index onto the top of the evaluation stack as type O (object reference). | 将在指定数组索引处包含对象引用的元素作为类型O(对象引用)加载到计算堆栈的顶部。 |
Ldelem_U1 | Loads the element with type unsigned int8 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为unsigned int8的元素作为int32加载到计算堆栈的顶部。 |
Ldelem_U2 | Loads the element with type unsigned int16 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为unsigned int16的元素作为int32加载到计算堆栈的顶部。 |
Ldelem_U4 | Loads the element with type unsigned int32 at a specified array index onto the top of the evaluation stack as an int32. | 将指定数组索引处类型为unsigned int32的元素作为int32加载到计算堆栈的顶部。 |
Ldelema | Loads the address of the array element at a specified array index onto the top of the evaluation stack as type & (managed pointer). | 将指定数组索引处的数组元素的地址作为类型&(托管指针)加载到评估堆栈的顶部。 |
Ldfld | Finds the value of a field in the object whose reference is currently on the evaluation stack. | 在对象中查找其引用当前位于求值堆栈上的字段的值。 |
Ldflda | Finds the address of a field in the object whose reference is currently on the evaluation stack. | 在对象中查找其引用当前在求值堆栈上的字段的地址。 |
Ldftn | Pushes an unmanaged pointer (type native int) to the native code implementing a specific method onto the evaluation stack. | 将指向实现特定方法的本机代码的非托管指针(类型为native int)推送到计算堆栈上。 |
Ldind_I | Loads a value of type native int as a native int onto the evaluation stack indirectly. | 将本机int类型的值作为本机int间接加载到计算堆栈中。 |
Ldind_I1 | Loads a value of type int8 as an int32 onto the evaluation stack indirectly. | 将类型为int8的值作为int32间接加载到计算堆栈中。 |
Ldind_I2 | Loads a value of type int16 as an int32 onto the evaluation stack indirectly. | 将类型为int16的值作为int32间接加载到计算堆栈中。 |
Ldind_I4 | Loads a value of type int32 as an int32 onto the evaluation stack indirectly. | 将类型为int32的值作为int32间接加载到计算堆栈中。 |
Ldind_I8 | Loads a value of type int64 as an int64 onto the evaluation stack indirectly. | 将类型为int64的值作为int64间接加载到计算堆栈中。 |
Ldind_R4 | Loads a value of type float32 as a type F (float) onto the evaluation stack indirectly. | 将float32类型的值作为F(float)类型间接加载到求值堆栈上。 |
Ldind_R8 | Loads a value of type float64 as a type F (float) onto the evaluation stack indirectly. | 将float64类型的值作为F(float)类型间接加载到求值堆栈上。 |
Ldind_Ref | Loads an object reference as a type O (object reference) onto the evaluation stack indirectly. | 将对象引用作为类型O(对象引用)间接加载到计算堆栈上。 |
Ldind_U1 | Loads a value of type unsigned int8 as an int32 onto the evaluation stack indirectly. | 将类型为unsigned int8的值作为int32间接加载到求值堆栈中。 |
Ldind_U2 | Loads a value of type unsigned int16 as an int32 onto the evaluation stack indirectly. | 将类型为unsigned int16的值作为int32间接加载到求值堆栈中。 |
Ldind_U4 | Loads a value of type unsigned int32 as an int32 onto the evaluation stack indirectly. | 将类型为unsigned int32的值作为int32间接加载到求值堆栈中。 |
Ldlen | Pushes the number of elements of a zero-based, one-dimensional array onto the evaluation stack. | 将基于零的一维数组的元素数推送到求值堆栈上。 |
Ldloc | Loads the local variable at a specific index onto the evaluation stack. | 将特定索引处的局部变量加载到求值堆栈中。 |
Ldloc_0 | Loads the local variable at index 0 onto the evaluation stack. | 将索引0处的局部变量加载到计算堆栈中。 |
Ldloc_1 | Loads the local variable at index 1 onto the evaluation stack. | 将索引1处的局部变量加载到求值堆栈中。 |
Ldloc_2 | Loads the local variable at index 2 onto the evaluation stack. | 将索引2处的局部变量加载到求值堆栈中。 |
Ldloc_3 | Loads the local variable at index 3 onto the evaluation stack. | 将索引3处的局部变量加载到求值堆栈中。 |
Ldloc_S | Loads the local variable at a specific index onto the evaluation stack, short form. | 将特定索引处的局部变量以缩写形式加载到评估堆栈中。 |
Ldloca | Loads the address of the local variable at a specific index onto the evaluation stack. | 将特定索引处的局部变量的地址加载到求值堆栈中。 |
Ldloca_S | Loads the address of the local variable at a specific index onto the evaluation stack, short form. | 将特定索引处的局部变量的地址以缩写形式加载到评估堆栈中。 |
Ldnull | Pushes a null reference (type O) onto the evaluation stack. | 将空引用(类型O)推送到求值堆栈上。 |
Ldobj | Copies the value type object pointed to by an address to the top of the evaluation stack. | 将地址指向的值类型对象复制到求值堆栈的顶部。 |
Ldsfld | Pushes the value of a static field onto the evaluation stack. | 将静态字段的值推送到求值堆栈上。 |
Ldsflda | Pushes the address of a static field onto the evaluation stack. | 将静态字段的地址推送到计算堆栈上。 |
Ldstr | Pushes a new object reference to a string literal stored in the metadata. | 将新对象引用推送到存储在元数据中的字符串文字。 |
Ldtoken | Converts a metadata token to its runtime representation, pushing it onto the evaluation stack. | 将元数据令牌转换为其运行时表示形式,并将其推送到评估堆栈上。 |
Ldvirtftn | Pushes an unmanaged pointer (type native int) to the native code implementing a particular virtual method associated with a specified object onto the evaluation stack. | 将指向实现与指定对象关联的特定虚拟方法的本机代码的非托管指针(类型为native int)推送到计算堆栈上。 |
Leave | Exits a protected region of code, unconditionally transferring control to a specific target instruction. | 退出受保护的代码区域,无条件地将控制权转移到特定的目标指令。 |
Leave_S | Exits a protected region of code, unconditionally transferring control to a target instruction (short form). | 退出受保护的代码区域,无条件地将控制权转移到目标指令(缩写)。 |
Localloc | Allocates a certain number of bytes from the local dynamic memory pool and pushes the address (a transient pointer, type *) of the first allocated byte onto the evaluation stack. | 从本地动态内存池中分配一定数量的字节,并将第一个分配字节的地址(临时指针,类型*)推送到评估堆栈上。 |
Mkrefany | Pushes a typed reference to an instance of a specific type onto the evaluation stack. | 将对特定类型实例的类型化引用推送到计算堆栈上。 |
Mul | Multiplies two values and pushes the result on the evaluation stack. | 将两个值相乘,并将结果推送到计算堆栈上。 |
Mul_Ovf | Multiplies two integer values, performs an overflow check, and pushes the result onto the evaluation stack. | 将两个整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。 |
Mul_Ovf_Un | Multiplies two unsigned integer values, performs an overflow check, and pushes the result onto the evaluation stack. | 将两个无符号整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。 |
Neg | Negates a value and pushes the result onto the evaluation stack. | 取一个值的负值并将结果推送到计算堆栈上。 |
Newarr | Pushes an object reference to a new zero-based, one-dimensional array whose elements are of a specific type onto the evaluation stack. | 将对元素为特定类型的新的基于零的一维数组的对象引用推送到计算堆栈上。 |
Newobj | Creates a new object or a new instance of a value type, pushing an object reference (type O) onto the evaluation stack. | 创建新对象或值类型的新实例,将对象引用(类型O)推送到计算堆栈上。 |
Nop | Fills space if opcodes are patched. No meaningful operation is performed although a processing cycle can be consumed. | 如果修补了操作码,则填充空间。尽管可以消耗处理周期,但不执行有意义的操作。 |
Not | Computes the bitwise complement of the integer value on top of the stack and pushes the result onto the evaluation stack as the same type. | 计算堆栈顶部整数值的逐位补码,并将结果作为同一类型推送到计算堆栈上。 |
Or | Compute the bitwise complement of the two integer values on top of the stack and pushes the result onto the evaluation stack. | 计算堆栈顶部两个整数值的逐位补码,并将结果推送到求值堆栈上。 |
Pop | Removes the value currently on top of the evaluation stack. | 删除当前位于评估堆栈顶部的值。 |
Prefix1 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix2 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix3 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix4 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix5 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix6 | This is a reserved instruction. | 这是一条保留指令。 |
Prefix7 | This is a reserved instruction. | 这是一条保留指令。 |
Prefixref | This is a reserved instruction. | 这是一条保留指令。 |
Readonly | Specifies that the subsequent array address operation performs no type check at run time, and that it returns a managed pointer whose mutability is restricted. | 指定后续数组地址操作在运行时不执行类型检查,并指定它返回一个可变性受到限制的托管指针。 |
Refanytype | Retrieves the type token embedded in a typed reference. | 检索嵌入在类型化引用中的类型标记。 |
Refanyval | Retrieves the address (type &) embedded in a typed reference. | 检索嵌入类型化引用中的地址(类型&)。 |
Rem | Divides two values and pushes the remainder onto the evaluation stack. | 将两个值相除,并将余数推送到求值堆栈上。 |
Rem_Un | Divides two unsigned values and pushes the remainder onto the evaluation stack. | 将两个无符号值相除,并将余数推送到计算堆栈中。 |
Ret | Returns from the current method, pushing a return value (if present) from the callee's evaluation stack onto the caller's evaluation stack. | 从当前方法返回,将返回值(如果存在)从被调用者的评估堆栈推送到调用者的评估栈。 |
Rethrow | Rethrows the current exception. | 重新处理当前异常。 |
Shl | Shifts an integer value to the left (in zeroes) by a specified number of bits, pushing the result onto the evaluation stack. | 将整数值向左(以零为单位)移动指定的位数,将结果推送到计算堆栈上。 |
Shr | Shifts an integer value (in sign) to the right by a specified number of bits, pushing the result onto the evaluation stack. | 将整数值(带符号)向右移动指定的位数,将结果推送到计算堆栈上。 |
Shr_Un | Shifts an unsigned integer value (in zeroes) to the right by a specified number of bits, pushing the result onto the evaluation stack. | 将无符号整数值(以零为单位)向右移动指定位数,将结果推送到计算堆栈上。 |
Sizeof | Pushes the size, in bytes, of a supplied value type onto the evaluation stack. | 将提供的值类型的大小(以字节为单位)推送到评估堆栈中。 |
Starg | Stores the value on top of the evaluation stack in the argument slot at a specified index. | 将值存储在参数槽中指定索引处的求值堆栈顶部。 |
Starg_S | Stores the value on top of the evaluation stack in the argument slot at a specified index, short form. | 将值存储在参数槽中计算堆栈顶部的指定索引的缩写形式中。 |
Stelem | Replaces the array element at a given index with the value on the evaluation stack, whose type is specified in the instruction. | 将给定索引处的数组元素替换为计算堆栈上的值,该值的类型在指令中指定。 |
Stelem_I | Replaces the array element at a given index with the native int value on the evaluation stack. | 用计算堆栈上的本机int值替换给定索引处的数组元素。 |
Stelem_I1 | Replaces the array element at a given index with the int8 value on the evaluation stack. | 用计算堆栈上的int8值替换给定索引处的数组元素。 |
Stelem_I2 | Replaces the array element at a given index with the int16 value on the evaluation stack. | 用计算堆栈上的int16值替换给定索引处的数组元素。 |
Stelem_I4 | Replaces the array element at a given index with the int32 value on the evaluation stack. | 用计算堆栈上的int32值替换给定索引处的数组元素。 |
Stelem_I8 | Replaces the array element at a given index with the int64 value on the evaluation stack. | 用计算堆栈上的int64值替换给定索引处的数组元素。 |
Stelem_R4 | Replaces the array element at a given index with the float32 value on the evaluation stack. | 将求值堆栈上给定索引处的数组元素替换为float32值。 |
Stelem_R8 | Replaces the array element at a given index with the float64 value on the evaluation stack. | 将计算堆栈上给定索引处的数组元素替换为float64值。 |
Stelem_Ref | Replaces the array element at a given index with the object ref value (type O) on the evaluation stack. | 将给定索引处的数组元素替换为计算堆栈上的对象引用值(类型O)。 |
Stfld | Replaces the value stored in the field of an object reference or pointer with a new value. | 将存储在对象引用或指针字段中的值替换为新值。 |
Stind_I | Stores a value of type native int at a supplied address. | 将本机int类型的值存储在提供的地址。 |
Stind_I1 | Stores a value of type int8 at a supplied address. | 将类型为int8的值存储在提供的地址中。 |
Stind_I2 | Stores a value of type int16 at a supplied address. | 将类型为int16的值存储在提供的地址中。 |
Stind_I4 | Stores a value of type int32 at a supplied address. | 将类型为int32的值存储在提供的地址。 |
Stind_I8 | Stores a value of type int64 at a supplied address. | 将类型为int64的值存储在提供的地址。 |
Stind_R4 | Stores a value of type float32 at a supplied address. | 在提供的地址中存储float32类型的值。 |
Stind_R8 | Stores a value of type float64 at a supplied address. | 在提供的地址中存储float64类型的值。 |
Stind_Ref | Stores a object reference value at a supplied address. | 将对象引用值存储在提供的地址。 |
Stloc | Pops the current value from the top of the evaluation stack and stores it in the local variable list at a specified index. | 从评估堆栈的顶部弹出当前值,并将其存储在指定索引处的局部变量列表中。 |
Stloc_0 | Pops the current value from the top of the evaluation stack and stores it in the local variable list at index 0. | 从评估堆栈的顶部弹出当前值,并将其存储在索引0处的局部变量列表中。 |
Stloc_1 | Pops the current value from the top of the evaluation stack and stores it in the local variable list at index 1. | 从评估堆栈的顶部弹出当前值,并将其存储在索引1处的局部变量列表中。 |
Stloc_2 | Pops the current value from the top of the evaluation stack and stores it in the local variable list at index 2. | 从评估堆栈的顶部弹出当前值,并将其存储在索引2处的局部变量列表中。 |
Stloc_3 | Pops the current value from the top of the evaluation stack and stores it in the local variable list at index 3. | 从评估堆栈的顶部弹出当前值,并将其存储在索引3处的局部变量列表中。 |
Stloc_S | Pops the current value from the top of the evaluation stack and stores it in the local variable list at index (short form). | 从评估堆栈的顶部弹出当前值,并将其存储在索引处的局部变量列表中(缩写)。 |
Stobj | Copies a value of a specified type from the evaluation stack into a supplied memory address. | 将指定类型的值从求值堆栈复制到提供的内存地址中。 |
Stsfld | Replaces the value of a static field with a value from the evaluation stack. | 将静态字段的值替换为求值堆栈中的值。 |
Sub | Subtracts one value from another and pushes the result onto the evaluation stack. | 从另一个值中减去一个值,并将结果推送到计算堆栈中。 |
Sub_Ovf | Subtracts one integer value from another, performs an overflow check, and pushes the result onto the evaluation stack. | 从另一个整数值中减去一个,执行溢出检查,并将结果推送到计算堆栈上。 |
Sub_Ovf_Un | Subtracts one unsigned integer value from another, performs an overflow check, and pushes the result onto the evaluation stack. | 从另一个无符号整数值中减去一个,执行溢出检查,并将结果推送到计算堆栈中。 |
Switch | Implements a jump table. | 实现一个跳转表。 |
Tailcall | Performs a postfixed method call instruction such that the current method's stack frame is removed before the actual call instruction is executed. | 执行后置方法调用指令,以便在执行实际调用指令之前删除当前方法的堆栈帧。 |
Throw | Throws the exception object currently on the evaluation stack. | 抛出当前评估堆栈上的异常对象。 |
Unaligned | Indicates that an address currently atop the evaluation stack might not be aligned to the natural size of the immediately following ldind, stind, ldfld, stfld, ldobj, stobj, initblk, or cpblk instruction. | 指示当前位于评估堆栈顶部的地址可能未与紧接其后的ldid、stind、ldfld、stfld、ldobj、stobj、initblk或cpblk指令的自然大小对齐。 |
Unbox | Converts the boxed representation of a value type to its unboxed form. | 将值类型的装箱表示形式转换为其未装箱形式。 |
Unbox_Any | Converts the boxed representation of a type specified in the instruction to its unboxed form. | 将指令中指定的类型的装箱表示形式转换为其未装箱形式。 |
Volatile | Specifies that an address currently atop the evaluation stack might be volatile, and the results of reading that location cannot be cached or that multiple stores to that location cannot be suppressed. | 指定当前位于评估堆栈顶部的地址可能不稳定,并且无法缓存读取该位置的结果,或者无法抑制对该位置的多个存储。 |
Xor | Computes the bitwise XOR of the top two values on the evaluation stack, pushing the result onto the evaluation stack. |
参考
https://learn.microsoft.com/en-us/dotnet/api/system.reflection.emit.opcodes?view=net-5.0
作者: Niuery Daily
出处: https://www.cnblogs.com/pandefu/>
邮箱: defu_pan@163.com
关于作者:.Net Framework,.Net Core ,WindowsForm,WPF ,控件库,多线程
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接,否则保留追究法律责任的权利。 如有问题, 可邮件咨询。