OpCodes Classe

Definição

Fornece representações de campo das instruções de Microsoft Linguagem Intermediária (MSIL) para emissão pelos membros da classe ILGenerator (como 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
Herança
OpCodes
Atributos

Exemplos

O exemplo a seguir demonstra a construção de um método dinâmico usando ILGenerator para emitir OpCodes em um 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

Comentários

Para obter uma descrição detalhada dos opcodes de membro, consulte a documentação da CLI (Common Language Infrastructure), especialmente "Partição III: Conjunto de Instruções CIL" e "Partição II: Definição e Semântica de Metadados". Para obter mais informações, consulte a CLI (Common Language Infrastructure) do ECMA 335.

Campos

Nome Description
Add

Adiciona dois valores e envia o resultado por push para a pilha de avaliação.

Add_Ovf

Adiciona dois inteiros, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

Add_Ovf_Un

Adiciona dois valores inteiros sem sinal, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

And

Calcula o AND bit a bit de dois valores e envia o resultado por push para a pilha de avaliação.

Arglist

Retorna um ponteiro não gerenciado para a lista de argumentos do método atual.

Beq

Transfere o controle para uma instrução de destino se dois valores forem iguais.

Beq_S

Transfere o controle para uma instrução de destino (forma curta) se dois valores forem iguais.

Bge

Transfere o controle para uma instrução de destino se o primeiro valor for maior ou igual ao segundo valor.

Bge_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for maior ou igual ao segundo valor.

Bge_Un

Transfere o controle para uma instrução de destino se o primeiro valor for maior que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Bge_Un_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for maior que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Bgt

Transfere o controle para uma instrução de destino se o primeiro valor for maior que o segundo valor.

Bgt_S

Transfere o controle para uma instrução de destino (formulário curto) se o primeiro valor for maior que o segundo valor.

Bgt_Un

Transfere o controle para uma instrução de destino se o primeiro valor for maior que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Bgt_Un_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for maior que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Ble

Transfere o controle para uma instrução de destino se o primeiro valor for menor ou igual ao segundo valor.

Ble_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for menor ou igual ao segundo valor.

Ble_Un

Transfere o controle para uma instrução de destino se o primeiro valor for menor ou igual ao segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Ble_Un_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for menor ou igual ao segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Blt

Transfere o controle para uma instrução de destino se o primeiro valor for menor que o segundo valor.

Blt_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for menor que o segundo valor.

Blt_Un

Transfere o controle para uma instrução de destino se o primeiro valor for menor que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Blt_Un_S

Transfere o controle para uma instrução de destino (forma curta) se o primeiro valor for menor que o segundo valor, ao comparar valores inteiros sem sinal ou valores flutuantes não ordenados.

Bne_Un

Transfere o controle para uma instrução de destino quando dois valores inteiros não assinados ou valores flutuantes não ordenados não forem iguais.

Bne_Un_S

Transfere o controle para uma instrução de destino (forma curta) quando dois valores inteiros sem sinal ou valores flutuantes não ordenados não forem iguais.

Box

Converte um tipo de valor em uma referência de objeto (tipo O).

Br

Transfere incondicionalmente o controle para uma instrução de destino.

Br_S

Transfere incondicionalmente o controle para uma instrução de destino (forma curta).

Break

Sinaliza a CLI (Common Language Infrastructure) para informar ao depurador que um ponto de interrupção foi interrompido.

Brfalse

Transfere o controle para uma instrução de destino se value for false, uma referência nula (Nothing em Visual Basic) ou zero.

Brfalse_S

Transfere o controle para uma instrução de destino se value for false, uma referência nula ou zero.

Brtrue

Transfere o controle para uma instrução de destino se value for true, não nulo ou não zero.

Brtrue_S

Transfere o controle para uma instrução de destino (formulário curto) se value for true, não nulo ou não zero.

Call

Chama o método indicado pelo descritor de método passado.

Calli

Chama o método indicado na pilha de avaliação (como um ponteiro para um ponto de entrada) com argumentos descritos por uma convenção de chamada.

Callvirt

Chama um método de associação tardia em um objeto, empurrando o valor retornado para a pilha de avaliação.

Castclass

Tenta converter um objeto passado por referência à classe especificada.

Ceq

Compara dois valores. Se forem iguais, o valor inteiro 1 (int32) será enviado por push para a pilha de avaliação; caso contrário, 0 (int32) é enviado por push para a pilha de avaliação.

Cgt

Compara dois valores. Se o primeiro valor for maior que o segundo, o valor inteiro 1 (int32) será enviado por push para a pilha de avaliação; caso contrário, 0 (int32) é enviado por push para a pilha de avaliação.

Cgt_Un

Compara dois valores não assinados ou não ordenados. Se o primeiro valor for maior que o segundo, o valor inteiro 1 (int32) será enviado por push para a pilha de avaliação; caso contrário, 0 (int32) é enviado por push para a pilha de avaliação.

Ckfinite

Gerará ArithmeticException se o valor não for um número finito.

Clt

Compara dois valores. Se o primeiro valor for menor que o segundo, o valor inteiro 1 (int32) será enviado por push para a pilha de avaliação; caso contrário, 0 (int32) é enviado por push para a pilha de avaliação.

Clt_Un

Compara os valores não assinados ou não ordenados value1 e value2. Se value1 for menor que value2, o valor inteiro 1 (int32) será enviado por push para a pilha de avaliação; caso contrário, 0 (int32) será enviado por push para a pilha de avaliação.

Constrained

Restringe o tipo no qual uma chamada de método virtual é feita.

Conv_I

Converte o valor na parte superior da pilha de avaliação em native int.

Conv_I1

Converte o valor na parte superior da pilha de avaliação para int8, em seguida, estende-o (pads) para int32.

Conv_I2

Converte o valor na parte superior da pilha de avaliação para int16, em seguida, estende-o (pads) para int32.

Conv_I4

Converte o valor na parte superior da pilha de avaliação em int32.

Conv_I8

Converte o valor na parte superior da pilha de avaliação em int64.

Conv_Ovf_I

Converte o valor assinado na parte superior da pilha de avaliação para assinado native int, lançando OverflowException no estouro.

Conv_Ovf_I_Un

Converte o valor sem sinal na parte superior da pilha de avaliação para assinado native int, lançando OverflowException no estouro.

Conv_Ovf_I1

Converte o valor assinado na parte superior da pilha de avaliação para assinado int8 e estende-o para int32, lançando OverflowException o estouro.

Conv_Ovf_I1_Un

Converte o valor sem sinal na parte superior da pilha de avaliação para assinado int8 e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_I2

Converte o valor assinado na parte superior da pilha de avaliação para assinado int16 e estendendo-o para int32, lançando OverflowException o estouro.

Conv_Ovf_I2_Un

Converte o valor sem sinal na parte superior da pilha de avaliação para assinado int16 e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_I4

Converte o valor assinado na parte superior da pilha de avaliação para assinado int32, lançando OverflowException no estouro.

Conv_Ovf_I4_Un

Converte o valor sem sinal na parte superior da pilha de avaliação para assinado int32, lançando OverflowException no estouro.

Conv_Ovf_I8

Converte o valor assinado na parte superior da pilha de avaliação para assinado int64, lançando OverflowException no estouro.

Conv_Ovf_I8_Un

Converte o valor sem sinal na parte superior da pilha de avaliação para assinado int64, lançando OverflowException no estouro.

Conv_Ovf_U

Converte o valor assinado na parte superior da pilha de avaliação em unsigned native int, lançando OverflowException no estouro.

Conv_Ovf_U_Un

Converte o valor sem sinal na parte superior da pilha de avaliação em unsigned native int, lançando OverflowException em estouro.

Conv_Ovf_U1

Converte o valor assinado na parte superior da pilha unsigned int8 de avaliação e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_U1_Un

Converte o valor sem sinal na parte superior da pilha unsigned int8 de avaliação e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_U2

Converte o valor assinado na parte superior da pilha unsigned int16 de avaliação e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_U2_Un

Converte o valor sem sinal na parte superior da pilha unsigned int16 de avaliação e estende-o para int32, lançando OverflowException em estouro.

Conv_Ovf_U4

Converte o valor assinado na parte superior da pilha de avaliação em unsigned int32, lançando OverflowException no estouro.

Conv_Ovf_U4_Un

Converte o valor sem sinal na parte superior da pilha de avaliação em unsigned int32, lançando OverflowException em estouro.

Conv_Ovf_U8

Converte o valor assinado na parte superior da pilha de avaliação em unsigned int64, lançando OverflowException no estouro.

Conv_Ovf_U8_Un

Converte o valor sem sinal na parte superior da pilha de avaliação em unsigned int64, lançando OverflowException em estouro.

Conv_R_Un

Converte o valor inteiro sem sinal na parte superior da pilha de avaliação em float32.

Conv_R4

Converte o valor na parte superior da pilha de avaliação em float32.

Conv_R8

Converte o valor na parte superior da pilha de avaliação em float64.

Conv_U

Converte o valor na parte superior da pilha unsigned native intde avaliação e estende-o para native int.

Conv_U1

Converte o valor na parte superior da pilha unsigned int8de avaliação e estende-o para int32.

Conv_U2

Converte o valor na parte superior da pilha unsigned int16de avaliação e estende-o para int32.

Conv_U4

Converte o valor na parte superior da pilha unsigned int32de avaliação e estende-o para int32.

Conv_U8

Converte o valor na parte superior da pilha unsigned int64de avaliação e estende-o para int64.

Cpblk

Copia um número de bytes especificados de um endereço de origem para um endereço de destino.

Cpobj

Copia o tipo de valor localizado no endereço de um objeto (tipo &ou native int ) para o endereço do objeto de destino (tipo&, ounative int).

Div

Divide dois valores e envia o resultado por push como um ponto flutuante (tipo F) ou quociente (tipo int32) para a pilha de avaliação.

Div_Un

Divide dois valores inteiros sem sinal e envia o resultado (int32) por push para a pilha de avaliação.

Dup

Copia o valor mais alto atual na pilha de avaliação e, em seguida, envia a cópia por push para a pilha de avaliação.

Endfilter

Transfere o filter controle da cláusula de uma exceção de volta para o manipulador de exceção da CLI (Common Language Infrastructure).

Endfinally

Transfere o controle da cláusula ou finally da fault cláusula de um bloco de exceção de volta para o manipulador de exceção da CLI (Common Language Infrastructure).

Initblk

Inicializa um bloco de memória especificado em um endereço específico para um determinado tamanho e valor inicial.

Initobj

Inicializa cada campo do tipo de valor em um endereço especificado para uma referência nula ou 0 do tipo primitivo apropriado.

Isinst

Testa se uma referência de objeto (tipo O) é uma instância de uma classe específica.

Jmp

Sai do método atual e salta para o método especificado.

Ldarg

Carrega um argumento (referenciado por um valor de índice especificado) na pilha.

Ldarg_0

Carrega o argumento no índice 0 na pilha de avaliação.

Ldarg_1

Carrega o argumento no índice 1 na pilha de avaliação.

Ldarg_2

Carrega o argumento no índice 2 na pilha de avaliação.

Ldarg_3

Carrega o argumento no índice 3 na pilha de avaliação.

Ldarg_S

Carrega o argumento (referenciado por um índice de formulário curto especificado) na pilha de avaliação.

Ldarga

Carregue um endereço de argumento na pilha de avaliação.

Ldarga_S

Carregue um endereço de argumento, em forma abreviada, na pilha de avaliação.

Ldc_I4

Envia um valor fornecido de tipo int32 para a pilha de avaliação como um int32.

Ldc_I4_0

Envia por push o valor inteiro de 0 para a pilha de avaliação como um int32.

Ldc_I4_1

Envia o valor inteiro de 1 para a pilha de avaliação como um int32.

Ldc_I4_2

Envia o valor inteiro de 2 para a pilha de avaliação como um int32.

Ldc_I4_3

Envia por push o valor inteiro de 3 para a pilha de avaliação como um int32.

Ldc_I4_4

Envia por push o valor inteiro de 4 para a pilha de avaliação como um int32.

Ldc_I4_5

Envia por push o valor inteiro de 5 para a pilha de avaliação como um int32.

Ldc_I4_6

Envia por push o valor inteiro de 6 para a pilha de avaliação como um int32.

Ldc_I4_7

Envia por push o valor inteiro de 7 para a pilha de avaliação como um int32.

Ldc_I4_8

Envia por push o valor inteiro de 8 para a pilha de avaliação como um int32.

Ldc_I4_M1

Envia por push o valor inteiro de -1 para a pilha de avaliação como um int32.

Ldc_I4_S

Envia o valor fornecido int8 para a pilha de avaliação como um int32formulário curto.

Ldc_I8

Envia um valor fornecido de tipo int64 para a pilha de avaliação como um int64.

Ldc_R4

Envia um valor fornecido de tipo float32 para a pilha de avaliação como tipo F (float).

Ldc_R8

Envia um valor fornecido de tipo float64 para a pilha de avaliação como tipo F (float).

Ldelem

Carrega o elemento em um índice de matriz especificado na parte superior da pilha de avaliação como o tipo especificado na instrução.

Ldelem_I

Carrega o elemento com o tipo native int em um índice de matriz especificado na parte superior da pilha de avaliação como um native int.

Ldelem_I1

Carrega o elemento com o tipo int8 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelem_I2

Carrega o elemento com o tipo int16 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelem_I4

Carrega o elemento com o tipo int32 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelem_I8

Carrega o elemento com o tipo int64 em um índice de matriz especificado na parte superior da pilha de avaliação como um int64.

Ldelem_R4

Carrega o elemento com o tipo float32 em um índice de matriz especificado na parte superior da pilha de avaliação como tipo F (float).

Ldelem_R8

Carrega o elemento com o tipo float64 em um índice de matriz especificado na parte superior da pilha de avaliação como tipo F (float).

Ldelem_Ref

Carrega o elemento que contém uma referência de objeto em um índice de matriz especificado na parte superior da pilha de avaliação como tipo O (referência de objeto).

Ldelem_U1

Carrega o elemento com o tipo unsigned int8 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelem_U2

Carrega o elemento com o tipo unsigned int16 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelem_U4

Carrega o elemento com o tipo unsigned int32 em um índice de matriz especificado na parte superior da pilha de avaliação como um int32.

Ldelema

Carrega o endereço do elemento de matriz em um índice de matriz especificado na parte superior da pilha de avaliação como tipo & (ponteiro gerenciado).

Ldfld

Localiza o valor de um campo no objeto cuja referência está atualmente na pilha de avaliação.

Ldflda

Localiza o endereço de um campo no objeto cuja referência está atualmente na pilha de avaliação.

Ldftn

Envia um ponteiro não gerenciado (tipo native int) para o código nativo implementando um método específico na pilha de avaliação.

Ldind_I

Carrega um valor de tipo native int como um native int na pilha de avaliação indiretamente.

Ldind_I1

Carrega um valor de tipo int8 como um int32 na pilha de avaliação indiretamente.

Ldind_I2

Carrega um valor de tipo int16 como um int32 na pilha de avaliação indiretamente.

Ldind_I4

Carrega um valor de tipo int32 como um int32 na pilha de avaliação indiretamente.

Ldind_I8

Carrega um valor de tipo int64 como um int64 na pilha de avaliação indiretamente.

Ldind_R4

Carrega um valor do tipo float32 como um tipo F (float) na pilha de avaliação indiretamente.

Ldind_R8

Carrega um valor do tipo float64 como um tipo F (float) na pilha de avaliação indiretamente.

Ldind_Ref

Carrega uma referência de objeto como um tipo O (referência de objeto) na pilha de avaliação indiretamente.

Ldind_U1

Carrega um valor de tipo unsigned int8 como um int32 na pilha de avaliação indiretamente.

Ldind_U2

Carrega um valor de tipo unsigned int16 como um int32 na pilha de avaliação indiretamente.

Ldind_U4

Carrega um valor de tipo unsigned int32 como um int32 na pilha de avaliação indiretamente.

Ldlen

Envia o número de elementos de uma matriz unidimensional baseada em zero para a pilha de avaliação.

Ldloc

Carrega a variável local em um índice específico na pilha de avaliação.

Ldloc_0

Carrega a variável local no índice 0 na pilha de avaliação.

Ldloc_1

Carrega a variável local no índice 1 na pilha de avaliação.

Ldloc_2

Carrega a variável local no índice 2 na pilha de avaliação.

Ldloc_3

Carrega a variável local no índice 3 na pilha de avaliação.

Ldloc_S

Carrega a variável local em um índice específico na pilha de avaliação, forma curta.

Ldloca

Carrega o endereço da variável local em um índice específico na pilha de avaliação.

Ldloca_S

Carrega o endereço da variável local em um índice específico na pilha de avaliação, forma curta.

Ldnull

Envia por push uma referência nula (tipo O) para a pilha de avaliação.

Ldobj

Copia o objeto de tipo de valor apontado por um endereço para a parte superior da pilha de avaliação.

Ldsfld

Envia o valor de um campo estático para a pilha de avaliação.

Ldsflda

Envia o endereço de um campo estático para a pilha de avaliação.

Ldstr

Envia por push uma nova referência de objeto para um literal de cadeia de caracteres armazenado nos metadados.

Ldtoken

Converte um token de metadados em sua representação de runtime, empurrando-o para a pilha de avaliação.

Ldvirtftn

Envia um ponteiro não gerenciado (tipo native int) para o código nativo implementando um método virtual específico associado a um objeto especificado na pilha de avaliação.

Leave

Sai de uma região protegida de código, transferindo incondicionalmente o controle para uma instrução de destino específica.

Leave_S

Sai de uma região protegida de código, transferindo incondicionalmente o controle para uma instrução de destino (forma curta).

Localloc

Aloca um determinado número de bytes do pool de memória dinâmica local e envia por push o endereço (um ponteiro transitório, tipo *) do primeiro byte alocado na pilha de avaliação.

Mkrefany

Envia por push uma referência tipada para uma instância de um tipo específico na pilha de avaliação.

Mul

Multiplica dois valores e envia o resultado por push na pilha de avaliação.

Mul_Ovf

Multiplica dois valores inteiros, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

Mul_Ovf_Un

Multiplica dois valores inteiros sem sinal, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

Neg

Nega um valor e envia o resultado para a pilha de avaliação.

Newarr

Envia por push uma referência de objeto para uma nova matriz unidimensional baseada em zero cujos elementos são de um tipo específico para a pilha de avaliação.

Newobj

Cria um novo objeto ou uma nova instância de um tipo de valor, enviando por push uma referência de objeto (tipo O) para a pilha de avaliação.

Nop

Preenche o espaço se os opcodes forem corrigidos. Nenhuma operação significativa é executada, embora um ciclo de processamento possa ser consumido.

Not

Calcula o complemento bit a bit do valor inteiro na parte superior da pilha e envia o resultado para a pilha de avaliação como o mesmo tipo.

Or

Compute o complemento bit a bit dos dois valores inteiros na parte superior da pilha e efetue push do resultado para a pilha de avaliação.

Pop

Remove o valor atualmente em cima da pilha de avaliação.

Prefix1

Esta é uma instrução reservada.

Prefix2

Esta é uma instrução reservada.

Prefix3

Esta é uma instrução reservada.

Prefix4

Esta é uma instrução reservada.

Prefix5

Esta é uma instrução reservada.

Prefix6

Esta é uma instrução reservada.

Prefix7

Esta é uma instrução reservada.

Prefixref

Esta é uma instrução reservada.

Readonly

Especifica que a operação de endereço de matriz subsequente não executa nenhuma verificação de tipo em tempo de execução e que retorna um ponteiro gerenciado cuja mutabilidade é restrita.

Refanytype

Recupera o token de tipo inserido em uma referência tipada.

Refanyval

Recupera o endereço (tipo &) inserido em uma referência tipada.

Rem

Divide dois valores e envia o restante para a pilha de avaliação.

Rem_Un

Divide dois valores não assinados e envia o restante para a pilha de avaliação.

Ret

Retorna do método atual, enviando por push um valor retornado (se presente) da pilha de avaliação do receptor para a pilha de avaliação do chamador.

Rethrow

Testa novamente a exceção atual.

Shl

Desloca um valor inteiro para a esquerda (em zeros) por um número especificado de bits, empurrando o resultado para a pilha de avaliação.

Shr

Desloca um valor inteiro (em sinal) para a direita por um número especificado de bits, empurrando o resultado para a pilha de avaliação.

Shr_Un

Desloca um valor inteiro sem sinal (em zeros) para a direita por um número especificado de bits, empurrando o resultado para a pilha de avaliação.

Sizeof

Envia por push o tamanho, em bytes, de um tipo de valor fornecido para a pilha de avaliação.

Starg

Armazena o valor na parte superior da pilha de avaliação no slot de argumento em um índice especificado.

Starg_S

Armazena o valor na parte superior da pilha de avaliação no slot de argumento em um índice especificado, forma curta.

Stelem

Substitui o elemento de matriz em um determinado índice pelo valor na pilha de avaliação, cujo tipo é especificado na instrução.

Stelem_I

Substitui o elemento de matriz em um determinado índice pelo native int valor na pilha de avaliação.

Stelem_I1

Substitui o elemento de matriz em um determinado índice pelo int8 valor na pilha de avaliação.

Stelem_I2

Substitui o elemento de matriz em um determinado índice pelo int16 valor na pilha de avaliação.

Stelem_I4

Substitui o elemento de matriz em um determinado índice pelo int32 valor na pilha de avaliação.

Stelem_I8

Substitui o elemento de matriz em um determinado índice pelo int64 valor na pilha de avaliação.

Stelem_R4

Substitui o elemento de matriz em um determinado índice pelo float32 valor na pilha de avaliação.

Stelem_R8

Substitui o elemento de matriz em um determinado índice pelo float64 valor na pilha de avaliação.

Stelem_Ref

Substitui o elemento de matriz em um determinado índice pelo valor ref do objeto (tipo O) na pilha de avaliação.

Stfld

Substitui o valor armazenado no campo de uma referência de objeto ou ponteiro por um novo valor.

Stind_I

Armazena um valor de tipo native int em um endereço fornecido.

Stind_I1

Armazena um valor de tipo int8 em um endereço fornecido.

Stind_I2

Armazena um valor de tipo int16 em um endereço fornecido.

Stind_I4

Armazena um valor de tipo int32 em um endereço fornecido.

Stind_I8

Armazena um valor de tipo int64 em um endereço fornecido.

Stind_R4

Armazena um valor de tipo float32 em um endereço fornecido.

Stind_R8

Armazena um valor de tipo float64 em um endereço fornecido.

Stind_Ref

Armazena um valor de referência de objeto em um endereço fornecido.

Stloc

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local em um índice especificado.

Stloc_0

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local no índice 0.

Stloc_1

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local no índice 1.

Stloc_2

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local no índice 2.

Stloc_3

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local no índice 3.

Stloc_S

Exibe o valor atual da parte superior da pilha de avaliação e o armazena na lista de variáveis local em index (forma curta).

Stobj

Copia um valor de um tipo especificado da pilha de avaliação em um endereço de memória fornecido.

Stsfld

Substitui o valor de um campo estático por um valor da pilha de avaliação.

Sub

Subtrai um valor de outro e envia o resultado para a pilha de avaliação.

Sub_Ovf

Subtrai um valor inteiro de outro, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

Sub_Ovf_Un

Subtrai um valor inteiro sem sinal de outro, executa uma verificação de estouro e envia o resultado para a pilha de avaliação.

Switch

Implementa uma tabela de saltos.

Tailcall

Executa uma instrução de chamada de método postfixado de modo que o quadro de pilha do método atual seja removido antes que a instrução de chamada real seja executada.

Throw

Lança o objeto de exceção atualmente na pilha de avaliação.

Unaligned

Indica que um endereço no momento no topo da pilha de avaliação pode não estar alinhado ao tamanho natural do seguinte ldind, , stind, ldfld, stfld, ldobj, , stobj, initblkou cpblk instrução.

Unbox

Converte a representação em caixa de um tipo de valor em seu formulário sem caixa.

Unbox_Any

Converte a representação em caixa de um tipo especificado na instrução em seu formulário sem caixa.

Volatile

Especifica que um endereço atualmente no topo da pilha de avaliação pode ser volátil e os resultados da leitura desse local não podem ser armazenados em cache ou que vários repositórios para esse local não podem ser suprimidos.

Xor

Calcula o XOR bit a bit dos dois principais valores na pilha de avaliação, empurrando o resultado para a pilha de avaliação.

Métodos

Nome Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
TakesSingleByteArgument(OpCode)

Retorna true ou false se o opcode fornecido usa um argumento de byte único.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a