OpCodes Clase

Definición

Proporciona representaciones de campo de las instrucciones de lenguaje intermedio (MSIL) de Microsoft para la emisión por parte de los miembros de clase /> de ).

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
Herencia
OpCodes
Atributos

Ejemplos

En el ejemplo siguiente se muestra la construcción de un método dinámico mediante ILGenerator para emitir OpCodes en .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

Comentarios

Para obtener una descripción detallada de los códigos de operación de miembro, consulte la documentación de Common Language Infrastructure (CLI), especialmente "Partition III: CIL Instruction Set" y "Partition II: Metadata Definition and Semantics". Para obtener más información, consulte ECMA 335 Common Language Infrastructure (CLI).

Campos

Nombre Description
Add

Agrega dos valores e inserta el resultado en la pila de evaluación.

Add_Ovf

Agrega dos enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

Add_Ovf_Un

Agrega dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

And

Calcula el AND bit a bit de dos valores e inserta el resultado en la pila de evaluación.

Arglist

Devuelve un puntero no administrado a la lista de argumentos del método actual.

Beq

Transfiere el control a una instrucción de destino si dos valores son iguales.

Beq_S

Transfiere el control a una instrucción de destino (forma abreviada) si dos valores son iguales.

Bge

Transfiere el control a una instrucción de destino si el primer valor es mayor o igual que el segundo valor.

Bge_S

Transfiere el control a una instrucción de destino (formato corto) si el primer valor es mayor o igual que el segundo valor.

Bge_Un

Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados.

Bge_Un_S

Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float desordenados.

Bgt

Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor.

Bgt_S

Transfiere el control a una instrucción de destino (formato corto) si el primer valor es mayor que el segundo.

Bgt_Un

Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados.

Bgt_Un_S

Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float desordenados.

Ble

Transfiere el control a una instrucción de destino si el primer valor es menor o igual que el segundo.

Ble_S

Transfiere el control a una instrucción de destino (formato corto) si el primer valor es menor o igual que el segundo.

Ble_Un

Transfiere el control a una instrucción de destino si el primer valor es menor o igual que el segundo valor, al comparar valores enteros sin signo o valores flotantes no ordenados.

Ble_Un_S

Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es menor o igual que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados.

Blt

Transfiere el control a una instrucción de destino si el primer valor es menor que el segundo valor.

Blt_S

Transfiere el control a una instrucción de destino (formato corto) si el primer valor es menor que el segundo.

Blt_Un

Transfiere el control a una instrucción de destino si el primer valor es menor que el segundo valor, al comparar valores enteros sin signo o valores flotantes no ordenados.

Blt_Un_S

Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es menor que el segundo, al comparar valores enteros sin signo o valores float no ordenados.

Bne_Un

Transfiere el control a una instrucción de destino cuando dos valores enteros sin signo o valores float no ordenados no son iguales.

Bne_Un_S

Transfiere el control a una instrucción de destino (formato corto) cuando dos valores enteros sin signo o valores flotantes no ordenados no son iguales.

Box

Convierte un tipo de valor en una referencia de objeto (tipo O).

Br

Transfiere incondicionalmente el control a una instrucción de destino.

Br_S

Transfiere incondicionalmente el control a una instrucción de destino (forma abreviada).

Break

Indica a Common Language Infrastructure (CLI) que informe al depurador de que se ha recorrido un punto de interrupción.

Brfalse

Transfiere el control a una instrucción de destino si value es false, una referencia nula (Nothing en Visual Basic) o cero.

Brfalse_S

Transfiere el control a una instrucción de destino si value es false, una referencia nula o cero.

Brtrue

Transfiere el control a una instrucción de destino si value es true, no null o distinto de cero.

Brtrue_S

Transfiere el control a una instrucción de destino (formato corto) si value es true, no null o distinto de cero.

Call

Llama al método indicado por el descriptor de método pasado.

Calli

Llama al método indicado en la pila de evaluación (como puntero a un punto de entrada) con argumentos descritos por una convención de llamada.

Callvirt

Llama a un método enlazado en tiempo de ejecución en un objeto, insertando el valor devuelto en la pila de evaluación.

Castclass

Intenta convertir un objeto pasado por referencia a la clase especificada.

Ceq

Compara dos valores. Si son iguales, el valor entero 1 (int32) se inserta en la pila de evaluación; de lo contrario, 0 (int32) se inserta en la pila de evaluación.

Cgt

Compara dos valores. Si el primer valor es mayor que el segundo, el valor entero 1 (int32) se inserta en la pila de evaluación; de lo contrario, 0 (int32) se inserta en la pila de evaluación.

Cgt_Un

Compara dos valores sin signo o sin ordenar. Si el primer valor es mayor que el segundo, el valor entero 1 (int32) se inserta en la pila de evaluación; de lo contrario, 0 (int32) se inserta en la pila de evaluación.

Ckfinite

ArithmeticException Produce si el valor no es un número finito.

Clt

Compara dos valores. Si el primer valor es menor que el segundo, el valor entero 1 (int32) se inserta en la pila de evaluación; de lo contrario, 0 (int32) se inserta en la pila de evaluación.

Clt_Un

Compara los valores value1 sin firmar o sin ordenar y value2. Si value1 es menor que value2, el valor entero 1 (int32) se inserta en la pila de evaluación; en caso contrario, 0 (int32) se inserta en la pila de evaluación.

Constrained

Restringe el tipo en el que se realiza una llamada de método virtual.

Conv_I

Convierte el valor en la parte superior de la pila de evaluación en native int.

Conv_I1

Convierte el valor en la parte superior de la pila de evaluación en int8y, a continuación, lo extiende (rellenos) a int32.

Conv_I2

Convierte el valor en la parte superior de la pila de evaluación en int16y, a continuación, lo extiende (rellenos) a int32.

Conv_I4

Convierte el valor en la parte superior de la pila de evaluación en int32.

Conv_I8

Convierte el valor en la parte superior de la pila de evaluación en int64.

Conv_Ovf_I

Convierte el valor con signo en la parte superior de la pila de evaluación en firmado native int, lo que produce OverflowException un desbordamiento.

Conv_Ovf_I_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado native int, lo que produce un desbordamiento OverflowException .

Conv_Ovf_I1

Convierte el valor con signo en la parte superior de la pila de evaluación en firmado int8 y lo extiende a int32, lo OverflowException que produce un desbordamiento.

Conv_Ovf_I1_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado int8 y lo extiende a int32, lo OverflowException que produce un desbordamiento.

Conv_Ovf_I2

Convierte el valor con signo en la parte superior de la pila de evaluación en firmado int16 y lo extiende a int32, lo que produce OverflowException un desbordamiento.

Conv_Ovf_I2_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado int16 y lo extiende a int32, lo OverflowException que produce un desbordamiento.

Conv_Ovf_I4

Convierte el valor con signo en la parte superior de la pila de evaluación en firmado int32, lo que produce OverflowException un desbordamiento.

Conv_Ovf_I4_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado int32, lo que produce un desbordamiento OverflowException .

Conv_Ovf_I8

Convierte el valor con signo en la parte superior de la pila de evaluación en firmado int64, lo que produce OverflowException un desbordamiento.

Conv_Ovf_I8_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado int64, lo que produce un desbordamiento OverflowException .

Conv_Ovf_U

Convierte el valor con signo en la parte superior de la pila de evaluación en unsigned native int, lo que produce OverflowException un desbordamiento.

Conv_Ovf_U_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en unsigned native int, lo que produce un desbordamiento OverflowException .

Conv_Ovf_U1

Convierte el valor con signo en la parte superior de la pila de evaluación en unsigned int8 y lo extiende a int32, lo que produce un desbordamiento OverflowException .

Conv_Ovf_U1_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en unsigned int8 y lo extiende a int32, iniciando desbordamiento OverflowException .

Conv_Ovf_U2

Convierte el valor con signo en la parte superior de la pila de evaluación en unsigned int16 y lo extiende a int32, lo que produce un desbordamiento OverflowException .

Conv_Ovf_U2_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en unsigned int16 y lo extiende a int32, iniciando desbordamiento OverflowException .

Conv_Ovf_U4

Convierte el valor con signo en la parte superior de la pila de evaluación en unsigned int32, lo que produce OverflowException un desbordamiento.

Conv_Ovf_U4_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en unsigned int32, lo que produce un desbordamiento OverflowException .

Conv_Ovf_U8

Convierte el valor con signo en la parte superior de la pila de evaluación en unsigned int64, lo que produce OverflowException un desbordamiento.

Conv_Ovf_U8_Un

Convierte el valor sin signo en la parte superior de la pila de evaluación en unsigned int64, lo que produce un desbordamiento OverflowException .

Conv_R_Un

Convierte el valor entero sin signo en la parte superior de la pila de evaluación en float32.

Conv_R4

Convierte el valor en la parte superior de la pila de evaluación en float32.

Conv_R8

Convierte el valor en la parte superior de la pila de evaluación en float64.

Conv_U

Convierte el valor en la parte superior de la pila de evaluación en unsigned native inty lo extiende a native int.

Conv_U1

Convierte el valor en la parte superior de la pila de evaluación en unsigned int8y lo extiende a int32.

Conv_U2

Convierte el valor en la parte superior de la pila de evaluación en unsigned int16y lo extiende a int32.

Conv_U4

Convierte el valor en la parte superior de la pila de evaluación en unsigned int32y lo extiende a int32.

Conv_U8

Convierte el valor en la parte superior de la pila de evaluación en unsigned int64y lo extiende a int64.

Cpblk

Copia un número especificado bytes de una dirección de origen en una dirección de destino.

Cpobj

Copia el tipo de valor ubicado en la dirección de un objeto (tipo &, o native int) a la dirección del objeto de destino (tipo &, o native int).

Div

Divide dos valores e inserta el resultado como un punto flotante (tipo F) o cociente (tipo int32) en la pila de evaluación.

Div_Un

Divide dos valores enteros sin signo e inserta el resultado (int32) en la pila de evaluación.

Dup

Copia el valor superior actual en la pila de evaluación y, a continuación, inserta la copia en la pila de evaluación.

Endfilter

Transfiere el control de la filter cláusula de una excepción al controlador de excepciones de Common Language Infrastructure (CLI).

Endfinally

Transfiere el control de la fault cláusula o finally de un bloque de excepciones al controlador de excepciones de Common Language Infrastructure (CLI).

Initblk

Inicializa un bloque de memoria especificado en una dirección específica para un tamaño determinado y un valor inicial.

Initobj

Inicializa cada campo del tipo de valor en una dirección especificada a una referencia nula o a 0 del tipo primitivo adecuado.

Isinst

Comprueba si una referencia de objeto (tipo O) es una instancia de una clase determinada.

Jmp

Sale del método actual y salta al método especificado.

Ldarg

Carga un argumento (al que hace referencia un valor de índice especificado) en la pila.

Ldarg_0

Carga el argumento en el índice 0 en la pila de evaluación.

Ldarg_1

Carga el argumento en el índice 1 en la pila de evaluación.

Ldarg_2

Carga el argumento en el índice 2 en la pila de evaluación.

Ldarg_3

Carga el argumento en el índice 3 en la pila de evaluación.

Ldarg_S

Carga el argumento (al que hace referencia un índice de formulario corto especificado) en la pila de evaluación.

Ldarga

Cargue una dirección de argumento en la pila de evaluación.

Ldarga_S

Cargue una dirección de argumento, en forma abreviada, en la pila de evaluación.

Ldc_I4

Inserta un valor proporcionado de tipo int32 en la pila de evaluación como .int32

Ldc_I4_0

Inserta el valor entero de 0 en la pila de evaluación como .int32

Ldc_I4_1

Inserta el valor entero de 1 en la pila de evaluación como .int32

Ldc_I4_2

Inserta el valor entero de 2 en la pila de evaluación como .int32

Ldc_I4_3

Inserta el valor entero de 3 en la pila de evaluación como .int32

Ldc_I4_4

Inserta el valor entero de 4 en la pila de evaluación como .int32

Ldc_I4_5

Inserta el valor entero de 5 en la pila de evaluación como .int32

Ldc_I4_6

Inserta el valor entero de 6 en la pila de evaluación como .int32

Ldc_I4_7

Inserta el valor entero de 7 en la pila de evaluación como .int32

Ldc_I4_8

Inserta el valor entero de 8 en la pila de evaluación como .int32

Ldc_I4_M1

Inserta el valor entero de -1 en la pila de evaluación como .int32

Ldc_I4_S

Inserta el valor proporcionado int8 en la pila de evaluación como una int32forma abreviada.

Ldc_I8

Inserta un valor proporcionado de tipo int64 en la pila de evaluación como .int64

Ldc_R4

Inserta un valor proporcionado de tipo float32 en la pila de evaluación como tipo F (float).

Ldc_R8

Inserta un valor proporcionado de tipo float64 en la pila de evaluación como tipo F (float).

Ldelem

Carga el elemento en un índice de matriz especificado en la parte superior de la pila de evaluación como el tipo especificado en la instrucción .

Ldelem_I

Carga el elemento con el tipo native int en un índice de matriz especificado en la parte superior de la pila de evaluación como .native int

Ldelem_I1

Carga el elemento con el tipo int8 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelem_I2

Carga el elemento con el tipo int16 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelem_I4

Carga el elemento con el tipo int32 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelem_I8

Carga el elemento con el tipo int64 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int64

Ldelem_R4

Carga el elemento con el tipo float32 en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo F (float).

Ldelem_R8

Carga el elemento con el tipo float64 en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo F (float).

Ldelem_Ref

Carga el elemento que contiene una referencia de objeto en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo O (referencia de objeto).

Ldelem_U1

Carga el elemento con el tipo unsigned int8 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelem_U2

Carga el elemento con el tipo unsigned int16 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelem_U4

Carga el elemento con el tipo unsigned int32 en un índice de matriz especificado en la parte superior de la pila de evaluación como .int32

Ldelema

Carga la dirección del elemento de matriz en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo & (puntero administrado).

Ldfld

Busca el valor de un campo en el objeto cuya referencia está actualmente en la pila de evaluación.

Ldflda

Busca la dirección de un campo en el objeto cuya referencia está actualmente en la pila de evaluación.

Ldftn

Inserta un puntero no administrado (tipo native int) en el código nativo que implementa un método específico en la pila de evaluación.

Ldind_I

Carga un valor de tipo native int como en native int la pila de evaluación indirectamente.

Ldind_I1

Carga un valor de tipo int8 como en int32 la pila de evaluación indirectamente.

Ldind_I2

Carga un valor de tipo int16 como en int32 la pila de evaluación indirectamente.

Ldind_I4

Carga un valor de tipo int32 como en int32 la pila de evaluación indirectamente.

Ldind_I8

Carga un valor de tipo int64 como en int64 la pila de evaluación indirectamente.

Ldind_R4

Carga un valor de tipo float32 como un tipo F (float) en la pila de evaluación indirectamente.

Ldind_R8

Carga un valor de tipo float64 como un tipo F (float) en la pila de evaluación indirectamente.

Ldind_Ref

Carga una referencia de objeto como un tipo O (referencia de objeto) en la pila de evaluación indirectamente.

Ldind_U1

Carga un valor de tipo unsigned int8 como en int32 la pila de evaluación indirectamente.

Ldind_U2

Carga un valor de tipo unsigned int16 como en int32 la pila de evaluación indirectamente.

Ldind_U4

Carga un valor de tipo unsigned int32 como en int32 la pila de evaluación indirectamente.

Ldlen

Inserta el número de elementos de una matriz unidimensional basada en cero en la pila de evaluación.

Ldloc

Carga la variable local en un índice específico en la pila de evaluación.

Ldloc_0

Carga la variable local en el índice 0 en la pila de evaluación.

Ldloc_1

Carga la variable local en el índice 1 en la pila de evaluación.

Ldloc_2

Carga la variable local en el índice 2 en la pila de evaluación.

Ldloc_3

Carga la variable local en el índice 3 en la pila de evaluación.

Ldloc_S

Carga la variable local en un índice específico en la pila de evaluación, forma abreviada.

Ldloca

Carga la dirección de la variable local en un índice específico en la pila de evaluación.

Ldloca_S

Carga la dirección de la variable local en un índice específico en la pila de evaluación, forma abreviada.

Ldnull

Inserta una referencia nula (tipo O) en la pila de evaluación.

Ldobj

Copia el objeto de tipo de valor al que apunta una dirección en la parte superior de la pila de evaluación.

Ldsfld

Inserta el valor de un campo estático en la pila de evaluación.

Ldsflda

Inserta la dirección de un campo estático en la pila de evaluación.

Ldstr

Inserta una nueva referencia de objeto a un literal de cadena almacenado en los metadatos.

Ldtoken

Convierte un token de metadatos en su representación en tiempo de ejecución, lo inserta en la pila de evaluación.

Ldvirtftn

Inserta un puntero no administrado (tipo native int) en el código nativo que implementa un método virtual determinado asociado a un objeto especificado en la pila de evaluación.

Leave

Sale de una región protegida de código, transfiriendo incondicionalmente el control a una instrucción de destino específica.

Leave_S

Sale de una región protegida del código, transfiriendo incondicionalmente el control a una instrucción de destino (formulario corto).

Localloc

Asigna un determinado número de bytes del grupo de memoria dinámica local e inserta la dirección (un puntero transitorio, tipo *) del primer byte asignado en la pila de evaluación.

Mkrefany

Inserta una referencia con tipo a una instancia de un tipo específico en la pila de evaluación.

Mul

Multiplica dos valores e inserta el resultado en la pila de evaluación.

Mul_Ovf

Multiplica dos valores enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

Mul_Ovf_Un

Multiplica dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

Neg

Niega un valor e inserta el resultado en la pila de evaluación.

Newarr

Inserta una referencia de objeto a una nueva matriz unidimensional basada en cero cuyos elementos son de un tipo específico en la pila de evaluación.

Newobj

Crea un nuevo objeto o una nueva instancia de un tipo de valor, insertando una referencia de objeto (tipo O) en la pila de evaluación.

Nop

Rellena el espacio si se revisan los códigos de operación. No se realiza ninguna operación significativa aunque se puede consumir un ciclo de procesamiento.

Not

Calcula el complemento bit a bit del valor entero en la parte superior de la pila e inserta el resultado en la pila de evaluación como el mismo tipo.

Or

Calcule el complemento bit a bit de los dos valores enteros en la parte superior de la pila e inserta el resultado en la pila de evaluación.

Pop

Quita el valor que se encuentra actualmente encima de la pila de evaluación.

Prefix1

Se trata de una instrucción reservada.

Prefix2

Se trata de una instrucción reservada.

Prefix3

Se trata de una instrucción reservada.

Prefix4

Se trata de una instrucción reservada.

Prefix5

Se trata de una instrucción reservada.

Prefix6

Se trata de una instrucción reservada.

Prefix7

Se trata de una instrucción reservada.

Prefixref

Se trata de una instrucción reservada.

Readonly

Especifica que la operación de dirección de matriz posterior no realiza ninguna comprobación de tipos en tiempo de ejecución y que devuelve un puntero administrado cuya mubilidad está restringida.

Refanytype

Recupera el token de tipo incrustado en una referencia con tipo.

Refanyval

Recupera la dirección (tipo &) insertada en una referencia con tipo.

Rem

Divide dos valores e inserta el resto en la pila de evaluación.

Rem_Un

Divide dos valores sin signo e inserta el resto en la pila de evaluación.

Ret

Devuelve del método actual, insertando un valor devuelto (si está presente) desde la pila de evaluación del destinatario en la pila de evaluación del autor de la llamada.

Rethrow

Vuelve a generar la excepción actual.

Shl

Desplaza un valor entero a la izquierda (en ceros) por un número especificado de bits, insertando el resultado en la pila de evaluación.

Shr

Desplaza un valor entero (en signo) a la derecha por un número especificado de bits, insertando el resultado en la pila de evaluación.

Shr_Un

Desplaza un valor entero sin signo (en ceros) a la derecha por un número especificado de bits, insertando el resultado en la pila de evaluación.

Sizeof

Inserta el tamaño, en bytes, de un tipo de valor proporcionado en la pila de evaluación.

Starg

Almacena el valor en la parte superior de la pila de evaluación en la ranura de argumentos en un índice especificado.

Starg_S

Almacena el valor en la parte superior de la pila de evaluación en el espacio de argumentos en un índice especificado, forma abreviada.

Stelem

Reemplaza el elemento de matriz en un índice determinado por el valor de la pila de evaluación, cuyo tipo se especifica en la instrucción .

Stelem_I

Reemplaza el elemento de matriz en un índice determinado por el native int valor de la pila de evaluación.

Stelem_I1

Reemplaza el elemento de matriz en un índice determinado por el int8 valor de la pila de evaluación.

Stelem_I2

Reemplaza el elemento de matriz en un índice determinado por el int16 valor de la pila de evaluación.

Stelem_I4

Reemplaza el elemento de matriz en un índice determinado por el int32 valor de la pila de evaluación.

Stelem_I8

Reemplaza el elemento de matriz en un índice determinado por el int64 valor de la pila de evaluación.

Stelem_R4

Reemplaza el elemento de matriz en un índice determinado por el float32 valor de la pila de evaluación.

Stelem_R8

Reemplaza el elemento de matriz en un índice determinado por el float64 valor de la pila de evaluación.

Stelem_Ref

Reemplaza el elemento de matriz en un índice determinado por el valor ref del objeto (tipo O) en la pila de evaluación.

Stfld

Reemplaza el valor almacenado en el campo de una referencia o puntero de objeto por un nuevo valor.

Stind_I

Almacena un valor de tipo native int en una dirección proporcionada.

Stind_I1

Almacena un valor de tipo int8 en una dirección proporcionada.

Stind_I2

Almacena un valor de tipo int16 en una dirección proporcionada.

Stind_I4

Almacena un valor de tipo int32 en una dirección proporcionada.

Stind_I8

Almacena un valor de tipo int64 en una dirección proporcionada.

Stind_R4

Almacena un valor de tipo float32 en una dirección proporcionada.

Stind_R8

Almacena un valor de tipo float64 en una dirección proporcionada.

Stind_Ref

Almacena un valor de referencia de objeto en una dirección proporcionada.

Stloc

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en un índice especificado.

Stloc_0

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 0.

Stloc_1

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 1.

Stloc_2

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 2.

Stloc_3

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 3.

Stloc_S

Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en index (formulario corto).

Stobj

Copia un valor de un tipo especificado de la pila de evaluación en una dirección de memoria proporcionada.

Stsfld

Reemplaza el valor de un campo estático por un valor de la pila de evaluación.

Sub

Resta un valor de otro e inserta el resultado en la pila de evaluación.

Sub_Ovf

Resta un valor entero de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

Sub_Ovf_Un

Resta un valor entero sin signo de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación.

Switch

Implementa una tabla de saltos.

Tailcall

Realiza una instrucción de llamada de método postfijo de modo que el marco de pila del método actual se quita antes de que se ejecute la instrucción de llamada real.

Throw

Produce el objeto de excepción actualmente en la pila de evaluación.

Unaligned

Indica que una dirección que se encuentra en la parte de arriba de la pila de evaluación podría no alinearse con el tamaño natural de las instrucciones , stind, ldfld, stfldldobj, , , stobj, initblko cpblk inmediatamente siguientesldind.

Unbox

Convierte la representación boxing de un tipo de valor en su formulario sin conversión boxing.

Unbox_Any

Convierte la representación boxing de un tipo especificado en la instrucción en su formulario sin conversión boxing.

Volatile

Especifica que una dirección que se encuentra actualmente encima de la pila de evaluación podría ser volátil y los resultados de leer esa ubicación no se pueden almacenar en caché o que no se pueden suprimir varios almacenes en esa ubicación.

Xor

Calcula el XOR bit a bit de los dos valores principales de la pila de evaluación, insertando el resultado en la pila de evaluación.

Métodos

Nombre Description
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
TakesSingleByteArgument(OpCode)

Devuelve true o false si el código de operación proporcionado toma un único argumento de byte.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a