C#中IL反彙編工具的使用 其具體含義如下文

C#中IL反彙編工具的使用 其具體含義如下文

IL 是基於棧的語言, 棧上保存強類型的數據,每條指令對在棧上進行操作

跳轉指令集合

Public field Static Beq 如果兩個值相等,則將控制轉移到目標指令。
Public field Static Beq_S 如果兩個值相等,則將控制轉移到目標指令(短格式)。
Public field Static Bge 如果第一個值大於或等於第二個值,則將控制轉移到目標指令。
Public field Static Bge_S 如果第一個值大於或等於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Bge_Un 當比較無符號整數值或不可排序的浮點型值時,如果第一個值大於第二個值,則將控制轉移到目標指令。
Public field Static Bge_Un_S 當比較無符號整數值或不可排序的浮點型值時,如果第一個值大於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Bgt 如果第一個值大於第二個值,則將控制轉移到目標指令。
Public field Static Bgt_S 如果第一個值大於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Bgt_Un 當比較無符號整數值或不可排序的浮點型值時,如果第一個值大於第二個值,則將控制轉移到目標指令。
Public field Static Bgt_Un_S 當比較無符號整數值或不可排序的浮點型值時,如果第一個值大於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Ble 如果第一個值小於或等於第二個值,則將控制轉移到目標指令。
Public field Static Ble_S 如果第一個值小於或等於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Ble_Un 當比較無符號整數值或不可排序的浮點型值時,如果第一個值小於或等於第二個值,則將控制轉移到目標指令。
Public field Static Ble_Un_S 當比較無符號整數值或不可排序的浮點值時,如果第一個值小於或等於第二個值,則將控制權轉移到目標指令(短格式)。
Public field Static Blt 如果第一個值小於第二個值,則將控制轉移到目標指令。
Public field Static Blt_S 如果第一個值小於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Blt_Un 當比較無符號整數值或不可排序的浮點型值時,如果第一個值小於第二個值,則將控制轉移到目標指令。
Public field Static Blt_Un_S 當比較無符號整數值或不可排序的浮點型值時,如果第一個值小於第二個值,則將控制轉移到目標指令(短格式)。
Public field Static Bne_Un 當兩個無符號整數值或不可排序的浮點型值不相等時,將控制轉移到目標指令。
Public field Static Bne_Un_S 當兩個無符號整數值或不可排序的浮點型值不相等時,將控制轉移到目標指令(短格式)。
Public field Static Br 無條件地將控制轉移到目標指令。
Public field Static Br_S 無條件地將控制轉移到目標指令(短格式)。
Public field Static Brfalse 如果 value 爲 false、空引用(Visual Basic 中的 Nothing)或零,則將控制轉移到目標指令。
Public field Static Brfalse_S 如果 value 爲 false、空引用或零,則將控制轉移到目標指令。
Public field Static Brtrue 如果 value 爲 true、非空或非零,則將控制轉移到目標指令。
Public field Static Brtrue_S 如果 value 爲 true、非空或非零,則將控制轉移到目標指令(短格式)。
比較指令集合
Public field Static Ceq 比較兩個值。如果這兩個值相等,則將整數值 1 (int32) 推送到計算堆棧上;否則,將 0 (int32) 推送到計算堆棧上。
Public field Static Cgt 比較兩個值。如果第一個值大於第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Public field Static Cgt_Un 比較兩個無符號的或不可排序的值。如果第一個值大於第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Public field Static Clt 比較兩個值。如果第一個值小於第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Public field Static Clt_Un 比較無符號的或不可排序的值 value1 和 value2。如果 value1 小於 value2,則將整數值 1 (int32 ) 推送到計算堆棧上;反之,將 0 ( int32 ) 推送到計算堆棧上。

Public field Static Jmp 退出當前方法並跳至指定方法。


