OpCodes Klasa

Definicja

Zawiera reprezentacje pól instrukcji Microsoft Intermediate Language (MSIL) dotyczących emisji przez składowe klasy ILGenerator (takie jak Emit(OpCode)).

public ref class OpCodes
public class OpCodes
[System.Runtime.InteropServices.ComVisible(true)]
public class OpCodes
type OpCodes = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type OpCodes = class
Public Class OpCodes
Dziedziczenie
OpCodes
Atrybuty

Przykłady

W poniższym przykładzie pokazano konstrukcję metody dynamicznej używającej ILGenerator do emitowania OpCodes do klasy MethodBuilder.


using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class EmitWriteLineDemo {

   public static Type CreateDynamicType() {
       Type[] ctorParams = new Type[] {typeof(int),
                   typeof(int)};
    
       AppDomain myDomain = Thread.GetDomain();
       AssemblyName myAsmName = new AssemblyName();
       myAsmName.Name = "MyDynamicAssembly";

       AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
                      myAsmName,
                      AssemblyBuilderAccess.Run);

       ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
                                    "Point.dll");

       TypeBuilder pointTypeBld = pointModule.DefineType("Point",
                                  TypeAttributes.Public);

       FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
                                                      FieldAttributes.Public);
       FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
                                                      FieldAttributes.Public);

       Type objType = Type.GetType("System.Object");
       ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);

       ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
                                   MethodAttributes.Public,
                                   CallingConventions.Standard,
                                   ctorParams);
       ILGenerator ctorIL = pointCtor.GetILGenerator();

       // First, you build the constructor.
       ctorIL.Emit(OpCodes.Ldarg_0);
       ctorIL.Emit(OpCodes.Call, objCtor);
       ctorIL.Emit(OpCodes.Ldarg_0);
       ctorIL.Emit(OpCodes.Ldarg_1);
       ctorIL.Emit(OpCodes.Stfld, xField);
       ctorIL.Emit(OpCodes.Ldarg_0);
       ctorIL.Emit(OpCodes.Ldarg_2);
       ctorIL.Emit(OpCodes.Stfld, yField);
       ctorIL.Emit(OpCodes.Ret);

       //  Now, you'll build a method to output some information on the
       // inside your dynamic class. This method will have the following
       // definition in C#:
    //  public void WritePoint()

       MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
                                     "WritePoint",
                             MethodAttributes.Public,
                                             typeof(void),
                                             null);

       ILGenerator writeStrIL = writeStrMthd.GetILGenerator();

       // The below ILGenerator created demonstrates a few ways to create
       // string output through STDIN.

       // ILGenerator.EmitWriteLine(string) will generate a ldstr and a
       // call to WriteLine for you.

       writeStrIL.EmitWriteLine("The value of this current instance is:");

       // Here, you will do the hard work yourself. First, you need to create
       // the string we will be passing and obtain the correct WriteLine overload
       // for said string. In the below case, you are substituting in two values,
       // so the chosen overload is Console.WriteLine(string, object, object).

       String inStr = "({0}, {1})";
       Type[] wlParams = new Type[] {typeof(string),
                     typeof(object),
                     typeof(object)};

       // We need the MethodInfo to pass into EmitCall later.

       MethodInfo writeLineMI = typeof(Console).GetMethod(
                            "WriteLine",
                        wlParams);

       // Push the string with the substitutions onto the stack.
       // This is the first argument for WriteLine - the string one.

       writeStrIL.Emit(OpCodes.Ldstr, inStr);

       // Since the second argument is an object, and it corresponds to
       // to the substitution for the value of our integer field, you
       // need to box that field to an object. First, push a reference
       // to the current instance, and then push the value stored in
       // field 'x'. We need the reference to the current instance (stored
       // in local argument index 0) so Ldfld can load from the correct
       // instance (this one).

       writeStrIL.Emit(OpCodes.Ldarg_0);
       writeStrIL.Emit(OpCodes.Ldfld, xField);

       // Now, we execute the box opcode, which pops the value of field 'x',
       // returning a reference to the integer value boxed as an object.

       writeStrIL.Emit(OpCodes.Box, typeof(int));

       // Atop the stack, you'll find our string inStr, followed by a reference
       // to the boxed value of 'x'. Now, you need to likewise box field 'y'.

       writeStrIL.Emit(OpCodes.Ldarg_0);
       writeStrIL.Emit(OpCodes.Ldfld, yField);
       writeStrIL.Emit(OpCodes.Box, typeof(int));

       // Now, you have all of the arguments for your call to
       // Console.WriteLine(string, object, object) atop the stack:
       // the string InStr, a reference to the boxed value of 'x', and
       // a reference to the boxed value of 'y'.

       // Call Console.WriteLine(string, object, object) with EmitCall.

       writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);

       // Lastly, EmitWriteLine can also output the value of a field
       // using the overload EmitWriteLine(FieldInfo).

       writeStrIL.EmitWriteLine("The value of 'x' is:");
       writeStrIL.EmitWriteLine(xField);
       writeStrIL.EmitWriteLine("The value of 'y' is:");
       writeStrIL.EmitWriteLine(yField);

       // Since we return no value (void), the ret opcode will not
       // return the top stack value.

       writeStrIL.Emit(OpCodes.Ret);

       return pointTypeBld.CreateType();
   }

   public static void Main() {

      object[] ctorParams = new object[2];

      Console.Write("Enter a integer value for X: ");
      string myX = Console.ReadLine();
      Console.Write("Enter a integer value for Y: ");
      string myY = Console.ReadLine();

      Console.WriteLine("---");

      ctorParams[0] = Convert.ToInt32(myX);
      ctorParams[1] = Convert.ToInt32(myY);

      Type ptType = CreateDynamicType();

      object ptInstance = Activator.CreateInstance(ptType, ctorParams);
      ptType.InvokeMember("WritePoint",
              BindingFlags.InvokeMethod,
              null,
              ptInstance,
              new object[0]);
   }
}

Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit

 _

Class EmitWriteLineDemo
   
   
   Public Shared Function CreateDynamicType() As Type

      Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
      
      Dim myDomain As AppDomain = Thread.GetDomain()
      Dim myAsmName As New AssemblyName()
      myAsmName.Name = "MyDynamicAssembly"
      
      Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
      
      Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
      
      Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
                                   TypeAttributes.Public)
      
      Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
                                GetType(Integer), _
                                FieldAttributes.Public)
      Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
                                GetType(Integer), _
                                FieldAttributes.Public)
      
      
      Dim objType As Type = Type.GetType("System.Object")
      Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
      
      Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
                             MethodAttributes.Public, _
                             CallingConventions.Standard, _
                             ctorParams)
      Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
      
      
      ' First, you build the constructor.

      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Call, objCtor)
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Ldarg_1)
      ctorIL.Emit(OpCodes.Stfld, xField)
      ctorIL.Emit(OpCodes.Ldarg_0)
      ctorIL.Emit(OpCodes.Ldarg_2)
      ctorIL.Emit(OpCodes.Stfld, yField)
      ctorIL.Emit(OpCodes.Ret)
      
      '  Now, you'll build a method to output some information on the
      ' inside your dynamic class. This method will have the following
      ' definition in C#:
      '  Public Sub WritePoint() 

      Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
                                    MethodAttributes.Public, _
                                    Nothing, Nothing)
      
      Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
      
      ' The below ILGenerator created demonstrates a few ways to create
      ' string output through STDIN. 
      ' ILGenerator.EmitWriteLine(string) will generate a ldstr and a 
      ' call to WriteLine for you.

      writeStrIL.EmitWriteLine("The value of this current instance is:")
      
      ' Here, you will do the hard work yourself. First, you need to create
      ' the string we will be passing and obtain the correct WriteLine overload
      ' for said string. In the below case, you are substituting in two values,
      ' so the chosen overload is Console.WriteLine(string, object, object).

      Dim inStr As [String] = "({0}, {1})"
      Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
      
      ' We need the MethodInfo to pass into EmitCall later.

      Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
      
      ' Push the string with the substitutions onto the stack.
      ' This is the first argument for WriteLine - the string one. 

      writeStrIL.Emit(OpCodes.Ldstr, inStr)
      
      ' Since the second argument is an object, and it corresponds to
      ' to the substitution for the value of our integer field, you 
      ' need to box that field to an object. First, push a reference
      ' to the current instance, and then push the value stored in
      ' field 'x'. We need the reference to the current instance (stored
      ' in local argument index 0) so Ldfld can load from the correct
      ' instance (this one).

      writeStrIL.Emit(OpCodes.Ldarg_0)
      writeStrIL.Emit(OpCodes.Ldfld, xField)
      
      ' Now, we execute the box opcode, which pops the value of field 'x',
      ' returning a reference to the integer value boxed as an object.

      writeStrIL.Emit(OpCodes.Box, GetType(Integer))
      
      ' Atop the stack, you'll find our string inStr, followed by a reference
      ' to the boxed value of 'x'. Now, you need to likewise box field 'y'.

      writeStrIL.Emit(OpCodes.Ldarg_0)
      writeStrIL.Emit(OpCodes.Ldfld, yField)
      writeStrIL.Emit(OpCodes.Box, GetType(Integer))
      
      ' Now, you have all of the arguments for your call to
      ' Console.WriteLine(string, object, object) atop the stack:
      ' the string InStr, a reference to the boxed value of 'x', and
      ' a reference to the boxed value of 'y'.
      ' Call Console.WriteLine(string, object, object) with EmitCall.

      writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
      
      ' Lastly, EmitWriteLine can also output the value of a field
      ' using the overload EmitWriteLine(FieldInfo).

      writeStrIL.EmitWriteLine("The value of 'x' is:")
      writeStrIL.EmitWriteLine(xField)
      writeStrIL.EmitWriteLine("The value of 'y' is:")
      writeStrIL.EmitWriteLine(yField)
      
      ' Since we return no value (void), the ret opcode will not
      ' return the top stack value.

      writeStrIL.Emit(OpCodes.Ret)
      
      Return pointTypeBld.CreateType()

   End Function 'CreateDynamicType
    
   
   Public Shared Sub Main()
      
      Dim ctorParams(1) As Object
      
      Console.Write("Enter a integer value for X: ")
      Dim myX As String = Console.ReadLine()
      Console.Write("Enter a integer value for Y: ")
      Dim myY As String = Console.ReadLine()
      
      Console.WriteLine("---")
      
      ctorParams(0) = Convert.ToInt32(myX)
      ctorParams(1) = Convert.ToInt32(myY)
      
      Dim ptType As Type = CreateDynamicType()

      Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)

      ptType.InvokeMember("WritePoint", _
              BindingFlags.InvokeMethod, _
              Nothing, ptInstance, Nothing)

   End Sub

End Class

Uwagi

Aby uzyskać szczegółowy opis kodów operacji składowych, zobacz dokumentację infrastruktury języka wspólnego (CLI), szczególnie "Partition III: CIL Instruction Set" (Partycja III: zestaw instrukcji CIL) i "Partition II: Metadata Definition and Semantics" (Partycja III: zestaw instrukcji CIL) i "Partition II: Metadata Definition and Semantics". Aby uzyskać więcej informacji, zobacz ECMA 335 Common Language Infrastructure (CLI).

Pola

Nazwa Opis
Add

Dodaje dwie wartości i wypycha wynik do stosu oceny.

Add_Ovf

Dodaje dwie liczby całkowite, wykonuje sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

Add_Ovf_Un

Dodaje dwie niepodpisane wartości całkowite, wykonuje sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

And

Oblicza bitowe wartości AND z dwóch wartości i wypycha wynik do stosu oceny.

Arglist

Zwraca niezarządzany wskaźnik do listy argumentów bieżącej metody.

Beq

Transferuje kontrolkę do instrukcji docelowej, jeśli dwie wartości są równe.

Beq_S

Transferuje kontrolkę do instrukcji docelowej (skrócona forma), jeśli dwie wartości są równe.

Bge

Przenosi kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest większa lub równa drugiej wartości.

Bge_S

Transferuje kontrolkę do instrukcji docelowej (skrócona forma), jeśli pierwsza wartość jest większa lub równa drugiej wartości.

Bge_Un

Transferuje kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest większa niż druga wartość, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Bge_Un_S

Przenosi kontrolkę do instrukcji docelowej (formularza krótkiego), jeśli pierwsza wartość jest większa niż druga wartość, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Bgt

Transferuje kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest większa niż druga wartość.

Bgt_S

Transferuje kontrolkę do instrukcji docelowej (skrócona forma), jeśli pierwsza wartość jest większa niż druga wartość.

Bgt_Un

Transferuje kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest większa niż druga wartość, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Bgt_Un_S

Przenosi kontrolkę do instrukcji docelowej (formularza krótkiego), jeśli pierwsza wartość jest większa niż druga wartość, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Ble

Przenosi kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest mniejsza lub równa drugiej wartości.

Ble_S

Przenosi kontrolkę do instrukcji docelowej (formularza krótkiego), jeśli pierwsza wartość jest mniejsza lub równa drugiej wartości.

Ble_Un

Przenosi kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest mniejsza lub równa drugiej wartości, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Ble_Un_S

Przenosi kontrolkę do instrukcji docelowej (skróconej formy), jeśli pierwsza wartość jest mniejsza lub równa drugiej wartości, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Blt

Transferuje kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest mniejsza niż druga wartość.

Blt_S

Transferuje kontrolkę do instrukcji docelowej (skrócona forma), jeśli pierwsza wartość jest mniejsza niż druga wartość.

Blt_Un

Przenosi kontrolkę do instrukcji docelowej, jeśli pierwsza wartość jest mniejsza niż druga, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Blt_Un_S

Przenosi kontrolkę do instrukcji docelowej (skrócona forma), jeśli pierwsza wartość jest mniejsza niż druga wartość, podczas porównywania niepodpisanych wartości całkowitych lub nieurządkowanych wartości zmiennoprzecinkowych.

Bne_Un

Transferuje kontrolkę do instrukcji docelowej, gdy dwie niepodpisane wartości całkowite lub nieurządzone wartości zmiennoprzecinkowe nie są równe.

Bne_Un_S

Transferuje kontrolkę do instrukcji docelowej (skróconej formy), gdy dwie niepodpisane wartości całkowite lub nieurządzone wartości zmiennoprzecinkowe nie są równe.

Box

Konwertuje typ wartości na odwołanie do obiektu (typ O).

Br

Bezwarunkowo przekazuje kontrolę do instrukcji docelowej.

Br_S

Bezwarunkowo przekazuje kontrolę do instrukcji docelowej (krótka forma).

Break

Sygnalizuje, że infrastruktura języka wspólnego (CLI) informuje debuger o tym, że punkt przerwania został potknięty.

Brfalse

Przenosi kontrolkę do instrukcji docelowej, jeśli value jest false, odwołanie o wartości null (Nothing w Visual Basic) lub zero.

Brfalse_S

Transferuje kontrolkę do instrukcji docelowej, jeśli value to false, odwołanie o wartości null lub zero.

Brtrue

Transferuje kontrolkę do instrukcji docelowej, jeśli value ma wartość , nie ma truewartości null lub innej niż zero.

Brtrue_S

Transferuje kontrolkę do instrukcji docelowej (skrócona forma), jeśli value ma wartość , nie ma truewartości null lub innej niż zero.

Call

Wywołuje metodę wskazaną przez deskryptor metody przekazanej.

Calli

Wywołuje metodę wskazaną na stosie oceny (jako wskaźnik do punktu wejścia) z argumentami opisanymi przez konwencję wywoływania.

Callvirt

Wywołuje metodę z opóźnieniem związaną z obiektem, wypychając wartość zwracaną do stosu oceny.

Castclass

Próbuje rzutować obiekt przekazany przez odwołanie do określonej klasy.

Ceq

Porównuje dwie wartości. Jeśli są równe, wartość całkowita 1 (int32) jest wypychana do stosu oceny; w przeciwnym razie wartość 0 (int32) jest wypychana do stosu oceny.

Cgt

Porównuje dwie wartości. Jeśli pierwsza wartość jest większa niż druga, wartość całkowita 1 (int32) jest wypychana do stosu oceny; w przeciwnym razie wartość 0 (int32) jest wypychana do stosu oceny.

Cgt_Un

Porównuje dwie niepodpisane lub nieurządkowane wartości. Jeśli pierwsza wartość jest większa niż druga, wartość całkowita 1 (int32) jest wypychana do stosu oceny; w przeciwnym razie wartość 0 (int32) jest wypychana do stosu oceny.

Ckfinite

ArithmeticException Zwraca wartość, jeśli wartość nie jest liczbą skończona.

Clt

Porównuje dwie wartości. Jeśli pierwsza wartość jest mniejsza niż druga, wartość całkowita 1 (int32) jest wypychana do stosu oceny; w przeciwnym razie wartość 0 (int32) jest wypychana do stosu oceny.

Clt_Un

Porównuje niepodpisane lub nieurządkowane wartości value1 i value2. Jeśli value1 wartość jest mniejsza niż value2, wartość całkowita 1 (int32) jest wypychana do stosu oceny. W przeciwnym razie wartość 0 (int32) zostanie wypchnięta do stosu oceny.

Constrained

Ogranicza typ, na którym jest wykonywane wywołanie metody wirtualnej.

Conv_I

Konwertuje wartość na stos oceny na native int.

Conv_I1

Konwertuje wartość na stos oceny na int8, a następnie rozszerza ją int32na .

Conv_I2

Konwertuje wartość na stos oceny na int16, a następnie rozszerza ją int32na .

Conv_I4

Konwertuje wartość na stos oceny na int32.

Conv_I8

Konwertuje wartość na stos oceny na int64.

Conv_Ovf_I

Konwertuje wartość podpisaną na stos oceny na podpisany native int, zgłaszany przy przepełnieniu OverflowException .

Conv_Ovf_I_Un

Konwertuje wartość niepodpisaną na stos oceny na podpisany native int, zgłaszany przez przepełnienie OverflowException .

Conv_Ovf_I1

Konwertuje wartość ze znakiem na stos oceny na podpisany int8 i rozszerza go na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_I1_Un

Konwertuje niepodpisaną wartość na stos oceny na podpisany int8 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_I2

Konwertuje wartość ze znakiem na stos oceny na podpisany int16 i rozszerza go na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_I2_Un

Konwertuje niepodpisaną wartość na stos oceny na podpisany int16 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_I4

Konwertuje wartość podpisaną na stos oceny na podpisany int32, zgłaszany przy przepełnieniu OverflowException .

Conv_Ovf_I4_Un

Konwertuje wartość niepodpisaną na stos oceny na podpisany int32, zgłaszany przez przepełnienie OverflowException .

Conv_Ovf_I8

Konwertuje wartość podpisaną na stos oceny na podpisany int64, zgłaszany przy przepełnieniu OverflowException .

Conv_Ovf_I8_Un

Konwertuje wartość niepodpisaną na stos oceny na podpisany int64, zgłaszany przez przepełnienie OverflowException .

Conv_Ovf_U

Konwertuje wartość ze znakiem na stos oceny na unsigned native int, zgłaszając przepełnienie OverflowException .

Conv_Ovf_U_Un

Konwertuje niepodpisaną wartość na stos oceny na unsigned native intwartość , zgłaszaną przez przepełnienie OverflowException .

Conv_Ovf_U1

Konwertuje wartość ze znakiem na stos oceny na unsigned int8 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_U1_Un

Konwertuje niepodpisaną wartość na stos oceny na unsigned int8 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_U2

Konwertuje wartość ze znakiem na stos oceny na unsigned int16 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_U2_Un

Konwertuje niepodpisaną wartość na stos oceny na unsigned int16 i rozszerza ją na int32wartość , zgłaszając przepełnienie OverflowException .

Conv_Ovf_U4

Konwertuje wartość ze znakiem na stos oceny na unsigned int32, zgłaszając przepełnienie OverflowException .

Conv_Ovf_U4_Un

Konwertuje niepodpisaną wartość na stos oceny na unsigned int32wartość , zgłaszaną przez przepełnienie OverflowException .

Conv_Ovf_U8

Konwertuje wartość ze znakiem na stos oceny na unsigned int64, zgłaszając przepełnienie OverflowException .

Conv_Ovf_U8_Un

Konwertuje niepodpisaną wartość na stos oceny na unsigned int64wartość , zgłaszaną przez przepełnienie OverflowException .

Conv_R_Un

Konwertuje niepodpisaną wartość całkowitą na stos oceny na float32.

Conv_R4

Konwertuje wartość na stos oceny na float32.

Conv_R8

Konwertuje wartość na stos oceny na float64.

Conv_U

Konwertuje wartość na stos oceny na unsigned native int, i rozszerza ją na native int.

Conv_U1

Konwertuje wartość na stos oceny na unsigned int8, i rozszerza ją na int32.

Conv_U2

Konwertuje wartość na stos oceny na unsigned int16, i rozszerza ją na int32.

Conv_U4

Konwertuje wartość na stos oceny na unsigned int32, i rozszerza ją na int32.

Conv_U8

Konwertuje wartość na stos oceny na unsigned int64, i rozszerza ją na int64.

Cpblk

Kopiuje określoną liczbę bajtów z adresu źródłowego do adresu docelowego.

Cpobj

Kopiuje typ wartości znajdujący się pod adresem obiektu (typ lub &) do adresu obiektu docelowego (typ native intlub &). native int

Div

Dzieli dwie wartości i wypycha wynik jako zmiennoprzecinkowe (typ ) lub iloraz (typ Fint32) na stos oceny.

Div_Un

Dzieli dwie niepodpisane wartości całkowite i wypycha wynik (int32) do stosu oceny.

Dup

Kopiuje bieżącą najwyższą wartość na stosie oceny, a następnie wypycha kopię do stosu oceny.

Endfilter

Przenosi kontrolkę z filter klauzuli wyjątku z powrotem do programu obsługi wyjątków infrastruktury języka wspólnego (CLI).

Endfinally

Przenosi kontrolkę z klauzuli fault or finally bloku wyjątku z powrotem do procedury obsługi wyjątków infrastruktury języka wspólnego (CLI).

Initblk

Inicjuje określony blok pamięci pod określonym adresem dla danego rozmiaru i wartości początkowej.

Initobj

Inicjuje każde pole typu wartości pod określonym adresem do odwołania o wartości null lub 0 odpowiedniego typu pierwotnego.

Isinst

Sprawdza, czy odwołanie do obiektu (typ O) jest wystąpieniem określonej klasy.

Jmp

Zamyka bieżącą metodę i przechodzi do określonej metody.

Ldarg

Ładuje argument (przywoływany przez określoną wartość indeksu) na stos.

Ldarg_0

Ładuje argument w indeksie 0 na stos oceny.

Ldarg_1

Ładuje argument w indeksie 1 na stos oceny.

Ldarg_2

Ładuje argument w indeksie 2 do stosu oceny.

Ldarg_3

Ładuje argument w indeksie 3 na stos oceny.

Ldarg_S

Ładuje argument (przywoływany przez określony indeks krótkiej formy) na stos oceny.

Ldarga

Załaduj adres argumentu do stosu oceny.

Ldarga_S

Załaduj adres argumentu w skrócie do stosu oceny.

Ldc_I4

Wypycha podaną wartość typu int32 do stosu oceny jako int32.

Ldc_I4_0

Wypycha wartość całkowitą 0 do stosu oceny jako int32.

Ldc_I4_1

Wypycha wartość całkowitą 1 do stosu oceny jako int32.

Ldc_I4_2

Wypycha wartość całkowitą 2 do stosu oceny jako int32.

Ldc_I4_3

Wypycha wartość całkowitą 3 do stosu oceny jako int32.

Ldc_I4_4

Wypycha wartość całkowitą o wartości 4 do stosu oceny jako int32.

Ldc_I4_5

Wypycha wartość całkowitą 5 do stosu oceny jako int32.

Ldc_I4_6

Wypycha wartość całkowitą 6 do stosu oceny jako .int32

Ldc_I4_7

Wypycha wartość całkowitą 7 do stosu oceny jako int32.

Ldc_I4_8

Wypycha wartość całkowitą o wartości 8 do stosu oceny jako int32.

Ldc_I4_M1

Wypycha wartość całkowitą -1 do stosu oceny jako .int32

Ldc_I4_S

Wypycha podaną int8 wartość do stosu oceny jako krótką formę int32.

Ldc_I8

Wypycha podaną wartość typu int64 do stosu oceny jako int64.

Ldc_R4

Wypycha podaną wartość typu float32 do stosu oceny jako typ F (float).

Ldc_R8

Wypycha podaną wartość typu float64 do stosu oceny jako typ F (float).

Ldelem

Ładuje element w określonym indeksie tablicy na początku stosu oceny jako typ określony w instrukcji.

Ldelem_I

Ładuje element z typem native int w określonym indeksie tablicy na początku stosu oceny jako native int.

Ldelem_I1

Ładuje element z typem int8 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelem_I2

Ładuje element z typem int16 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelem_I4

Ładuje element z typem int32 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelem_I8

Ładuje element z typem int64 w określonym indeksie tablicy na początku stosu oceny jako int64.

Ldelem_R4

Ładuje element z typem float32 w określonym indeksie tablicy na początku stosu oceny jako typ F (float).

Ldelem_R8

Ładuje element z typem float64 w określonym indeksie tablicy na początku stosu oceny jako typ F (float).

Ldelem_Ref

Ładuje element zawierający odwołanie do obiektu w określonym indeksie tablicy na początku stosu oceny jako typ O (odwołanie do obiektu).

Ldelem_U1

Ładuje element z typem unsigned int8 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelem_U2

Ładuje element z typem unsigned int16 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelem_U4

Ładuje element z typem unsigned int32 w określonym indeksie tablicy na początku stosu oceny jako int32.

Ldelema

Ładuje adres elementu tablicy w określonym indeksie tablicy na początku stosu oceny jako typ & (wskaźnik zarządzany).

Ldfld

Znajduje wartość pola w obiekcie, którego odwołanie znajduje się obecnie na stosie oceny.

Ldflda

Znajduje adres pola w obiekcie, którego odwołanie znajduje się obecnie na stosie oceny.

Ldftn

Wypycha wskaźnik niezarządzany (typ native int) do kodu natywnego implementowania określonej metody na stosie oceny.

Ldind_I

Ładuje wartość typu native int jako wartość native int na stosie oceny pośrednio.

Ldind_I1

Ładuje wartość typu int8 jako wartość int32 na stosie oceny pośrednio.

Ldind_I2

Ładuje wartość typu int16 jako wartość int32 na stosie oceny pośrednio.

Ldind_I4

Ładuje wartość typu int32 jako wartość int32 na stosie oceny pośrednio.

Ldind_I8

Ładuje wartość typu int64 jako wartość int64 na stosie oceny pośrednio.

Ldind_R4

Ładuje wartość typu float32 jako typ F (zmiennoprzecinkowy) na stos oceny pośrednio.

Ldind_R8

Ładuje wartość typu float64 jako typ F (zmiennoprzecinkowy) na stos oceny pośrednio.

Ldind_Ref

Ładuje odwołanie do obiektu jako typ O (odwołanie do obiektu) na stos oceny pośrednio.

Ldind_U1

Ładuje wartość typu unsigned int8 jako wartość int32 na stosie oceny pośrednio.

Ldind_U2

Ładuje wartość typu unsigned int16 jako wartość int32 na stosie oceny pośrednio.

Ldind_U4

Ładuje wartość typu unsigned int32 jako wartość int32 na stosie oceny pośrednio.

Ldlen

Wypycha liczbę elementów tablicy jednowymiarowej opartej na zera na stosie oceny.

Ldloc

Ładuje zmienną lokalną w określonym indeksie na stos oceny.

Ldloc_0

Ładuje zmienną lokalną na indeksie 0 na stos oceny.

Ldloc_1

Ładuje zmienną lokalną na indeksie 1 na stos oceny.

Ldloc_2

Ładuje zmienną lokalną na indeksie 2 na stos oceny.

Ldloc_3

Ładuje zmienną lokalną w indeksie 3 na stos oceny.

Ldloc_S

Ładuje zmienną lokalną w określonym indeksie na stos oceny, krótki formularz.

Ldloca

Ładuje adres zmiennej lokalnej w określonym indeksie na stosie oceny.

Ldloca_S

Ładuje adres zmiennej lokalnej w określonym indeksie na stos oceny, krótki formularz.

Ldnull

Wypycha odwołanie o wartości null (typ O) do stosu oceny.

Ldobj

Kopiuje obiekt typu wartości wskazywany przez adres na początku stosu oceny.

Ldsfld

Wypycha wartość pola statycznego do stosu oceny.

Ldsflda

Wypycha adres pola statycznego do stosu oceny.

Ldstr

Wypycha nowe odwołanie do obiektu do literału ciągu przechowywanego w metadanych.

Ldtoken

Konwertuje token metadanych na reprezentację środowiska uruchomieniowego, wypychając go do stosu oceny.

Ldvirtftn

Wypycha niezarządzany wskaźnik (typ native int) do kodu natywnego implementowania określonej metody wirtualnej skojarzonej z określonym obiektem na stosie oceny.

Leave

Zamyka chroniony region kodu, bezwarunkowo przenosząc kontrolę do określonej instrukcji docelowej.

Leave_S

Zamyka chroniony region kodu, bezwarunkowo przesyłając kontrolkę do instrukcji docelowej (krótki formularz).

Localloc

Przydziela pewną liczbę bajtów z lokalnej puli pamięci dynamicznej i wypycha adres (wskaźnik przejściowy, typ *) pierwszego przydzielonego bajtu do stosu oceny.

Mkrefany

Wypycha wpisane odwołanie do wystąpienia określonego typu na stosie oceny.

Mul

Mnoży dwie wartości i wypycha wynik na stos oceny.

Mul_Ovf

Mnoży dwie wartości całkowite, wykonuje sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

Mul_Ovf_Un

Mnoży dwie niepodpisane wartości całkowite, przeprowadza sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

Neg

Neguje wartość i wypycha wynik do stosu oceny.

Newarr

Wypycha odwołanie do obiektu do nowej tablicy jednowymiarowej opartej na zera, której elementy mają określony typ do stosu oceny.

Newobj

Tworzy nowy obiekt lub nowe wystąpienie typu wartości, wypychając odwołanie do obiektu (typ O) na stos oceny.

Nop

Wypełnia miejsce, jeśli kody operacyjne są poprawiane. Nie jest wykonywana żadna znacząca operacja, chociaż można używać cyklu przetwarzania.

Not

Oblicza bitowe uzupełnienie wartości całkowitej na stosie i wypycha wynik do stosu oceny co ten sam typ.

Or

Oblicz bitowe uzupełnienie dwóch wartości całkowitych na stosie i wypchnie wynik do stosu oceny.

Pop

Usuwa wartość obecnie na stosie oceny.

Prefix1

Jest to instrukcja zarezerwowana.

Prefix2

Jest to instrukcja zarezerwowana.

Prefix3

Jest to instrukcja zarezerwowana.

Prefix4

Jest to instrukcja zarezerwowana.

Prefix5

Jest to instrukcja zarezerwowana.

Prefix6

Jest to instrukcja zarezerwowana.

Prefix7

Jest to instrukcja zarezerwowana.

Prefixref

Jest to instrukcja zarezerwowana.

Readonly

Określa, że kolejna operacja adresu tablicy nie wykonuje sprawdzania typu w czasie wykonywania i że zwraca zarządzany wskaźnik, którego niezmienność jest ograniczona.

Refanytype

Pobiera token typu osadzony w typowym odwołaniu.

Refanyval

Pobiera adres (typ &) osadzony w typie odwołania.

Rem

Dzieli dwie wartości i wypycha resztę do stosu oceny.

Rem_Un

Dzieli dwie niepodpisane wartości i wypycha resztę do stosu oceny.

Ret

Zwraca wartość z bieżącej metody, wypychając wartość zwracaną (jeśli istnieje) ze stosu oceny wywoływanego do stosu oceny obiektu wywołującego.

Rethrow

Ponownie zwraca bieżący wyjątek.

Shl

Przesuwa wartość całkowitą z lewej strony (w zerach) przez określoną liczbę bitów, wypychając wynik do stosu oceny.

Shr

Przesuwa wartość całkowitą (w logowaniu) po prawej stronie o określoną liczbę bitów, wypychając wynik do stosu oceny.

Shr_Un

Przesuwa niepodpisaną wartość całkowitą (w zerach) po prawej stronie o określoną liczbę bitów, wypychając wynik do stosu oceny.

Sizeof

Wypycha rozmiar w bajtach podanego typu wartości do stosu oceny.

Starg

Przechowuje wartość na szczycie stosu oceny w miejscu argumentu w określonym indeksie.

Starg_S

Przechowuje wartość na szczycie stosu oceny w miejscu argumentu w określonym indeksie, krótkim formularzu.

Stelem

Zamienia element tablicy w danym indeksie na wartość na stosie oceny, którego typ jest określony w instrukcji.

Stelem_I

Zamienia element tablicy w danym indeksie na native int wartość na stosie oceny.

Stelem_I1

Zamienia element tablicy w danym indeksie na int8 wartość na stosie oceny.

Stelem_I2

Zamienia element tablicy w danym indeksie na int16 wartość na stosie oceny.

Stelem_I4

Zamienia element tablicy w danym indeksie na int32 wartość na stosie oceny.

Stelem_I8

Zamienia element tablicy w danym indeksie na int64 wartość na stosie oceny.

Stelem_R4

Zamienia element tablicy w danym indeksie na float32 wartość na stosie oceny.

Stelem_R8

Zamienia element tablicy w danym indeksie na float64 wartość na stosie oceny.

Stelem_Ref

Zamienia element tablicy w danym indeksie na wartość ref obiektu (typ O) na stosie oceny.

Stfld

Zamienia wartość przechowywaną w polu odwołania do obiektu lub wskaźnika nową wartością.

Stind_I

Przechowuje wartość typu native int pod podanym adresem.

Stind_I1

Przechowuje wartość typu int8 pod podanym adresem.

Stind_I2

Przechowuje wartość typu int16 pod podanym adresem.

Stind_I4

Przechowuje wartość typu int32 pod podanym adresem.

Stind_I8

Przechowuje wartość typu int64 pod podanym adresem.

Stind_R4

Przechowuje wartość typu float32 pod podanym adresem.

Stind_R8

Przechowuje wartość typu float64 pod podanym adresem.

Stind_Ref

Przechowuje wartość odwołania do obiektu pod podanym adresem.

Stloc

Wyświetla bieżącą wartość z góry stosu oceny i przechowuje ją na liście zmiennych lokalnych w określonym indeksie.

Stloc_0

Wyświetla bieżącą wartość z góry stosu oceny i zapisuje ją na liście zmiennych lokalnych na indeksie 0.

Stloc_1

Wyświetla bieżącą wartość z góry stosu oceny i zapisuje ją na liście zmiennych lokalnych na indeksie 1.

Stloc_2

Wyświetla bieżącą wartość z góry stosu oceny i przechowuje ją na liście zmiennych lokalnych na indeksie 2.

Stloc_3

Wyświetla bieżącą wartość z góry stosu oceny i zapisuje ją na liście zmiennych lokalnych na indeksie 3.

Stloc_S

Wyświetla bieżącą wartość z góry stosu oceny i zapisuje ją na liście zmiennych lokalnych w lokalizacji index (krótka forma).

Stobj

Kopiuje wartość określonego typu ze stosu oceny do dostarczonego adresu pamięci.

Stsfld

Zamienia wartość pola statycznego na wartość ze stosu oceny.

Sub

Odejmuje jedną wartość z innej i wypycha wynik do stosu oceny.

Sub_Ovf

Odejmuje jedną wartość całkowitą z innej, wykonuje sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

Sub_Ovf_Un

Odejmuje jedną niepodpisaną wartość całkowitą z innej, wykonuje sprawdzanie przepełnienia i wypycha wynik do stosu oceny.

Switch

Implementuje tabelę skoków.

Tailcall

Wykonuje instrukcję wywołania metody postfiksowanej, tak aby ramka stosu bieżącej metody została usunięta przed wykonaniem rzeczywistej instrukcji wywołania.

Throw

Zgłasza obecnie obiekt wyjątku na stosie oceny.

Unaligned

Wskazuje, że adres obecnie na szczycie stosu oceny może nie być wyrównany do naturalnego rozmiaru bezpośrednio następującej ldindinstrukcji , stindldfldstfldldobjstobj, initblk, lub .cpblk

Unbox

Konwertuje skrzynkową reprezentację typu wartości na formularz bez skrzynki odbiorczej.

Unbox_Any

Konwertuje skrzynkową reprezentację typu określonego w instrukcji na formularz bez skrzynki odbiorczej.

Volatile

Określa, że adres obecnie na szczycie stosu oceny może być niestabilny, a wyniki odczytu tej lokalizacji nie mogą być buforowane lub że nie można pominąć wielu magazynów w tej lokalizacji.

Xor

Oblicza bitowe XOR dwóch pierwszych wartości na stosie oceny, wypychając wynik do stosu oceny.

Metody

Nazwa Opis
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
TakesSingleByteArgument(OpCode)

Zwraca wartość true lub false, jeśli podany kod operacji przyjmuje jeden argument bajtowy.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy