## 引言 彙總一下所有的 .NET IL 指令,以及它們的名稱、操作碼值、堆棧轉換行為和描述。 作為反編譯IL代碼時的查詢字典。 ## IL 指令集列表 以下內容來自[微軟官方文檔](https://learn.microsoft.com/en-us/dotnet/api/system.refle ...
引言
彙總一下所有的 .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/>
關於作者:.Net Framework,.Net Core ,WindowsForm,WPF ,控制項庫,多線程
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出 原文鏈接,否則保留追究法律責任的權利。 如有問題, 可郵件咨詢。