名稱 說明
Public field Static Add 將兩個值相加並將結果推送到計算堆棧上。
Public field Static Add_Ovf 將兩個整數相加,執行溢出檢查,並且將結果推送到計算堆棧上。
Public field Static Add_Ovf_Un 將兩個無符號整數值相加,執行溢出檢查,並且將結果推送到計算堆棧上。
Public field Static And 計算兩個值的按位“與”並將結果推送到計算堆棧上。
Public field Static Arglist 返回指向當前方法的參數列表的非託管指針。

Public field Static Box 將值類轉換爲對象引用(O 類型)。
Public field Static Break 向公共語言結構 (CLI) 發出信號以通知調試器已撞上了一個斷點。
Public field Static Call 調用由傳遞的方法說明符指示的方法。
Public field Static Calli 通過調用約定描述的參數調用在計算堆棧上指示的方法(作爲指向入口點的指針)。
Public field Static Callvirt 對對象調用後期綁定方法,並且將返回值推送到計算堆棧上。
Public field Static Castclass 嘗試將引用傳遞的對象轉換爲指定的類。
Public field Static Ckfinite 如果值不是有限數,則引發 ArithmeticException。

Public field Static Constrained 約束要對其進行虛方法調用的類型。
Public field Static Conv_I 將位於計算堆棧頂部的值轉換爲 natural int。
Public field Static Conv_I1 將位於計算堆棧頂部的值轉換爲 int8,然後將其擴展(填充)爲 int32。
Public field Static Conv_I2 將位於計算堆棧頂部的值轉換爲 int16,然後將其擴展(填充)爲 int32。
Public field Static Conv_I4 將位於計算堆棧頂部的值轉換爲 int32。
Public field Static Conv_I8 將位於計算堆棧頂部的值轉換爲 int64。
Public field Static Conv_Ovf_I 將位於計算堆棧頂部的有符號值轉換爲有符號 natural int,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I_Un 將位於計算堆棧頂部的無符號值轉換爲有符號 natural int,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I1 將位於計算堆棧頂部的有符號值轉換爲有符號 int8 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I1_Un 將位於計算堆棧頂部的無符號值轉換爲有符號 int8 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I2 將位於計算堆棧頂部的有符號值轉換爲有符號 int16 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I2_Un 將位於計算堆棧頂部的無符號值轉換爲有符號 int16 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I4 將位於計算堆棧頂部的有符號值轉換爲有符號 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I4_Un 將位於計算堆棧頂部的無符號值轉換爲有符號 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I8 將位於計算堆棧頂部的有符號值轉換爲有符號 int64,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_I8_Un 將位於計算堆棧頂部的無符號值轉換爲有符號 int64,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U 將位於計算堆棧頂部的有符號值轉換爲 unsigned natural int,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U_Un 將位於計算堆棧頂部的無符號值轉換爲 unsigned natural int,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U1 將位於計算堆棧頂部的有符號值轉換爲 unsigned int8 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U1_Un 將位於計算堆棧頂部的無符號值轉換爲 unsigned int8 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U2 將位於計算堆棧頂部的有符號值轉換爲 unsigned int16 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U2_Un 將位於計算堆棧頂部的無符號值轉換爲 unsigned int16 並將其擴展爲 int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U4 將位於計算堆棧頂部的有符號值轉換爲 unsigned int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U4_Un 將位於計算堆棧頂部的無符號值轉換爲 unsigned int32,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U8 將位於計算堆棧頂部的有符號值轉換爲 unsigned int64,並在溢出時引發 OverflowException。
Public field Static Conv_Ovf_U8_Un 將位於計算堆棧頂部的無符號值轉換爲 unsigned int64,並在溢出時引發 OverflowException。
Public field Static Conv_R_Un 將位於計算堆棧頂部的無符號整數值轉換爲 float32。
Public field Static Conv_R4 將位於計算堆棧頂部的值轉換爲 float32。
Public field Static Conv_R8 將位於計算堆棧頂部的值轉換爲 float64。
Public field Static Conv_U 將位於計算堆棧頂部的值轉換爲 unsigned natural int,然後將其擴展爲 natural int。
Public field Static Conv_U1 將位於計算堆棧頂部的值轉換爲 unsigned int8,然後將其擴展爲 int32。
Public field Static Conv_U2 將位於計算堆棧頂部的值轉換爲 unsigned int16,然後將其擴展爲 int32。
Public field Static Conv_U4 將位於計算堆棧頂部的值轉換爲 unsigned int32,然後將其擴展爲 int32。
Public field Static Conv_U8 將位於計算堆棧頂部的值轉換爲 unsigned int64,然後將其擴展爲 int64。
Public field Static Cpblk 將指定數目的字節從源地址複製到目標地址。
Public field Static Cpobj 將位於對象(&、* 或 natural int 類型)地址的值類型複製到目標對象(&、* 或 natural int 類型)的地址。
Public field Static Div 將兩個值相除並將結果作爲浮點(F 類型)或商(int32 類型)推送到計算堆棧上。
Public field Static Div_Un 兩個無符號整數值相除並將結果 ( int32 ) 推送到計算堆棧上。
Public field Static Dup 複製計算堆棧上當前最頂端的值,然後將副本推送到計算堆棧上。
Public field Static Endfilter 將控制從異常的 filter 子句轉移回公共語言結構 (CLI) 異常處理程序。
Public field Static Endfinally 將控制從異常塊的 fault 或 finally 子句轉移回公共語言結構 (CLI) 異常處理程序。
Public field Static Initblk 將位於特定地址的內存的指定塊初始化爲給定大小和初始值。
Public field Static Initobj 將位於指定地址的對象的所有字段初始化爲空引用或適當的基元類型的 0。
Public field Static Isinst 測試對象引用(O 類型)是否爲特定類的實例。
Public field Static Ldarg 將參數(由指定索引值引用)加載到堆棧上。
Public field Static Ldarg_0 將索引爲 0 的參數加載到計算堆棧上。
Public field Static Ldarg_1 將索引爲 1 的參數加載到計算堆棧上。
Public field Static Ldarg_2 將索引爲 2 的參數加載到計算堆棧上。
Public field Static Ldarg_3 將索引爲 3 的參數加載到計算堆棧上。
Public field Static Ldarg_S 將參數(由指定的短格式索引引用)加載到計算堆棧上。
Public field Static Ldarga 將參數地址加載到計算堆棧上。
Public field Static Ldarga_S 以短格式將參數地址加載到計算堆棧上。
Public field Static Ldc_I4 將所提供的 int32 類型的值作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_0 將整數值 0 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_1 將整數值 1 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_2 將整數值 2 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_3 將整數值 3 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_4 將整數值 4 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_5 將整數值 5 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_6 將整數值 6 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_7 將整數值 7 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_8 將整數值 8 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_M1 將整數值 -1 作爲 int32 推送到計算堆棧上。
Public field Static Ldc_I4_S 將提供的 int8 值作爲 int32 推送到計算堆棧上(短格式)。
Public field Static Ldc_I8 將所提供的 int64 類型的值作爲 int64 推送到計算堆棧上。
Public field Static Ldc_R4 將所提供的 float32 類型的值作爲 F (float) 類型推送到計算堆棧上。
Public field Static Ldc_R8 將所提供的 float64 類型的值作爲 F (float) 類型推送到計算堆棧上。
Public field Static Ldelem 按照指令中指定的類型,將指定數組索引中的元素加載到計算堆棧的頂部。
Public field Static Ldelem_I 將位於指定數組索引處的 natural int 類型的元素作爲 natural int 加載到計算堆棧的頂部。
Public field Static Ldelem_I1 將位於指定數組索引處的 int8 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelem_I2 將位於指定數組索引處的 int16 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelem_I4 將位於指定數組索引處的 int32 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelem_I8 將位於指定數組索引處的 int64 類型的元素作爲 int64 加載到計算堆棧的頂部。
Public field Static Ldelem_R4 將位於指定數組索引處的 float32 類型的元素作爲 F 類型(浮點型)加載到計算堆棧的頂部。
Public field Static Ldelem_R8 將位於指定數組索引處的 float64 類型的元素作爲 F 類型(浮點型)加載到計算堆棧的頂部。
Public field Static Ldelem_Ref 將位於指定數組索引處的包含對象引用的元素作爲 O 類型(對象引用)加載到計算堆棧的頂部。
Public field Static Ldelem_U1 將位於指定數組索引處的 unsigned int8 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelem_U2 將位於指定數組索引處的 unsigned int16 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelem_U4 將位於指定數組索引處的 unsigned int32 類型的元素作爲 int32 加載到計算堆棧的頂部。
Public field Static Ldelema 將位於指定數組索引的數組元素的地址作爲 & 類型(託管指針)加載到計算堆棧的頂部。
Public field Static Ldfld 查找對象中其引用當前位於計算堆棧的字段的值。
Public field Static Ldflda 查找對象中其引用當前位於計算堆棧的字段的地址。
Public field Static Ldftn 將指向實現特定方法的本機代碼的非託管指針(natural int 類型)推送到計算堆棧上。
Public field Static Ldind_I 將 natural int 類型的值作爲 natural int 間接加載到計算堆棧上。
Public field Static Ldind_I1 將 int8 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldind_I2 將 int16 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldind_I4 將 int32 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldind_I8 將 int64 類型的值作爲 int64 間接加載到計算堆棧上。
Public field Static Ldind_R4 將 float32 類型的值作爲 F (float) 類型間接加載到計算堆棧上。
Public field Static Ldind_R8 將 float64 類型的值作爲 F (float) 類型間接加載到計算堆棧上。
Public field Static Ldind_Ref 將對象引用作爲 O(對象引用)類型間接加載到計算堆棧上。
Public field Static Ldind_U1 將 unsigned int8 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldind_U2 將 unsigned int16 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldind_U4 將 unsigned int32 類型的值作爲 int32 間接加載到計算堆棧上。
Public field Static Ldlen 將從零開始的、一維數組的元素的數目推送到計算堆棧上。
Public field Static Ldloc 將指定索引處的局部變量加載到計算堆棧上。
Public field Static Ldloc_0 將索引 0 處的局部變量加載到計算堆棧上。
Public field Static Ldloc_1 將索引 1 處的局部變量加載到計算堆棧上。
Public field Static Ldloc_2 將索引 2 處的局部變量加載到計算堆棧上。
Public field Static Ldloc_3 將索引 3 處的局部變量加載到計算堆棧上。
Public field Static Ldloc_S 將特定索引處的局部變量加載到計算堆棧上(短格式)。
Public field Static Ldloca 將位於特定索引處的局部變量的地址加載到計算堆棧上。
Public field Static Ldloca_S 將位於特定索引處的局部變量的地址加載到計算堆棧上(短格式)。
Public field Static Ldnull 將空引用(O 類型)推送到計算堆棧上。
Public field Static Ldobj 將地址指向的值類型對象複製到計算堆棧的頂部。
Public field Static Ldsfld 將靜態字段的值推送到計算堆棧上。
Public field Static Ldsflda 將靜態字段的地址推送到計算堆棧上。
Public field Static Ldstr 推送對元數據中存儲的字符串的新對象引用。
Public field Static Ldtoken 將元數據標記轉換爲其運行時表示形式,並將其推送到計算堆棧上。
Public field Static Ldvirtftn 將指向實現與指定對象關聯的特定虛方法的本機代碼的非託管指針(natural int 類型)推送到計算堆棧上。
Public field Static Leave 退出受保護的代碼區域,無條件將控制轉移到特定目標指令。
Public field Static Leave_S 退出受保護的代碼區域,無條件將控制轉移到目標指令(縮寫形式)。
Public field Static Localloc 從本地動態內存池分配特定數目的字節並將第一個分配的字節的地址(瞬態指針,* 類型)推送到計算堆棧上。
Public field Static Mkrefany 將對特定類型實例的類型化引用推送到計算堆棧上。
Public field Static Mul 將兩個值相乘並將結果推送到計算堆棧上。
Public field Static Mul_Ovf 將兩個整數值相乘,執行溢出檢查,並將結果推送到計算堆棧上。
Public field Static Mul_Ovf_Un 將兩個無符號整數值相乘,執行溢出檢查,並將結果推送到計算堆棧上。
Public field Static Neg 對一個值執行求反並將結果推送到計算堆棧上。
Public field Static Newarr 將對新的從零開始的一維數組(其元素屬於特定類型)的對象引用推送到計算堆棧上。
Public field Static Newobj 創建一個值類型的新對象或新實例,並將對象引用(O 類型)推送到計算堆棧上。
Public field Static Nop 如果修補操作碼,則填充空間。儘管可能消耗處理週期,但未執行任何有意義的操作。
Public field Static Not 計算堆棧頂部整數值的按位求補並將結果作爲相同的類型推送到計算堆棧上。
Public field Static Or 計算位於堆棧頂部的兩個整數值的按位求補並將結果推送到計算堆棧上。
Public field Static Pop 移除當前位於計算堆棧頂部的值。
Public field Static Prefix1 此指令爲保留指令。
Public field Static Prefix2 此指令爲保留指令。
Public field Static Prefix3 此指令爲保留指令。
Public field Static Prefix4 此指令爲保留指令。
Public field Static Prefix5 此指令爲保留指令。
Public field Static Prefix6 此指令爲保留指令。
Public field Static Prefix7 此指令爲保留指令。
Public field Static Prefixref 此指令爲保留指令。
Public field Static Readonly 指定後面的數組地址操作在運行時不執行類型檢查,並且返回可變性受限的託管指針。
Public field Static Refanytype 檢索嵌入在類型化引用內的類型標記。
Public field Static Refanyval 檢索嵌入在類型化引用內的地址(& 類型)。
Public field Static Rem 將兩個值相除並將餘數推送到計算堆棧上。
Public field Static Rem_Un 將兩個無符號值相除並將餘數推送到計算堆棧上。
Public field Static Ret 從當前方法返回,並將返回值(如果存在)從調用方的計算堆棧推送到被調用方的計算堆棧上。
Public field Static Rethrow 再次引發當前異常。
Public field Static Shl 將整數值左移(用零填充)指定的位數,並將結果推送到計算堆棧上。
Public field Static Shr 將整數值右移(保留符號)指定的位數,並將結果推送到計算堆棧上。
Public field Static Shr_Un 將無符號整數值右移(用零填充)指定的位數,並將結果推送到計算堆棧上。
Public field Static Sizeof 將提供的值類型的大小(以字節爲單位)推送到計算堆棧上。
Public field Static Starg 將位於計算堆棧頂部的值存儲到位於指定索引的參數槽中。
Public field Static Starg_S 將位於計算堆棧頂部的值存儲在參數槽中的指定索引處(短格式)。
Public field Static Stelem 用計算堆棧中的值替換給定索引處的數組元素,其類型在指令中指定。
Public field Static Stelem_I 用計算堆棧上的 natural int 值替換給定索引處的數組元素。
Public field Static Stelem_I1 用計算堆棧上的 int8 值替換給定索引處的數組元素。
Public field Static Stelem_I2 用計算堆棧上的 int16 值替換給定索引處的數組元素。
Public field Static Stelem_I4 用計算堆棧上的 int32 值替換給定索引處的數組元素。
Public field Static Stelem_I8 用計算堆棧上的 int64 值替換給定索引處的數組元素。
Public field Static Stelem_R4 用計算堆棧上的 float32 值替換給定索引處的數組元素。
Public field Static Stelem_R8 用計算堆棧上的 float64 值替換給定索引處的數組元素。
Public field Static Stelem_Ref 用計算堆棧上的對象 ref 值(O 類型)替換給定索引處的數組元素。
Public field Static Stfld 用新值替換在對象引用或指針的字段中存儲的值。
Public field Static Stind_I 在所提供的地址存儲 natural int 類型的值。
Public field Static Stind_I1 在所提供的地址存儲 int8 類型的值。
Public field Static Stind_I2 在所提供的地址存儲 int16 類型的值。
Public field Static Stind_I4 在所提供的地址存儲 int32 類型的值。
Public field Static Stind_I8 在所提供的地址存儲 int64 類型的值。
Public field Static Stind_R4 在所提供的地址存儲 float32 類型的值。
Public field Static Stind_R8 在所提供的地址存儲 float64 類型的值。
Public field Static Stind_Ref 存儲所提供地址處的對象引用值。
Public field Static Stloc 從計算堆棧的頂部彈出當前值並將其存儲到指定索引處的局部變量列表中。
Public field Static Stloc_0 從計算堆棧的頂部彈出當前值並將其存儲到索引 0 處的局部變量列表中。
Public field Static Stloc_1 從計算堆棧的頂部彈出當前值並將其存儲到索引 1 處的局部變量列表中。
Public field Static Stloc_2 從計算堆棧的頂部彈出當前值並將其存儲到索引 2 處的局部變量列表中。
Public field Static Stloc_3 從計算堆棧的頂部彈出當前值並將其存儲到索引 3 處的局部變量列表中。
Public field Static Stloc_S 從計算堆棧的頂部彈出當前值並將其存儲在局部變量列表中的 index 處(短格式)。
Public field Static Stobj 將指定類型的值從計算堆棧複製到所提供的內存地址中。
Public field Static Stsfld 用來自計算堆棧的值替換靜態字段的值。
Public field Static Sub 從其他值中減去一個值並將結果推送到計算堆棧上。
Public field Static Sub_Ovf 從另一值中減去一個整數值,執行溢出檢查,並且將結果推送到計算堆棧上。
Public field Static Sub_Ovf_Un 從另一值中減去一個無符號整數值,執行溢出檢查,並且將結果推送到計算堆棧上。
Public field Static Switch 實現跳轉表。
Public field Static Tailcall 執行後綴的方法調用指令,以便在執行實際調用指令前移除當前方法的堆棧幀。
Public field Static Throw 引發當前位於計算堆棧上的異常對象。
Public field Static Unaligned 指示當前位於計算堆棧上的地址可能沒有與緊接的 ldind、stind、ldfld、stfld、ldobj、stobj、initblk 或 cpblk 指令的自然大小對齊。
Public field Static Unbox 將值類型的已裝箱的表示形式轉換爲其未裝箱的形式。
Public field Static Unbox_Any 將指令中指定類型的已裝箱的表示形式轉換成未裝箱形式。
Public field Static Volatile 指定當前位於計算堆棧頂部的地址可以是易失的,並且讀取該位置的結果不能被緩存,或者對該地址的多個存儲區不能被取消。

Public field Static Xor 計算位於計算堆棧頂部的兩個值的按位異或,並且將結果推送到計算堆棧上。


  • 流控制

  • 無條件跳轉

    • 跳轉: Br/Br.s

    • 爲假:BrFalse/..

    • 爲真: BrTrue/… S,偏移量,stort


  • 有條件跳轉

    • 等於跳轉: beq/beq

    • ….


  • 返回

    • ret


  • 運算

  • dup 複製

  • pop 退棧

  • ldc.<type> <data>加載

  • Ldind.<type> <pointer>間接加載

  • Stind.<type> <pointer>間接保存

  • Conv.<type> 類型轉換

  • ldarg/ladarg.s 加載參數

  • ldarga/…加載參數地址

  • starg 保存至參數

  • ldloc/…. 加載局部變量地址

  • Stloc/.. 保存至局部變量


    • 方法調用

    • Jmp<token> 跳轉

    • Call<token> 非虛函數調用

    • Callvirt<token> 虛函數調用

    • Ldftn<token> 加載函數地址

    • ldvirtftn<token> 加載虛函數地址

    • Calli<token>本地調用

    • Tail call: Tail.前綴 函數式編程,將函數前面的內容clear

    • Newojb<token> 創建對象實例

    • ldstr<token> 加載

    • box/unbox 裝、拆箱

    • lsinst<token>/castclass<token> 轉換

轉自:http://www.cnblogs.com/zhcw/archive/2012/08/14/2638147.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章