OpCodes Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
| 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 |
| Brfalse_S |
Transfere o controle para uma instrução de destino se |
| Brtrue |
Transfere o controle para uma instrução de destino se |
| Brtrue_S |
Transfere o controle para uma instrução de destino (formulário curto) se |
| 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 |
| Cgt |
Compara dois valores. Se o primeiro valor for maior que o segundo, o valor inteiro 1 |
| 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 |
| 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 |
| Clt_Un |
Compara os valores não assinados ou não ordenados |
| 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 |
| Conv_I1 |
Converte o valor na parte superior da pilha de avaliação para |
| Conv_I2 |
Converte o valor na parte superior da pilha de avaliação para |
| Conv_I4 |
Converte o valor na parte superior da pilha de avaliação em |
| Conv_I8 |
Converte o valor na parte superior da pilha de avaliação em |
| Conv_Ovf_I |
Converte o valor assinado na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I1 |
Converte o valor assinado na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I1_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I2 |
Converte o valor assinado na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I2_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I4 |
Converte o valor assinado na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I4_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I8 |
Converte o valor assinado na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_I8_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação para assinado |
| Conv_Ovf_U |
Converte o valor assinado na parte superior da pilha de avaliação em |
| Conv_Ovf_U_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação em |
| Conv_Ovf_U1 |
Converte o valor assinado na parte superior da pilha |
| Conv_Ovf_U1_Un |
Converte o valor sem sinal na parte superior da pilha |
| Conv_Ovf_U2 |
Converte o valor assinado na parte superior da pilha |
| Conv_Ovf_U2_Un |
Converte o valor sem sinal na parte superior da pilha |
| Conv_Ovf_U4 |
Converte o valor assinado na parte superior da pilha de avaliação em |
| Conv_Ovf_U4_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação em |
| Conv_Ovf_U8 |
Converte o valor assinado na parte superior da pilha de avaliação em |
| Conv_Ovf_U8_Un |
Converte o valor sem sinal na parte superior da pilha de avaliação em |
| Conv_R_Un |
Converte o valor inteiro sem sinal na parte superior da pilha de avaliação em |
| Conv_R4 |
Converte o valor na parte superior da pilha de avaliação em |
| Conv_R8 |
Converte o valor na parte superior da pilha de avaliação em |
| Conv_U |
Converte o valor na parte superior da pilha |
| Conv_U1 |
Converte o valor na parte superior da pilha |
| Conv_U2 |
Converte o valor na parte superior da pilha |
| Conv_U4 |
Converte o valor na parte superior da pilha |
| Conv_U8 |
Converte o valor na parte superior da pilha |
| 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 |
| Div |
Divide dois valores e envia o resultado por push como um ponto flutuante (tipo |
| Div_Un |
Divide dois valores inteiros sem sinal e envia o resultado ( |
| 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 |
| Endfinally |
Transfere o controle da cláusula ou |
| 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 |
| 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 |
| Ldc_I4_0 |
Envia por push o valor inteiro de 0 para a pilha de avaliação como um |
| Ldc_I4_1 |
Envia o valor inteiro de 1 para a pilha de avaliação como um |
| Ldc_I4_2 |
Envia o valor inteiro de 2 para a pilha de avaliação como um |
| Ldc_I4_3 |
Envia por push o valor inteiro de 3 para a pilha de avaliação como um |
| Ldc_I4_4 |
Envia por push o valor inteiro de 4 para a pilha de avaliação como um |
| Ldc_I4_5 |
Envia por push o valor inteiro de 5 para a pilha de avaliação como um |
| Ldc_I4_6 |
Envia por push o valor inteiro de 6 para a pilha de avaliação como um |
| Ldc_I4_7 |
Envia por push o valor inteiro de 7 para a pilha de avaliação como um |
| Ldc_I4_8 |
Envia por push o valor inteiro de 8 para a pilha de avaliação como um |
| Ldc_I4_M1 |
Envia por push o valor inteiro de -1 para a pilha de avaliação como um |
| Ldc_I4_S |
Envia o valor fornecido |
| Ldc_I8 |
Envia um valor fornecido de tipo |
| Ldc_R4 |
Envia um valor fornecido de tipo |
| Ldc_R8 |
Envia um valor fornecido de tipo |
| 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 |
| Ldelem_I1 |
Carrega o elemento com o tipo |
| Ldelem_I2 |
Carrega o elemento com o tipo |
| Ldelem_I4 |
Carrega o elemento com o tipo |
| Ldelem_I8 |
Carrega o elemento com o tipo |
| Ldelem_R4 |
Carrega o elemento com o tipo |
| Ldelem_R8 |
Carrega o elemento com o tipo |
| 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 |
| Ldelem_U1 |
Carrega o elemento com o tipo |
| Ldelem_U2 |
Carrega o elemento com o tipo |
| Ldelem_U4 |
Carrega o elemento com o tipo |
| 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 |
| 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 |
| Ldind_I |
Carrega um valor de tipo |
| Ldind_I1 |
Carrega um valor de tipo |
| Ldind_I2 |
Carrega um valor de tipo |
| Ldind_I4 |
Carrega um valor de tipo |
| Ldind_I8 |
Carrega um valor de tipo |
| Ldind_R4 |
Carrega um valor do tipo |
| Ldind_R8 |
Carrega um valor do tipo |
| Ldind_Ref |
Carrega uma referência de objeto como um tipo |
| Ldind_U1 |
Carrega um valor de tipo |
| Ldind_U2 |
Carrega um valor de tipo |
| Ldind_U4 |
Carrega um valor de tipo |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Stelem_I1 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_I2 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_I4 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_I8 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_R4 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_R8 |
Substitui o elemento de matriz em um determinado índice pelo |
| Stelem_Ref |
Substitui o elemento de matriz em um determinado índice pelo valor ref do objeto (tipo |
| 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 |
| Stind_I1 |
Armazena um valor de tipo |
| Stind_I2 |
Armazena um valor de tipo |
| Stind_I4 |
Armazena um valor de tipo |
| Stind_I8 |
Armazena um valor de tipo |
| Stind_R4 |
Armazena um valor de tipo |
| Stind_R8 |
Armazena um valor de tipo |
| 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 |
| 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 |
| 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) |