OpCodes Klas

Definitie

Biedt veldweergaven van de Microsoft MSIL-instructies (Intermediate Language) voor emissie door de ILGenerator klasseleden (zoals 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
Overname
OpCodes
Kenmerken

Voorbeelden

In het volgende voorbeeld ziet u de constructie van een dynamische methode die wordt gebruikt ILGenerator om in OpCodes een 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

Opmerkingen

Zie de DOCUMENTATIE van Common Language Infrastructure (CLI) voor een gedetailleerde beschrijving van de lid-opcodes, met name Partition III: CIL Instruction Set en Partition II: Metadata Definition and Semantics. Zie ECMA 335 Common Language Infrastructure (CLI) voor meer informatie.

Velden

Name Description
Add

Voegt twee waarden toe en pusht het resultaat naar de evaluatiestack.

Add_Ovf

Voegt twee gehele getallen toe, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

Add_Ovf_Un

Voegt twee niet-ondertekende gehele getallen toe, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

And

Berekent de bitsgewijze EN van twee waarden en pusht het resultaat naar de evaluatiestack.

Arglist

Retourneert een onbeheerde aanwijzer naar de argumentenlijst van de huidige methode.

Beq

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als twee waarden gelijk zijn.

Beq_S

Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als twee waarden gelijk zijn.

Bge

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan of gelijk is aan de tweede waarde.

Bge_S

Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde groter is dan of gelijk is aan de tweede waarde.

Bge_Un

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Bge_Un_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Bgt

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde.

Bgt_S

Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde.

Bgt_Un

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Bgt_Un_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Ble

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde.

Ble_S

Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde.

Ble_Un

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Ble_Un_S

Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Blt

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan de tweede waarde.

Blt_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde kleiner is dan de tweede waarde.

Blt_Un

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Blt_Un_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde kleiner is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden.

Bne_Un

Hiermee wordt het besturingselement overgedragen naar een doelinstructie wanneer twee niet-ondertekende gehele getallen of niet-geordende floatwaarden niet gelijk zijn.

Bne_Un_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) wanneer twee niet-ondertekende gehele getallen of niet-geordende floatwaarden niet gelijk zijn.

Box

Converteert een waardetype naar een objectverwijzing (type O).

Br

Voorwaardelijke overdracht van controle naar een doelinstructie.

Br_S

Voorwaardelijke overdracht van controle naar een doelinstructie (korte vorm).

Break

Geeft de CLI (Common Language Infrastructure) aan om het foutopsporingsprogramma te informeren dat er een onderbrekingspunt is verschoven.

Brfalse

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als value is false, een null-verwijzing (Nothing in Visual Basic) of nul.

Brfalse_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie, indien value dit een null-verwijzing of nul is false.

Brtrue

Hiermee wordt het besturingselement overgedragen naar een doelinstructie als value dat niet null of niet nul is true.

Brtrue_S

Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als value dit is true, niet null of niet-nul.

Call

Roept de methode aan die wordt aangegeven door de doorgegeven methodedescriptor.

Calli

Roept de methode aan die is aangegeven op de evaluatiestack (als een aanwijzer naar een toegangspunt) met argumenten die worden beschreven door een aanroepende conventie.

Callvirt

Roept een late gebonden methode aan voor een object, waardoor de retourwaarde naar de evaluatiestack wordt gepusht.

Castclass

Pogingen om een object te casten dat wordt doorgegeven door verwijzing naar de opgegeven klasse.

Ceq

Vergelijkt twee waarden. Als ze gelijk zijn, wordt de gehele waarde 1 (int32) naar de evaluatiestack gepusht; anders wordt 0 (int32) naar de evaluatiestack gepusht.

Cgt

Vergelijkt twee waarden. Als de eerste waarde groter is dan de tweede, wordt de gehele waarde 1 (int32) naar de evaluatiestack gepusht; anders wordt 0 (int32) naar de evaluatiestack gepusht.

Cgt_Un

Vergelijkt twee niet-ondertekende of niet-geordende waarden. Als de eerste waarde groter is dan de tweede, wordt de gehele waarde 1 (int32) naar de evaluatiestack gepusht; anders wordt 0 (int32) naar de evaluatiestack gepusht.

Ckfinite

ArithmeticException Genereert als waarde geen eindig getal is.

Clt

Vergelijkt twee waarden. Als de eerste waarde kleiner is dan de tweede, wordt de gehele waarde 1 (int32) naar de evaluatiestack gepusht; anders wordt 0 (int32) naar de evaluatiestack gepusht.

Clt_Un

Vergelijkt de niet-ondertekende of niet-geordende waarden value1 en value2. Als value1 dit kleiner is dan value2, wordt de gehele waarde 1 (int32) naar de evaluatiestack gepusht; anders wordt 0 (int32) naar de evaluatiestack gepusht.

Constrained

Hiermee beperkt u het type waarop een aanroep van een virtuele methode wordt uitgevoerd.

Conv_I

Converteert de waarde boven op de evaluatiestack naar native int.

Conv_I1

Converteert de waarde boven op de evaluatiestack naar int8en breidt deze vervolgens (pads) uit naar int32.

Conv_I2

Converteert de waarde boven op de evaluatiestack naar int16en breidt deze vervolgens (pads) uit naar int32.

Conv_I4

Converteert de waarde boven op de evaluatiestack naar int32.

Conv_I8

Converteert de waarde boven op de evaluatiestack naar int64.

Conv_Ovf_I

Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, native intdie overloop OverflowException genereert.

Conv_Ovf_I_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend native inten genereert overloop OverflowException .

Conv_Ovf_I1

Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekend int8 en breidt deze uit naar int32, waardoor OverflowException de overloop wordt overschreden.

Conv_Ovf_I1_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend int8 en breidt deze uit naar int32, die overloop genereert OverflowException .

Conv_Ovf_I2

Hiermee wordt de ondertekende waarde boven op de evaluatiestack geconverteerd naar ondertekend int16 en uitgebreid naar int32, waardoor de overloop wordt overschreden OverflowException .

Conv_Ovf_I2_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend int16 en breidt deze uit naar int32, die overloop genereert OverflowException .

Conv_Ovf_I4

Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, int32die overloop OverflowException genereert.

Conv_Ovf_I4_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend int32en genereert overloop OverflowException .

Conv_Ovf_I8

Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, int64die overloop OverflowException genereert.

Conv_Ovf_I8_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend int64en genereert overloop OverflowException .

Conv_Ovf_U

Converteert de ondertekende waarde boven op de evaluatiestack naar unsigned native int, die overloop OverflowException genereert.

Conv_Ovf_U_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar unsigned native int, die OverflowException overloop genereert.

Conv_Ovf_U1

Converteert de ondertekende waarde boven op de evaluatiestack naar unsigned int8 en breidt deze uit naar int32, waardoor OverflowException de overloop wordt overschreden.

Conv_Ovf_U1_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar unsigned int8 en breidt deze uit naar int32, waardoor OverflowException de overloop wordt overschreden.

Conv_Ovf_U2

Converteert de ondertekende waarde boven op de evaluatiestack naar unsigned int16 en breidt deze uit naar int32, waardoor OverflowException de overloop wordt overschreden.

Conv_Ovf_U2_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar unsigned int16 en breidt deze uit naar int32, waardoor OverflowException de overloop wordt overschreden.

Conv_Ovf_U4

Converteert de ondertekende waarde boven op de evaluatiestack naar unsigned int32, die overloop OverflowException genereert.

Conv_Ovf_U4_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar unsigned int32, die OverflowException overloop genereert.

Conv_Ovf_U8

Converteert de ondertekende waarde boven op de evaluatiestack naar unsigned int64, die overloop OverflowException genereert.

Conv_Ovf_U8_Un

Converteert de niet-ondertekende waarde boven op de evaluatiestack naar unsigned int64, die OverflowException overloop genereert.

Conv_R_Un

Converteert de waarde van het niet-ondertekende gehele getal boven op de evaluatiestack naar float32.

Conv_R4

Converteert de waarde boven op de evaluatiestack naar float32.

Conv_R8

Converteert de waarde boven op de evaluatiestack naar float64.

Conv_U

Converteert de waarde boven op de evaluatiestack naar unsigned native int, en breidt deze uit naar native int.

Conv_U1

Converteert de waarde boven op de evaluatiestack naar unsigned int8, en breidt deze uit naar int32.

Conv_U2

Converteert de waarde boven op de evaluatiestack naar unsigned int16, en breidt deze uit naar int32.

Conv_U4

Converteert de waarde boven op de evaluatiestack naar unsigned int32, en breidt deze uit naar int32.

Conv_U8

Converteert de waarde boven op de evaluatiestack naar unsigned int64, en breidt deze uit naar int64.

Cpblk

Hiermee kopieert u een opgegeven aantal bytes van een bronadres naar een doeladres.

Cpobj

Kopieert het waardetype dat zich bevindt op het adres van een object (type &, of native int) naar het adres van het doelobject (type &, of native int).

Div

Verdeelt twee waarden en pusht het resultaat als een drijvende komma (type F) of quotiënt (type int32) naar de evaluatiestack.

Div_Un

Verdeelt twee niet-ondertekende gehele getallen en pusht het resultaat (int32) naar de evaluatiestack.

Dup

Kopieert de huidige bovenste waarde op de evaluatiestack en pusht de kopie vervolgens naar de evaluatiestack.

Endfilter

Hiermee wordt het beheer van de filter component van een uitzondering teruggezet naar de CLI-uitzonderingshandler (Common Language Infrastructure).

Endfinally

Hiermee wordt het besturingselement van de fault of finally component van een uitzonderingsblok teruggezet naar de CLI-uitzonderingshandler (Common Language Infrastructure).

Initblk

Initialiseert een opgegeven geheugenblok op een specifiek adres voor een bepaalde grootte en initiële waarde.

Initobj

Initialiseert elk veld van het waardetype op een opgegeven adres naar een null-verwijzing of een 0 van het juiste primitieve type.

Isinst

Test of een objectverwijzing (type O) een exemplaar van een bepaalde klasse is.

Jmp

Sluit de huidige methode af en springt naar de opgegeven methode.

Ldarg

Hiermee wordt een argument (waarnaar wordt verwezen door een opgegeven indexwaarde) op de stack geladen.

Ldarg_0

Laadt het argument bij index 0 op de evaluatiestack.

Ldarg_1

Laadt het argument bij index 1 op de evaluatiestack.

Ldarg_2

Laadt het argument bij index 2 op de evaluatiestack.

Ldarg_3

Laadt het argument bij index 3 op de evaluatiestack.

Ldarg_S

Laadt het argument (waarnaar wordt verwezen door een opgegeven korte formulierindex) op de evaluatiestack.

Ldarga

Laad een argumentadres op de evaluatiestack.

Ldarga_S

Laad een argumentadres in korte vorm op de evaluatiestack.

Ldc_I4

Hiermee wordt een opgegeven waarde van het type int32 naar de evaluatiestack gepusht als een int32.

Ldc_I4_0

Hiermee wordt de waarde van het gehele getal van 0 naar de evaluatiestack gepusht als een int32.

Ldc_I4_1

Hiermee wordt de waarde van het gehele getal 1 naar de evaluatiestack gepusht als een int32.

Ldc_I4_2

Hiermee wordt de waarde van het gehele getal van 2 naar de evaluatiestack gepusht als een int32.

Ldc_I4_3

Hiermee wordt de waarde van het gehele getal van 3 naar de evaluatiestack gepusht als een int32.

Ldc_I4_4

Hiermee wordt de waarde van het gehele getal van 4 naar de evaluatiestack gepusht als een int32.

Ldc_I4_5

Hiermee wordt de waarde van het gehele getal van 5 naar de evaluatiestack gepusht als een int32.

Ldc_I4_6

Hiermee wordt de waarde van het gehele getal van 6 naar de evaluatiestack gepusht als een int32.

Ldc_I4_7

Hiermee wordt de waarde van het gehele getal van 7 naar de evaluatiestack gepusht als een int32.

Ldc_I4_8

Hiermee wordt de waarde van het gehele getal van 8 naar de evaluatiestack gepusht als een int32.

Ldc_I4_M1

Pusht de gehele waarde van -1 naar de evaluatiestack als een int32.

Ldc_I4_S

Hiermee wordt de opgegeven int8 waarde naar de evaluatiestack gepusht als een int32korte vorm.

Ldc_I8

Hiermee wordt een opgegeven waarde van het type int64 naar de evaluatiestack gepusht als een int64.

Ldc_R4

Hiermee wordt een opgegeven waarde van het type float32 naar de evaluatiestack gepusht als type F (float).

Ldc_R8

Hiermee wordt een opgegeven waarde van het type float64 naar de evaluatiestack gepusht als type F (float).

Ldelem

Laadt het element op een opgegeven matrixindex boven aan de evaluatiestack als het type dat in de instructie is opgegeven.

Ldelem_I

Laadt het element met het type native int op een opgegeven matrixindex boven aan de evaluatiestack als een native int.

Ldelem_I1

Laadt het element met het type int8 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelem_I2

Laadt het element met het type int16 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelem_I4

Laadt het element met het type int32 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelem_I8

Laadt het element met het type int64 op een opgegeven matrixindex boven aan de evaluatiestack als een int64.

Ldelem_R4

Laadt het element met het type float32 op een opgegeven matrixindex boven aan de evaluatiestack als type F (float).

Ldelem_R8

Laadt het element met het type float64 op een opgegeven matrixindex boven aan de evaluatiestack als type F (float).

Ldelem_Ref

Laadt het element met een objectverwijzing op een opgegeven matrixindex boven aan de evaluatiestack als type O (objectverwijzing).

Ldelem_U1

Laadt het element met het type unsigned int8 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelem_U2

Laadt het element met het type unsigned int16 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelem_U4

Laadt het element met het type unsigned int32 op een opgegeven matrixindex boven aan de evaluatiestack als een int32.

Ldelema

Laadt het adres van het matrixelement op een opgegeven matrixindex boven aan de evaluatiestack als type & (beheerde aanwijzer).

Ldfld

Hiermee zoekt u de waarde van een veld in het object waarvan de verwijzing zich momenteel op de evaluatiestack bevindt.

Ldflda

Hiermee zoekt u het adres van een veld in het object waarvan de verwijzing zich momenteel op de evaluatiestack bevindt.

Ldftn

Pusht een onbeheerde aanwijzer (type native int) naar de systeemeigen code die een specifieke methode implementeert op de evaluatiestack.

Ldind_I

Hiermee wordt een waarde van het type native intnative int indirect op de evaluatiestack geladen.

Ldind_I1

Laadt indirect een waarde van het type int8 als een waarde int32 op de evaluatiestack.

Ldind_I2

Laadt indirect een waarde van het type int16 als een waarde int32 op de evaluatiestack.

Ldind_I4

Laadt indirect een waarde van het type int32 als een waarde int32 op de evaluatiestack.

Ldind_I8

Laadt indirect een waarde van het type int64 als een waarde int64 op de evaluatiestack.

Ldind_R4

Laadt een waarde van het type float32 als een type F (float) indirect op de evaluatiestack.

Ldind_R8

Laadt een waarde van het type float64 als een type F (float) indirect op de evaluatiestack.

Ldind_Ref

Laadt indirect een objectverwijzing als een type O (objectverwijzing) op de evaluatiestack.

Ldind_U1

Laadt indirect een waarde van het type unsigned int8 als een waarde int32 op de evaluatiestack.

Ldind_U2

Laadt indirect een waarde van het type unsigned int16 als een waarde int32 op de evaluatiestack.

Ldind_U4

Laadt indirect een waarde van het type unsigned int32 als een waarde int32 op de evaluatiestack.

Ldlen

Hiermee wordt het aantal elementen van een op nul gebaseerde, eendimensionale matrix naar de evaluatiestack gepusht.

Ldloc

Laadt de lokale variabele bij een specifieke index op de evaluatiestack.

Ldloc_0

Laadt de lokale variabele op index 0 op de evaluatiestack.

Ldloc_1

Laadt de lokale variabele op index 1 op de evaluatiestack.

Ldloc_2

Laadt de lokale variabele bij index 2 op de evaluatiestack.

Ldloc_3

Laadt de lokale variabele bij index 3 op de evaluatiestack.

Ldloc_S

Laadt de lokale variabele op een specifieke index op de evaluatiestack, korte vorm.

Ldloca

Laadt het adres van de lokale variabele bij een specifieke index op de evaluatiestack.

Ldloca_S

Laadt het adres van de lokale variabele op een specifieke index op de evaluatiestack, korte vorm.

Ldnull

Hiermee wordt een null-verwijzing (type O) naar de evaluatiestack gepusht.

Ldobj

Kopieert het waardetypeobject waarnaar wordt verwezen door een adres boven aan de evaluatiestack.

Ldsfld

Hiermee wordt de waarde van een statisch veld naar de evaluatiestack gepusht.

Ldsflda

Hiermee wordt het adres van een statisch veld naar de evaluatiestack gepusht.

Ldstr

Pusht een nieuwe objectverwijzing naar een letterlijke tekenreeks die is opgeslagen in de metagegevens.

Ldtoken

Converteert een metagegevenstoken naar de runtimeweergave en pusht het naar de evaluatiestack.

Ldvirtftn

Pusht een onbeheerde aanwijzer (type native int) naar de systeemeigen code die een bepaalde virtuele methode implementeert die is gekoppeld aan een opgegeven object op de evaluatiestack.

Leave

Sluit een beveiligd codegebied af, waarbij de controle onvoorwaardelijke wordt overgedragen naar een specifieke doelinstructie.

Leave_S

Sluit een beveiligd codegebied af, waarbij de besturing onvoorwaardelijke wordt overgedragen naar een doelinstructie (korte vorm).

Localloc

Wijst een bepaald aantal bytes toe uit de lokale dynamische geheugengroep en pusht het adres (een tijdelijke aanwijzer, type *) van de eerste toegewezen byte naar de evaluatiestack.

Mkrefany

Hiermee wordt een getypte verwijzing naar een exemplaar van een specifiek type naar de evaluatiestack gepusht.

Mul

Vermenigvuldigt twee waarden en pusht het resultaat op de evaluatiestack.

Mul_Ovf

Vermenigvuldigt twee gehele getallen, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

Mul_Ovf_Un

Vermenigvuldigt twee niet-ondertekende gehele getallen, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

Neg

Hiermee wordt een waarde ontkend en wordt het resultaat naar de evaluatiestack gepusht.

Newarr

Pusht een objectverwijzing naar een nieuwe op nul gebaseerde, eendimensionale matrix waarvan de elementen van een specifiek type zijn op de evaluatiestack.

Newobj

Hiermee maakt u een nieuw object of een nieuw exemplaar van een waardetype, waarbij een objectverwijzing (type O) naar de evaluatiestack wordt gepusht.

Nop

Vult ruimte als opcodes zijn gepatcht. Er wordt geen zinvolle bewerking uitgevoerd, hoewel een verwerkingscyclus kan worden gebruikt.

Not

Berekent het bitsgewijze complement van de gehele waarde boven op de stack en pusht het resultaat naar de evaluatiestack als hetzelfde type.

Or

Bereken het bitsgewijze complement van de twee gehele getallen boven op de stack en pusht het resultaat naar de evaluatiestack.

Pop

Hiermee verwijdert u de waarde die zich momenteel boven op de evaluatiestack bevindt.

Prefix1

Dit is een gereserveerde instructie.

Prefix2

Dit is een gereserveerde instructie.

Prefix3

Dit is een gereserveerde instructie.

Prefix4

Dit is een gereserveerde instructie.

Prefix5

Dit is een gereserveerde instructie.

Prefix6

Dit is een gereserveerde instructie.

Prefix7

Dit is een gereserveerde instructie.

Prefixref

Dit is een gereserveerde instructie.

Readonly

Hiermee geeft u op dat de volgende matrixadresbewerking geen typecontrole uitvoert tijdens runtime en dat deze een beheerde aanwijzer retourneert waarvan de mutabiliteit is beperkt.

Refanytype

Hiermee wordt het typetoken opgehaald dat is ingesloten in een getypte verwijzing.

Refanyval

Haalt het adres (type &) op dat is ingesloten in een getypte verwijzing.

Rem

Verdeelt twee waarden en pusht de rest naar de evaluatiestack.

Rem_Un

Verdeelt twee niet-ondertekende waarden en pusht de rest naar de evaluatiestack.

Ret

Retourneert van de huidige methode en pusht een retourwaarde (indien aanwezig) van de evaluatiestack van de aanroeper naar de evaluatiestack van de aanroeper.

Rethrow

Hiermee wordt de huidige uitzondering opnieuw geworpen.

Shl

Hiermee verschuift u een geheel getal naar links (in nullen) door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht.

Shr

Hiermee verschuift u een geheel getal (in teken) naar rechts door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht.

Shr_Un

Hiermee wordt een niet-ondertekende geheel getalwaarde (in nullen) naar rechts verplaatst door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht.

Sizeof

Hiermee wordt de grootte, in bytes, van een opgegeven waardetype naar de evaluatiestack gepusht.

Starg

Slaat de waarde op boven op de evaluatiestack in de argumentsite op een opgegeven index.

Starg_S

Slaat de waarde op boven op de evaluatiestack in de argumentsite op een opgegeven index, korte vorm.

Stelem

Vervangt het matrixelement in een bepaalde index door de waarde op de evaluatiestack, waarvan het type is opgegeven in de instructie.

Stelem_I

Vervangt het matrixelement in een bepaalde index door de native int waarde op de evaluatiestack.

Stelem_I1

Vervangt het matrixelement in een bepaalde index door de int8 waarde op de evaluatiestack.

Stelem_I2

Vervangt het matrixelement in een bepaalde index door de int16 waarde op de evaluatiestack.

Stelem_I4

Vervangt het matrixelement in een bepaalde index door de int32 waarde op de evaluatiestack.

Stelem_I8

Vervangt het matrixelement in een bepaalde index door de int64 waarde op de evaluatiestack.

Stelem_R4

Vervangt het matrixelement in een bepaalde index door de float32 waarde op de evaluatiestack.

Stelem_R8

Vervangt het matrixelement in een bepaalde index door de float64 waarde op de evaluatiestack.

Stelem_Ref

Vervangt het matrixelement in een bepaalde index door de objectverwwaarde (type O) op de evaluatiestack.

Stfld

Vervangt de waarde die is opgeslagen in het veld van een objectverwijzing of aanwijzer door een nieuwe waarde.

Stind_I

Hiermee wordt een waarde van het type native int op een opgegeven adres opgeslagen.

Stind_I1

Hiermee wordt een waarde van het type int8 op een opgegeven adres opgeslagen.

Stind_I2

Hiermee wordt een waarde van het type int16 op een opgegeven adres opgeslagen.

Stind_I4

Hiermee wordt een waarde van het type int32 op een opgegeven adres opgeslagen.

Stind_I8

Hiermee wordt een waarde van het type int64 op een opgegeven adres opgeslagen.

Stind_R4

Hiermee wordt een waarde van het type float32 op een opgegeven adres opgeslagen.

Stind_R8

Hiermee wordt een waarde van het type float64 op een opgegeven adres opgeslagen.

Stind_Ref

Slaat een objectverwijzingswaarde op een opgegeven adres op.

Stloc

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen op een opgegeven index.

Stloc_0

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen op index 0.

Stloc_1

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen bij index 1.

Stloc_2

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen bij index 2.

Stloc_3

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen bij index 3.

Stloc_S

Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen op index (korte vorm).

Stobj

Kopieert een waarde van een opgegeven type van de evaluatiestack naar een opgegeven geheugenadres.

Stsfld

Hiermee vervangt u de waarde van een statisch veld door een waarde uit de evaluatiestack.

Sub

Trekt de ene waarde af van de andere en pusht het resultaat naar de evaluatiestack.

Sub_Ovf

Trekt één geheel getal af van een andere, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

Sub_Ovf_Un

Trekt één niet-ondertekende gehele waarde af van een andere, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack.

Switch

Hiermee wordt een jump table geïmplementeerd.

Tailcall

Voert een aanroepinstructie voor een nafixed methode uit, zodat het stackframe van de huidige methode wordt verwijderd voordat de werkelijke aanroepinstructie wordt uitgevoerd.

Throw

Hiermee wordt het uitzonderingsobject op dit moment op de evaluatiestack gegenereerd.

Unaligned

Hiermee wordt aangegeven dat een adres dat zich momenteel boven op de evaluatiestack bevindt, mogelijk niet is afgestemd op de natuurlijke grootte van de volgendeldind, , stfldldobjldfldstind, , stobjof initblkcpblk instructie.

Unbox

Converteert de vakkenweergave van een waardetype naar het niet-geplaatste formulier.

Unbox_Any

Converteert de vakkenweergave van een type dat is opgegeven in de instructie naar het niet-ingepakte formulier.

Volatile

Hiermee geeft u op dat een adres boven op de evaluatiestack kan vluchtig zijn en de resultaten van het lezen van die locatie niet in de cache kunnen worden opgeslagen of dat meerdere winkels naar die locatie niet kunnen worden onderdrukt.

Xor

Berekent de bitsgewijze XOR van de bovenste twee waarden op de evaluatiestack, waardoor het resultaat naar de evaluatiestack wordt gepusht.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
TakesSingleByteArgument(OpCode)

Retourneert waar of onwaar als de opgegeven opcode één byteargument gebruikt.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op