OpCodes Osztály

Definíció

A ILGenerator osztálytagok (például Emit(OpCode)) által kibocsátott Microsoft középszintű nyelv (MSIL) mezőábrázolásait tartalmazza.

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
Öröklődés
OpCodes
Attribútumok

Példák

Az alábbi példa egy dinamikus módszer ILGeneratorOpCodesMethodBuilderfelépítését mutatja be egy .


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

Megjegyzések

A tag opcode-jainak részletes leírását a Common Language Infrastructure (CLI) dokumentációjában találja, különös tekintettel a "Partition III: CIL Utasításkészlet" és a "Partition II: Metadata Definition and Semantics" (Partition II: Metadata Definition and Semantics) című dokumentációra. További információ: ECMA 335 Common Language Infrastructure (CLI).

Mezők

Name Description
Add

Két értéket ad hozzá, és leküldi az eredményt a kiértékelési verembe.

Add_Ovf

Két egész számot ad hozzá, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe.

Add_Ovf_Un

Két nem aláírt egész számértéket ad hozzá, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe.

And

Kiszámítja a bitenkénti ÉS két értéket, és leküldi az eredményt a kiértékelési verembe.

Arglist

Nem felügyelt mutatót ad vissza az aktuális metódus argumentumlistájához.

Beq

Átviszi a vezérlőt egy célutasításba, ha két érték egyenlő.

Beq_S

A vezérlőt egy célutasításra (rövid űrlapra) továbbítja, ha két érték egyenlő.

Bge

Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb vagy egyenlő a második értéknél.

Bge_S

Átviszi a vezérlést egy célutasításba (rövid űrlap), ha az első érték nagyobb vagy egyenlő a második értéknél.

Bge_Un

Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Bge_Un_S

Ha az első érték nagyobb, mint a második érték, átviszi a vezérlést egy célutasításba (rövid űrlap), ha az előjel nélküli egész számértékeket vagy a rendezetlen lebegőpontos értékeket hasonlítja össze.

Bgt

Átviszi a vezérlőt egy célutasításba, ha az első érték nagyobb, mint a második érték.

Bgt_S

Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték nagyobb, mint a második érték.

Bgt_Un

Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Bgt_Un_S

Ha az első érték nagyobb, mint a második érték, átviszi a vezérlést egy célutasításba (rövid űrlap), ha az előjel nélküli egész számértékeket vagy a rendezetlen lebegőpontos értékeket hasonlítja össze.

Ble

Átviszi a vezérlőt egy célutasításba, ha az első érték kisebb vagy egyenlő a második értékkel.

Ble_S

Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték kisebb vagy egyenlő a második értéknél.

Ble_Un

Átviszi a vezérlést egy célutasításba, ha az első érték kisebb vagy egyenlő a második értéknél, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Ble_Un_S

Átviszi az irányítást egy célutasításba (rövid űrlap), ha az első érték kisebb vagy egyenlő a második értéknél, az aláíratlan egész számok vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Blt

Átviszi a vezérlőt egy célutasításba, ha az első érték kisebb, mint a második érték.

Blt_S

Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték kisebb, mint a második érték.

Blt_Un

Átviszi a vezérlést egy célutasításba, ha az első érték kisebb, mint a második érték, az aláíratlan egész számok vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Blt_Un_S

Átviszi a vezérlést egy célutasításba (rövid űrlap), ha az első érték kisebb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor.

Bne_Un

Átviszi a vezérlést egy célutasításba, ha két nem aláírt egész számérték vagy rendezetlen lebegőpontos érték nem egyenlő.

Bne_Un_S

Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha két előjel nélküli egész szám vagy rendezetlen lebegőpontos érték nem egyenlő.

Box

Egy értéktípust objektumhivatkozássá alakít át (típus O).

Br

Feltétel nélkül átviszi az irányítást egy célutasításba.

Br_S

Feltétel nélkül átviszi az irányítást egy célutasításba (rövid űrlap).

Break

Jelzi a Common Language Infrastructure (CLI) számára, hogy tájékoztassa a hibakeresőt arról, hogy egy töréspont megbotlott.

Brfalse

Átviszi az irányítást egy célutasításba, ha valuefalse, null hivatkozás (Nothing Visual Basic) vagy nulla.

Brfalse_S

A vezérlőt átviszi egy célutasításba, ha value null falsevagy nulla.

Brtrue

Átviszi a vezérlőt egy célutasításba, ha value az nem truenull vagy nem nulla.

Brtrue_S

Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha value az true, nem null vagy nem nulla.

Call

Meghívja az átadott metódusleíró által jelzett metódust.

Calli

Meghívja a kiértékelési veremen feltüntetett metódust (belépési pontra mutató mutatóként) a hívási konvenciók által leírt argumentumokkal.

Callvirt

Egy objektum késői kötésű metódusát hívja meg, amely a visszatérési értéket a kiértékelési verembe küldi.

Castclass

A megadott osztályra mutató hivatkozással átadott objektumot próbál meg leadni.

Ceq

Két értéket hasonlít össze. Ha egyenlőek, a rendszer az 1 (int32. egész számértéket leküldi a kiértékelési verembe; ellenkező esetben a 0 (int32) le lesz küldve a kiértékelési verembe.

Cgt

Két értéket hasonlít össze. Ha az első érték nagyobb, mint a második, a rendszer az 1 (int32. egész számot a kiértékelési verembe küldi; ellenkező esetben a 0 (int32) le lesz küldve a kiértékelési verembe.

Cgt_Un

Két nem aláírt vagy rendezetlen értéket hasonlít össze. Ha az első érték nagyobb, mint a második, a rendszer az 1 (int32. egész számot a kiértékelési verembe küldi; ellenkező esetben a 0 (int32) le lesz küldve a kiértékelési verembe.

Ckfinite

Dob, ArithmeticException ha az érték nem véges szám.

Clt

Két értéket hasonlít össze. Ha az első érték kisebb, mint a második, a rendszer az 1 (int32. egész számot a kiértékelési verembe küldi; ellenkező esetben a 0 (int32) le lesz küldve a kiértékelési verembe.

Clt_Un

Összehasonlítja a nem aláírt vagy rendezetlen értékeket value1 és value2a . Ha value1 kisebb, mint value2, akkor az 1 (int32. egész számértéket a rendszer leküldi a kiértékelési verembe, ellenkező esetben a 0 (int32) a kiértékelési verembe kerül.

Constrained

Korlátozza a virtuális metódus hívásának típusát.

Conv_I

A kiértékelési verem tetején lévő értéket átalakítja a következőre native int: .

Conv_I1

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre int8, majd kiterjeszti (párnák) értékre int32.

Conv_I2

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre int16, majd kiterjeszti (párnák) értékre int32.

Conv_I4

A kiértékelési verem tetején lévő értéket átalakítja a következőre int32: .

Conv_I8

A kiértékelési verem tetején lévő értéket átalakítja a következőre int64: .

Conv_Ovf_I

A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá native int, túlcsordulásra dobva OverflowException .

Conv_Ovf_I_Un

A kiértékelési verem tetején lévő aláíratlan értéket aláírt native intértékké alakítja át, túlcsordulásra dobva OverflowException .

Conv_Ovf_I1

A kiértékelési verem tetején lévő aláírt értéket aláírtsá int8 alakítja, és kibővíti a túlcsordulást jelző értékreint32OverflowException.

Conv_Ovf_I1_Un

A kiértékelési verem tetején lévő aláíratlan értéket aláírtsá int8 alakítja, és kiterjeszti a int32OverflowException túlcsordulásra.

Conv_Ovf_I2

A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsáint16, és kiterjeszti a int32OverflowExceptiontúlcsordulásra.

Conv_Ovf_I2_Un

A kiértékelési verem tetején lévő aláíratlan értéket aláírtsá int16 alakítja, és kiterjeszti a int32OverflowException túlcsordulásra.

Conv_Ovf_I4

A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá int32, túlcsordulásra dobva OverflowException .

Conv_Ovf_I4_Un

A kiértékelési verem tetején lévő aláíratlan értéket aláírt int32értékké alakítja át, túlcsordulásra dobva OverflowException .

Conv_Ovf_I8

A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá int64, túlcsordulásra dobva OverflowException .

Conv_Ovf_I8_Un

A kiértékelési verem tetején lévő aláíratlan értéket aláírt int64értékké alakítja át, túlcsordulásra dobva OverflowException .

Conv_Ovf_U

A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó unsigned native int értékkéOverflowException.

Conv_Ovf_U_Un

A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó unsigned native int értékkéOverflowException.

Conv_Ovf_U1

Átalakítja a kiértékelési verem tetején lévő aláírt értéket a túlcsordulásra dobott unsigned int8 értékre int32OverflowException, és kiterjeszti arra.

Conv_Ovf_U1_Un

Átalakítja a kiértékelési verem tetején lévő aláíratlan értéket a túlcsordulást jelző unsigned int8 értékre int32OverflowException, és kiterjeszti arra.

Conv_Ovf_U2

Átalakítja a kiértékelési verem tetején lévő aláírt értéket a túlcsordulásra dobott unsigned int16 értékre int32OverflowException, és kiterjeszti arra.

Conv_Ovf_U2_Un

Átalakítja a kiértékelési verem tetején lévő aláíratlan értéket a túlcsordulást jelző unsigned int16 értékre int32OverflowException, és kiterjeszti arra.

Conv_Ovf_U4

A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó unsigned int32 értékkéOverflowException.

Conv_Ovf_U4_Un

A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó unsigned int32 értékkéOverflowException.

Conv_Ovf_U8

A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó unsigned int64 értékkéOverflowException.

Conv_Ovf_U8_Un

A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó unsigned int64 értékkéOverflowException.

Conv_R_Un

A kiértékelési verem tetején lévő aláíratlan egész szám értékét átalakítja a következőre float32: .

Conv_R4

A kiértékelési verem tetején lévő értéket átalakítja a következőre float32: .

Conv_R8

A kiértékelési verem tetején lévő értéket átalakítja a következőre float64: .

Conv_U

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre unsigned native int, és kiterjeszti arra native int.

Conv_U1

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre unsigned int8, és kiterjeszti arra int32.

Conv_U2

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre unsigned int16, és kiterjeszti arra int32.

Conv_U4

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre unsigned int32, és kiterjeszti arra int32.

Conv_U8

A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre unsigned int64, és kiterjeszti arra int64.

Cpblk

Egy megadott számú bájtot másol egy forráscímről egy célcímre.

Cpobj

Másolja az objektum címében található értéktípust (típus &vagy native int) a célobjektum címére (típus &vagy native int ).

Div

Két értéket oszt el, és az eredményt lebegőpontos (típus F) vagy hányadosként (típus int32) küldi a kiértékelési verembe.

Div_Un

Két aláíratlan egész számot oszt el, és leküldi az eredményt (int32) a kiértékelési verembe.

Dup

Másolja át az aktuális legfelső értéket a kiértékelési veremen, majd leküldi a másolatot a kiértékelési verembe.

Endfilter

A kivétel záradékából visszaviszi az filter irányítást a Common Language Infrastructure (CLI) kivételkezelőjének.

Endfinally

A kivételblokk vagy fault záradék vezérlését finally visszaviszi a Common Language Infrastructure (CLI) kivételkezelőbe.

Initblk

Inicializál egy megadott memóriablokkot egy adott címen egy adott méretre és kezdeti értékre.

Initobj

Inicializálja az értéktípus minden mezőjét egy megadott címen null hivatkozásra vagy a megfelelő primitív típus 0 értékére.

Isinst

Ellenőrzi, hogy egy objektumhivatkozás (típus O) egy adott osztály példánya-e.

Jmp

Kilép az aktuális metódusból, és a megadott metódusra ugrik.

Ldarg

Betölt egy argumentumot (egy megadott indexértékre hivatkozva) a verembe.

Ldarg_0

Betölti az argumentumot a 0 indexnél a kiértékelési verembe.

Ldarg_1

Betölti az argumentumot az 1. indexben a kiértékelési verembe.

Ldarg_2

Betölti a 2. index argumentumát a kiértékelési verembe.

Ldarg_3

Betölti a 3. index argumentumát a kiértékelési verembe.

Ldarg_S

Betölti az argumentumot (egy adott rövid űrlapindex hivatkozik rá) a kiértékelési verembe.

Ldarga

Betölt egy argumentumcímet a kiértékelési verembe.

Ldarga_S

Töltsön be egy argumentumcímet rövid formában a kiértékelési verembe.

Ldc_I4

A megadott típusú int32 értéket leküldi a kiértékelési verembe int32.

Ldc_I4_0

A 0 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_1

Az 1 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_2

A 2 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_3

A 3 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_4

A 4 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_5

Az 5 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_6

A 6 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_7

A 7 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_8

A 8 egész szám értékét leküldi a kiértékelési verembe int32.

Ldc_I4_M1

Leküldi a -1 egész értékét a kiértékelési verembe int32.

Ldc_I4_S

Leküldi a megadott int8 értéket a kiértékelési verembe rövid űrlapként int32.

Ldc_I8

A megadott típusú int64 értéket leküldi a kiértékelési verembe int64.

Ldc_R4

Egy megadott típusértéket float32 küld a kiértékelési verembe típusként F (lebegőpontosként).

Ldc_R8

Egy megadott típusértéket float64 küld a kiértékelési verembe típusként F (lebegőpontosként).

Ldelem

Betölti az elemet egy adott tömbindexen a kiértékelési verem tetejére az utasításban megadott típusként.

Ldelem_I

Betölti az elemet egy adott tömbindex típusával native int a kiértékelési verem native inttetejére.

Ldelem_I1

Betölti az elemet egy megadott tömbindex típusával int8 a kiértékelési verem int32tetejére .

Ldelem_I2

Betölti az elemet egy megadott tömbindex típusával int16 a kiértékelési verem int32tetejére .

Ldelem_I4

Betölti az elemet egy megadott tömbindex típusával int32 a kiértékelési verem int32tetejére .

Ldelem_I8

Betölti az elemet egy megadott tömbindex típusával int64 a kiértékelési verem int64tetejére .

Ldelem_R4

Betölti a típussal rendelkező float32 elemet egy adott tömbindexen a kiértékelési verem tetejére típusként F (lebegőpontosként).

Ldelem_R8

Betölti a típussal rendelkező float64 elemet egy adott tömbindexen a kiértékelési verem tetejére típusként F (lebegőpontosként).

Ldelem_Ref

Betölti egy adott tömbindex objektumhivatkozását tartalmazó elemet a kiértékelési verem tetejére típusként O (objektumhivatkozásként).

Ldelem_U1

Betölti az elemet egy megadott tömbindex típusával unsigned int8 a kiértékelési verem int32tetejére .

Ldelem_U2

Betölti az elemet egy megadott tömbindex típusával unsigned int16 a kiértékelési verem int32tetejére .

Ldelem_U4

Betölti az elemet egy megadott tömbindex típusával unsigned int32 a kiértékelési verem int32tetejére .

Ldelema

Betölti a tömbelem címét egy adott tömbindexen a kiértékelési verem tetejére típusként & (felügyelt mutató).

Ldfld

Megkeresi annak az objektumnak a mezőjét, amelynek hivatkozása jelenleg a kiértékelési veremen található.

Ldflda

Megkeresi annak az objektumnak a címét, amelynek hivatkozása jelenleg a kiértékelési veremen található.

Ldftn

Nem felügyelt mutatót (típust native int) küld a natív kódba, amely egy adott metódust implementál a kiértékelési verembe.

Ldind_I

Egy típus native intnative int értékét közvetetten betölti a kiértékelési verembe.

Ldind_I1

Egy típus int8int32 értékét közvetetten betölti a kiértékelési verembe.

Ldind_I2

Egy típus int16int32 értékét közvetetten betölti a kiértékelési verembe.

Ldind_I4

Egy típus int32int32 értékét közvetetten betölti a kiértékelési verembe.

Ldind_I8

Egy típus int64int64 értékét közvetetten betölti a kiértékelési verembe.

Ldind_R4

Egy típus float32 értékét közvetetten betölti típusként F (lebegőpontosként) a kiértékelési verembe.

Ldind_R8

Egy típus float64 értékét közvetetten betölti típusként F (lebegőpontosként) a kiértékelési verembe.

Ldind_Ref

Egy objektumhivatkozást típusként O (objektumhivatkozásként) tölt be közvetetten a kiértékelési verembe.

Ldind_U1

Egy típus unsigned int8int32 értékét közvetetten betölti a kiértékelési verembe.

Ldind_U2

Egy típus unsigned int16int32 értékét közvetetten betölti a kiértékelési verembe.

Ldind_U4

Egy típus unsigned int32int32 értékét közvetetten betölti a kiértékelési verembe.

Ldlen

Egy nulla alapú, egydimenziós tömb elemeinek számát leküldi a kiértékelési verembe.

Ldloc

Betölti a helyi változót egy adott indexen a kiértékelési verembe.

Ldloc_0

Betölti a helyi változót a 0 indexnél a kiértékelési verembe.

Ldloc_1

Betölti a helyi változót az 1. indexnél a kiértékelési verembe.

Ldloc_2

Betölti a helyi változót a 2. indexnél a kiértékelési verembe.

Ldloc_3

Betölti a helyi változót a 3. indexben a kiértékelési verembe.

Ldloc_S

Betölti a helyi változót egy adott indexen a kiértékelési verembe, rövid formában.

Ldloca

Betölti a helyi változó címét egy adott indexben a kiértékelési verembe.

Ldloca_S

Betölti a helyi változó címét egy adott indexben a kiértékelési verembe, rövid formában.

Ldnull

Null referenciát (típust O) küld a kiértékelési verembe.

Ldobj

Másolja a kiértékelési verem tetejére egy cím által mutatott értéktípus-objektumot.

Ldsfld

Egy statikus mező értékét leküldi a kiértékelési verembe.

Ldsflda

Leküldi egy statikus mező címét a kiértékelési verembe.

Ldstr

Új objektumhivatkozás leküldése a metaadatokban tárolt sztringkonstansra.

Ldtoken

A metaadat-jogkivonatot futtatókörnyezeti ábrázolássá alakítja át, és a kiértékelési verembe küldi.

Ldvirtftn

Nem felügyelt mutatót (típust native int) küld a natív kódba, amely egy adott objektumhoz társított adott virtuális metódust implementál a kiértékelési verembe.

Leave

Kilép egy kód védett régiójából, és feltétel nélkül átadja a vezérlést egy adott célutasításnak.

Leave_S

Kilép a kód védett régiójából, és feltétel nélkül átadja a vezérlőt egy célutasításnak (rövid űrlap).

Localloc

Bizonyos számú bájtot foglal le a helyi dinamikus memóriakészletből, és leküldi az első lefoglalt bájt címét (átmeneti mutató, típus *) a kiértékelési verembe.

Mkrefany

Egy adott típusú példányra mutató beírt hivatkozást küld a kiértékelési verembe.

Mul

Két értéket szoroz meg, és leküldi az eredményt a kiértékelési verembe.

Mul_Ovf

Két egész szám megszorzása, túlcsordulás ellenőrzése, és az eredmény leküldése a kiértékelési verembe.

Mul_Ovf_Un

Két aláíratlan egész szám értékét szorozza meg, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe.

Neg

Érvénytelenít egy értéket, és leküldi az eredményt a kiértékelési verembe.

Newarr

Egy objektumhivatkozást küld egy új, nulla alapú, egydimenziós tömbbe, amelynek elemei egy adott típusúak a kiértékelési verembe.

Newobj

Létrehoz egy új objektumot vagy egy értéktípus új példányát, és egy objektumhivatkozást (típust O) küld a kiértékelési verembe.

Nop

Kitölti a helyet, ha az opcode-k javításra kerülnek. Nincs értelmes művelet, bár a feldolgozási ciklus felhasználható.

Not

Kiszámítja az egész szám bitenkénti kiegészítését a verem tetején, és az eredményt a kiértékelési verembe küldi, ugyanazzal a típussal.

Or

Számítsa ki a verem tetején lévő két egész szám bitenkénti kiegészítését, és küldje el az eredményt a kiértékelési verembe.

Pop

Eltávolítja a kiértékelési verem tetején található értéket.

Prefix1

Ez egy fenntartott utasítás.

Prefix2

Ez egy fenntartott utasítás.

Prefix3

Ez egy fenntartott utasítás.

Prefix4

Ez egy fenntartott utasítás.

Prefix5

Ez egy fenntartott utasítás.

Prefix6

Ez egy fenntartott utasítás.

Prefix7

Ez egy fenntartott utasítás.

Prefixref

Ez egy fenntartott utasítás.

Readonly

Megadja, hogy az ezt követő tömbcímművelet futásidőben nem végez típusellenőrzést, és egy olyan felügyelt mutatót ad vissza, amelynek a módosíthatósága korlátozott.

Refanytype

Beolvassa a gépelt hivatkozásba beágyazott típus jogkivonatot.

Refanyval

Beolvassa a gépelt hivatkozásba beágyazott címet (típust &).

Rem

Két értéket oszt el, és a fennmaradó részt a kiértékelési verembe küldi.

Rem_Un

Két aláíratlan értéket oszt el, és a fennmaradó részt a kiértékelési verembe osztja.

Ret

Az aktuális metódusból ad vissza egy visszatérési értéket (ha van) a hívó kiértékelési vereméből a hívó kiértékelési veremébe.

Rethrow

Az aktuális kivétel újrafedése.

Shl

Egy egész számot balra (nullákban) helyez el megadott számú bit használatával, és az eredményt a kiértékelési verembe helyezzük.

Shr

Egy egész számot (előjelben) jobbra tol egy megadott számú bit segítségével, és az eredményt a kiértékelési verembe küldi.

Shr_Un

Egy előjel nélküli egész számot (nullákban) jobbra tol egy megadott számú bit segítségével, és az eredményt a kiértékelési verembe küldi.

Sizeof

Bájtban leküldi a megadott értéktípus méretét a kiértékelési verembe.

Starg

A kiértékelési verem tetején lévő értéket egy adott index argumentumhelyén tárolja.

Starg_S

A kiértékelési verem tetején lévő értéket egy megadott indexben, rövid formában tárolja az argumentumhelyen.

Stelem

Egy adott index tömbelemét lecseréli a kiértékelési verem értékére, amelynek típusa az utasításban van megadva.

Stelem_I

Egy adott index tömbelemét lecseréli a native int kiértékelési verem értékére.

Stelem_I1

Egy adott index tömbelemét lecseréli a int8 kiértékelési verem értékére.

Stelem_I2

Egy adott index tömbelemét lecseréli a int16 kiértékelési verem értékére.

Stelem_I4

Egy adott index tömbelemét lecseréli a int32 kiértékelési verem értékére.

Stelem_I8

Egy adott index tömbelemét lecseréli a int64 kiértékelési verem értékére.

Stelem_R4

Egy adott index tömbelemét lecseréli a float32 kiértékelési verem értékére.

Stelem_R8

Egy adott index tömbelemét lecseréli a float64 kiértékelési verem értékére.

Stelem_Ref

Egy adott index tömbelemét lecseréli a kiértékelési verem objektum-újrafértékére (típusára O).

Stfld

Egy objektumhivatkozás vagy mutató mezőjében tárolt értéket lecseréli egy új értékre.

Stind_I

Egy megadott címen tárol egy típusértéket native int .

Stind_I1

Egy megadott címen tárol egy típusértéket int8 .

Stind_I2

Egy megadott címen tárol egy típusértéket int16 .

Stind_I4

Egy megadott címen tárol egy típusértéket int32 .

Stind_I8

Egy megadott címen tárol egy típusértéket int64 .

Stind_R4

Egy megadott címen tárol egy típusértéket float32 .

Stind_R8

Egy megadott címen tárol egy típusértéket float64 .

Stind_Ref

Objektum-referenciaértéket tárol egy megadott címen.

Stloc

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és egy adott index helyi változólistájában tárolja.

Stloc_0

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában, a 0. indexben tárolja.

Stloc_1

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és az 1. index helyi változólistájában tárolja.

Stloc_2

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában, a 2. indexben tárolja.

Stloc_3

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a 3. index helyi változólistájában tárolja.

Stloc_S

Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában index (rövid formában) tárolja.

Stobj

Egy megadott típusú értéket másol a kiértékelési veremből egy megadott memóriacímbe.

Stsfld

Egy statikus mező értékét lecseréli a kiértékelési verem értékére.

Sub

Kivon egy értéket a másikból, és leküldi az eredményt a kiértékelési verembe.

Sub_Ovf

Kivon egy egész számot egy másikból, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe.

Sub_Ovf_Un

Kivon egy előjel nélküli egész számot egy másikból, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe.

Switch

Ugrótáblát implementál.

Tailcall

Postfixed metódushívási utasítást hajt végre, hogy az aktuális metódus veremkerete el legyen távolítva a tényleges hívásutasítás végrehajtása előtt.

Throw

A kiértékelési veremen jelenleg a kivételobjektumot dobja.

Unaligned

Azt jelzi, hogy a kiértékelési verem tetején található cím nem feltétlenül igazodik a közvetlenül következő ldind, stind, , ldfld, stfldldobj, stobjinitblk, vagy cpblk utasítás természetes méretéhez.

Unbox

Átalakítja egy értéktípus dobozos ábrázolását a nem beérkezett űrlapra.

Unbox_Any

Átalakítja az utasításban megadott típus dobozos ábrázolását a nem beérkezett űrlapra.

Volatile

Azt határozza meg, hogy a kiértékelési verem tetején található cím változékony lehet, és a hely olvasásának eredményei nem gyorsítótárazhatók, vagy hogy az adott helyen található több tároló nem tiltható le.

Xor

Kiszámítja a kiértékelési verem első két értékének bitenkénti XOR-értékét, és az eredményt a kiértékelési verembe küldi.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
TakesSingleByteArgument(OpCode)

Igaz vagy hamis értéket ad vissza, ha a megadott opcode egyetlen bájt argumentumot használ.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes: