中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET框架中間語言IL指令總結

發布時間:2021-09-02 11:51:03 來源:億速云 閱讀:156 作者:chen 欄目:開發技術

本篇內容主要講解“.NET框架中間語言IL指令總結”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“.NET框架中間語言IL指令總結”吧!

IL是.NET框架中中間語言(Intermediate Language)的縮寫。使用.NET框架提供的編譯器可以直接將源程序編譯為.exe或.dll文件,但此時編譯出來的程序代碼并不是CPU能直接執行的機器代碼,而是一種中間語言IL(Intermediate Language)的代碼。

名稱說明
Add將兩個值相加并將結果推送到計算堆棧上。
Add.Ovf將兩個整數相加,執行溢出檢查,并且將結果推送到計算堆棧上。
Add.Ovf.Un將兩個無符號整數值相加,執行溢出檢查,并且將結果推送到計算堆棧上。
And計算兩個值的按位“與”并將結果推送到計算堆棧上。
Arglist返回指向當前方法的參數列表的非托管指針。
Beq如果兩個值相等,則將控制轉移到目標指令。
Beq.S如果兩個值相等,則將控制轉移到目標指令(短格式)。
Bge如果第一個值大于或等于第二個值,則將控制轉移到目標指令。
Bge.S如果第一個值大于或等于第二個值,則將控制轉移到目標指令(短格式)。
Bge.Un當比較無符號整數值或不可排序的浮點型值時,如果第一個值大于第二個值,則將控制轉移到目標指令。
Bge.Un.S當比較無符號整數值或不可排序的浮點型值時,如果第一個值大于第二個值,則將控制轉移到目標指令(短格式)。
Bgt如果第一個值大于第二個值,則將控制轉移到目標指令。
Bgt.S如果第一個值大于第二個值,則將控制轉移到目標指令(短格式)。
Bgt.Un當比較無符號整數值或不可排序的浮點型值時,如果第一個值大于第二個值,則將控制轉移到目標指令。
Bgt.Un.S當比較無符號整數值或不可排序的浮點型值時,如果第一個值大于第二個值,則將控制轉移到目標指令(短格式)。
Ble如果第一個值小于或等于第二個值,則將控制轉移到目標指令。
Ble.S如果第一個值小于或等于第二個值,則將控制轉移到目標指令(短格式)。
Ble.Un當比較無符號整數值或不可排序的浮點型值時,如果第一個值小于或等于第二個值,則將控制轉移到目標指令。
Ble.Un.S當比較無符號整數值或不可排序的浮點值時,如果第一個值小于或等于第二個值,則將控制權轉移到目標指令(短格式)。
Blt如果第一個值小于第二個值,則將控制轉移到目標指令。
Blt.S如果第一個值小于第二個值,則將控制轉移到目標指令(短格式)。
Blt.Un當比較無符號整數值或不可排序的浮點型值時,如果第一個值小于第二個值,則將控制轉移到目標指令。
Blt.Un.S當比較無符號整數值或不可排序的浮點型值時,如果第一個值小于第二個值,則將控制轉移到目標指令(短格式)。
Bne.Un當兩個無符號整數值或不可排序的浮點型值不相等時,將控制轉移到目標指令。
Bne.Un.S當兩個無符號整數值或不可排序的浮點型值不相等時,將控制轉移到目標指令(短格式)。
Box將值類轉換為對象引用(O 類型)。
Br無條件地將控制轉移到目標指令。
Br.S無條件地將控制轉移到目標指令(短格式)。
Break向公共語言結構 (CLI) 發出信號以通知調試器已撞上了一個斷點。
Brfalse如果 value 為 false、空引用(Visual Basic 中的 Nothing)或零,則將控制轉移到目標指令。
Brfalse.S如果 value 為 false、空引用或零,則將控制轉移到目標指令。
Brtrue如果 value 為 true、非空或非零,則將控制轉移到目標指令。
Brtrue.S如果 value 為 true、非空或非零,則將控制轉移到目標指令(短格式)。
Call調用由傳遞的方法說明符指示的方法。
Calli通過調用約定描述的參數調用在計算堆棧上指示的方法(作為指向入口點的指針)。
Callvirt對對象調用后期綁定方法,并且將返回值推送到計算堆棧上。
Castclass嘗試將引用傳遞的對象轉換為指定的類。
Ceq比較兩個值。如果這兩個值相等,則將整數值 1 (int32) 推送到計算堆棧上;否則,將 0 (int32) 推送到計算堆棧上。
Cgt比較兩個值。如果第一個值大于第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Cgt.Un比較兩個無符號的或不可排序的值。如果第一個值大于第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Ckfinite如果值不是有限數,則引發 ArithmeticException。
Clt比較兩個值。如果第一個值小于第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Clt.Un比較無符號的或不可排序的值 value1 和 value2。如果 value1 小于 value2,則將整數值 1 (int32 ) 推送到計算堆棧上;反之,將 0 ( int32 ) 推送到計算堆棧上。
Constrained約束要對其進行虛方法調用的類型。
Conv.I將位于計算堆棧頂部的值轉換為 native int。
Conv.I1將位于計算堆棧頂部的值轉換為 int8,然后將其擴展(填充)為 int32。
Conv.I2將位于計算堆棧頂部的值轉換為 int16,然后將其擴展(填充)為 int32。
Conv.I4將位于計算堆棧頂部的值轉換為 int32。
Conv.I8將位于計算堆棧頂部的值轉換為 int64。
Conv.Ovf.I將位于計算堆棧頂部的有符號值轉換為有符號 native int,并在溢出時引發 OverflowException。
Conv.Ovf.I.Un將位于計算堆棧頂部的無符號值轉換為有符號 native int,并在溢出時引發 OverflowException。
Conv.Ovf.I1將位于計算堆棧頂部的有符號值轉換為有符號 int8 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I1.Un將位于計算堆棧頂部的無符號值轉換為有符號 int8 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I2將位于計算堆棧頂部的有符號值轉換為有符號 int16 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I2.Un將位于計算堆棧頂部的無符號值轉換為有符號 int16 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I4將位于計算堆棧頂部的有符號值轉換為有符號 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I4.Un將位于計算堆棧頂部的無符號值轉換為有符號 int32,并在溢出時引發 OverflowException。
Conv.Ovf.I8將位于計算堆棧頂部的有符號值轉換為有符號 int64,并在溢出時引發 OverflowException。
Conv.Ovf.I8.Un將位于計算堆棧頂部的無符號值轉換為有符號 int64,并在溢出時引發 OverflowException。
Conv.Ovf.U將位于計算堆棧頂部的有符號值轉換為 unsigned native int,并在溢出時引發 OverflowException。
Conv.Ovf.U.Un將位于計算堆棧頂部的無符號值轉換為 unsigned native int,并在溢出時引發 OverflowException。
Conv.Ovf.U1將位于計算堆棧頂部的有符號值轉換為 unsigned int8 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.U1.Un將位于計算堆棧頂部的無符號值轉換為 unsigned int8 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.U2將位于計算堆棧頂部的有符號值轉換為 unsigned int16 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.U2.Un將位于計算堆棧頂部的無符號值轉換為 unsigned int16 并將其擴展為 int32,并在溢出時引發 OverflowException。
Conv.Ovf.U4將位于計算堆棧頂部的有符號值轉換為 unsigned int32,并在溢出時引發 OverflowException。
Conv.Ovf.U4.Un將位于計算堆棧頂部的無符號值轉換為 unsigned int32,并在溢出時引發 OverflowException。
Conv.Ovf.U8將位于計算堆棧頂部的有符號值轉換為 unsigned int64,并在溢出時引發 OverflowException。
Conv.Ovf.U8.Un將位于計算堆棧頂部的無符號值轉換為 unsigned int64,并在溢出時引發 OverflowException。
Conv.R.Un將位于計算堆棧頂部的無符號整數值轉換為 float32。
Conv.R4將位于計算堆棧頂部的值轉換為 float32。
Conv.R8將位于計算堆棧頂部的值轉換為 float64。
Conv.U將位于計算堆棧頂部的值轉換為 unsigned native int,然后將其擴展為 native int。
Conv.U1將位于計算堆棧頂部的值轉換為 unsigned int8,然后將其擴展為 int32。
Conv.U2將位于計算堆棧頂部的值轉換為 unsigned int16,然后將其擴展為 int32。
Conv.U4將位于計算堆棧頂部的值轉換為 unsigned int32,然后將其擴展為 int32。
Conv.U8將位于計算堆棧頂部的值轉換為 unsigned int64,然后將其擴展為 int64。
Cpblk將指定數目的字節從源地址復制到目標地址。
Cpobj將位于對象(&、* 或 native int 類型)地址的值類型復制到目標對象(&、* 或 native int 類型)的地址。
Div將兩個值相除并將結果作為浮點(F 類型)或商(int32 類型)推送到計算堆棧上。
Div.Un兩個無符號整數值相除并將結果 ( int32 ) 推送到計算堆棧上。
Dup復制計算堆棧上當前最頂端的值,然后將副本推送到計算堆棧上。
Endfilter將控制從異常的 filter 子句轉移回公共語言結構 (CLI) 異常處理程序。
Endfinally將控制從異常塊的 fault 或 finally 子句轉移回公共語言結構 (CLI) 異常處理程序。
Initblk將位于特定地址的內存的指定塊初始化為給定大小和初始值。
Initobj將位于指定地址的值類型的每個字段初始化為空引用或適當的基元類型的 0。
Isinst測試對象引用(O 類型)是否為特定類的實例。
Jmp退出當前方法并跳至指定方法。
Ldarg將參數(由指定索引值引用)加載到堆棧上。
Ldarg.0將索引為 0 的參數加載到計算堆棧上。
Ldarg.1將索引為 1 的參數加載到計算堆棧上。
Ldarg.2將索引為 2 的參數加載到計算堆棧上。
Ldarg.3將索引為 3 的參數加載到計算堆棧上。
Ldarg.S將參數(由指定的短格式索引引用)加載到計算堆棧上。
Ldarga將參數地址加載到計算堆棧上。
Ldarga.S以短格式將參數地址加載到計算堆棧上。
Ldc.I4將所提供的 int32 類型的值作為 int32 推送到計算堆棧上。
Ldc.I4.0將整數值 0 作為 int32 推送到計算堆棧上。
Ldc.I4.1將整數值 1 作為 int32 推送到計算堆棧上。
Ldc.I4.2將整數值 2 作為 int32 推送到計算堆棧上。
Ldc.I4.3將整數值 3 作為 int32 推送到計算堆棧上。
Ldc.I4.4將整數值 4 作為 int32 推送到計算堆棧上。
Ldc.I4.5將整數值 5 作為 int32 推送到計算堆棧上。
Ldc.I4.6將整數值 6 作為 int32 推送到計算堆棧上。
Ldc.I4.7將整數值 7 作為 int32 推送到計算堆棧上。
Ldc.I4.8將整數值 8 作為 int32 推送到計算堆棧上。
Ldc.I4.M1將整數值 -1 作為 int32 推送到計算堆棧上。
Ldc.I4.S將提供的 int8 值作為 int32 推送到計算堆棧上(短格式)。
Ldc.I8將所提供的 int64 類型的值作為 int64 推送到計算堆棧上。
Ldc.R4將所提供的 float32 類型的值作為 F (float) 類型推送到計算堆棧上。
Ldc.R8將所提供的 float64 類型的值作為 F (float) 類型推送到計算堆棧上。
Ldelem按照指令中指定的類型,將指定數組索引中的元素加載到計算堆棧的頂部。
Ldelem.I將位于指定數組索引處的 native int 類型的元素作為 native int 加載到計算堆棧的頂部。
Ldelem.I1將位于指定數組索引處的 int8 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelem.I2將位于指定數組索引處的 int16 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelem.I4將位于指定數組索引處的 int32 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelem.I8將位于指定數組索引處的 int64 類型的元素作為 int64 加載到計算堆棧的頂部。
Ldelem.R4將位于指定數組索引處的 float32 類型的元素作為 F 類型(浮點型)加載到計算堆棧的頂部。
Ldelem.R8將位于指定數組索引處的 float64 類型的元素作為 F 類型(浮點型)加載到計算堆棧的頂部。
Ldelem.Ref將位于指定數組索引處的包含對象引用的元素作為 O 類型(對象引用)加載到計算堆棧的頂部。
Ldelem.U1將位于指定數組索引處的 unsigned int8 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelem.U2將位于指定數組索引處的 unsigned int16 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelem.U4將位于指定數組索引處的 unsigned int32 類型的元素作為 int32 加載到計算堆棧的頂部。
Ldelema將位于指定數組索引的數組元素的地址作為 & 類型(托管指針)加載到計算堆棧的頂部。
Ldfld查找對象中其引用當前位于計算堆棧的字段的值。
Ldflda查找對象中其引用當前位于計算堆棧的字段的地址。
Ldftn將指向實現特定方法的本機代碼的非托管指針(native int 類型)推送到計算堆棧上。
Ldind.I將 native int 類型的值作為 native int 間接加載到計算堆棧上。
Ldind.I1將 int8 類型的值作為 int32 間接加載到計算堆棧上。
Ldind.I2將 int16 類型的值作為 int32 間接加載到計算堆棧上。
Ldind.I4將 int32 類型的值作為 int32 間接加載到計算堆棧上。
Ldind.I8將 int64 類型的值作為 int64 間接加載到計算堆棧上。
Ldind.R4將 float32 類型的值作為 F (float) 類型間接加載到計算堆棧上。
Ldind.R8將 float64 類型的值作為 F (float) 類型間接加載到計算堆棧上。
Ldind.Ref將對象引用作為 O(對象引用)類型間接加載到計算堆棧上。
Ldind.U1將 unsigned int8 類型的值作為 int32 間接加載到計算堆棧上。
Ldind.U2將 unsigned int16 類型的值作為 int32 間接加載到計算堆棧上。
Ldind.U4將 unsigned int32 類型的值作為 int32 間接加載到計算堆棧上。
Ldlen將從零開始的、一維數組的元素的數目推送到計算堆棧上。
Ldloc將指定索引處的局部變量加載到計算堆棧上。
Ldloc.0將索引 0 處的局部變量加載到計算堆棧上。
Ldloc.1將索引 1 處的局部變量加載到計算堆棧上。
Ldloc.2將索引 2 處的局部變量加載到計算堆棧上。
Ldloc.3將索引 3 處的局部變量加載到計算堆棧上。
Ldloc.S將特定索引處的局部變量加載到計算堆棧上(短格式)。
Ldloca將位于特定索引處的局部變量的地址加載到計算堆棧上。
Ldloca.S將位于特定索引處的局部變量的地址加載到計算堆棧上(短格式)。
Ldnull將空引用(O 類型)推送到計算堆棧上。
Ldobj將地址指向的值類型對象復制到計算堆棧的頂部。
Ldsfld將靜態字段的值推送到計算堆棧上。
Ldsflda將靜態字段的地址推送到計算堆棧上。
Ldstr推送對元數據中存儲的字符串的新對象引用。
Ldtoken將元數據標記轉換為其運行時表示形式,并將其推送到計算堆棧上。
Ldvirtftn將指向實現與指定對象關聯的特定虛方法的本機代碼的非托管指針(native int 類型)推送到計算堆棧上。
Leave退出受保護的代碼區域,無條件將控制轉移到特定目標指令。
Leave.S退出受保護的代碼區域,無條件將控制轉移到目標指令(縮寫形式)。
Localloc從本地動態內存池分配特定數目的字節并將第一個分配的字節的地址(瞬態指針,* 類型)推送到計算堆棧上。
Mkrefany將對特定類型實例的類型化引用推送到計算堆棧上。
Mul將兩個值相乘并將結果推送到計算堆棧上。
Mul.Ovf將兩個整數值相乘,執行溢出檢查,并將結果推送到計算堆棧上。
Mul.Ovf.Un將兩個無符號整數值相乘,執行溢出檢查,并將結果推送到計算堆棧上。
Neg對一個值執行求反并將結果推送到計算堆棧上。
Newarr將對新的從零開始的一維數組(其元素屬于特定類型)的對象引用推送到計算堆棧上。
Newobj創建一個值類型的新對象或新實例,并將對象引用(O 類型)推送到計算堆棧上。
Nop如果修補操作碼,則填充空間。盡管可能消耗處理周期,但未執行任何有意義的操作。
Not計算堆棧頂部整數值的按位求補并將結果作為相同的類型推送到計算堆棧上。
Or計算位于堆棧頂部的兩個整數值的按位求補并將結果推送到計算堆棧上。
Pop移除當前位于計算堆棧頂部的值。
Prefix1基礎結構。此指令為保留指令。
Prefix2基礎結構。此指令為保留指令。
Prefix3基礎結構。此指令為保留指令。
Prefix4基礎結構。此指令為保留指令。
Prefix5基礎結構。此指令為保留指令。
Prefix6基礎結構。此指令為保留指令。
Prefix7基礎結構。此指令為保留指令。
Prefixref基礎結構。此指令為保留指令。
Readonly指定后面的數組地址操作在運行時不執行類型檢查,并且返回可變性受限的托管指針。
Refanytype檢索嵌入在類型化引用內的類型標記。
Refanyval檢索嵌入在類型化引用內的地址(& 類型)。
Rem將兩個值相除并將余數推送到計算堆棧上。
Rem.Un將兩個無符號值相除并將余數推送到計算堆棧上。
Ret從當前方法返回,并將返回值(如果存在)從調用方的計算堆棧推送到被調用方的計算堆棧上。
Rethrow再次引發當前異常。
Shl將整數值左移(用零填充)指定的位數,并將結果推送到計算堆棧上。
Shr將整數值右移(保留符號)指定的位數,并將結果推送到計算堆棧上。
Shr.Un將無符號整數值右移(用零填充)指定的位數,并將結果推送到計算堆棧上。
Sizeof將提供的值類型的大小(以字節為單位)推送到計算堆棧上。
Starg將位于計算堆棧頂部的值存儲到位于指定索引的參數槽中。
Starg.S將位于計算堆棧頂部的值存儲在參數槽中的指定索引處(短格式)。
Stelem用計算堆棧中的值替換給定索引處的數組元素,其類型在指令中指定。
Stelem.I用計算堆棧上的 native int 值替換給定索引處的數組元素。
Stelem.I1用計算堆棧上的 int8 值替換給定索引處的數組元素。
Stelem.I2用計算堆棧上的 int16 值替換給定索引處的數組元素。
Stelem.I4用計算堆棧上的 int32 值替換給定索引處的數組元素。
Stelem.I8用計算堆棧上的 int64 值替換給定索引處的數組元素。
Stelem.R4用計算堆棧上的 float32 值替換給定索引處的數組元素。
Stelem.R8用計算堆棧上的 float64 值替換給定索引處的數組元素。
Stelem.Ref用計算堆棧上的對象 ref 值(O 類型)替換給定索引處的數組元素。
Stfld用新值替換在對象引用或指針的字段中存儲的值。
Stind.I在所提供的地址存儲 native int 類型的值。
Stind.I1在所提供的地址存儲 int8 類型的值。
Stind.I2在所提供的地址存儲 int16 類型的值。
Stind.I4在所提供的地址存儲 int32 類型的值。
Stind.I8在所提供的地址存儲 int64 類型的值。
Stind.R4在所提供的地址存儲 float32 類型的值。
Stind.R8在所提供的地址存儲 float64 類型的值。
Stind.Ref存儲所提供地址處的對象引用值。
Stloc從計算堆棧的頂部彈出當前值并將其存儲到指定索引處的局部變量列表中。
Stloc.0從計算堆棧的頂部彈出當前值并將其存儲到索引 0 處的局部變量列表中。
Stloc.1從計算堆棧的頂部彈出當前值并將其存儲到索引 1 處的局部變量列表中。
Stloc.2從計算堆棧的頂部彈出當前值并將其存儲到索引 2 處的局部變量列表中。
Stloc.3從計算堆棧的頂部彈出當前值并將其存儲到索引 3 處的局部變量列表中。
Stloc.S從計算堆棧的頂部彈出當前值并將其存儲在局部變量列表中的 index 處(短格式)。
Stobj將指定類型的值從計算堆棧復制到所提供的內存地址中。
Stsfld用來自計算堆棧的值替換靜態字段的值。
Sub從其他值中減去一個值并將結果推送到計算堆棧上。
Sub.Ovf從另一值中減去一個整數值,執行溢出檢查,并且將結果推送到計算堆棧上。
Sub.Ovf.Un從另一值中減去一個無符號整數值,執行溢出檢查,并且將結果推送到計算堆棧上。
Switch實現跳轉表。
Tailcall執行后綴的方法調用指令,以便在執行實際調用指令前移除當前方法的堆棧幀。
Throw引發當前位于計算堆棧上的異常對象。
Unaligned指示當前位于計算堆棧上的地址可能沒有與緊接的 ldind、stind、ldfld、stfld、ldobj、stobj、initblk 或 cpblk 指令的自然大小對齊。
Unbox將值類型的已裝箱的表示形式轉換為其未裝箱的形式。
Unbox.Any將指令中指定類型的已裝箱的表示形式轉換成未裝箱形式。
Volatile指定當前位于計算堆棧頂部的地址可以是易失的,并且讀取該位置的結果不能被緩存,或者對該地址的多個存儲區不能被取消。
Xor計算位于計算堆棧頂部的兩個值的按位異或,并且將結果推送到計算堆棧上。

到此,相信大家對“.NET框架中間語言IL指令總結”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萝北县| 浦东新区| 竹山县| 娄底市| 安宁市| 克拉玛依市| 绥棱县| 通州市| 航空| 平远县| 塔河县| 英吉沙县| 南城县| 突泉县| 荆门市| 呼图壁县| 遵义县| 方山县| 常山县| 毕节市| 页游| 东丰县| 防城港市| 扶余县| 赤水市| 鲁甸县| 历史| 阳泉市| 灵寿县| 松江区| 宝清县| 嘉义县| 银川市| 深水埗区| 禄丰县| 浦北县| 樟树市| 隆化县| 永平县| 武平县| 昌平区|