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 da MSIL (Microsoft intermediate language) para emissão por 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 namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
Type^ CreateDynamicType()
{
array<Type^>^ctorParams = {int::typeid,int::typeid};
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew 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", int::typeid, FieldAttributes::Public );
FieldBuilder^ yField = pointTypeBld->DefineField( "y", int::typeid, FieldAttributes::Public );
Type^ objType = Type::GetType( "System.Object" );
ConstructorInfo^ objCtor = objType->GetConstructor( gcnew array<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, void::typeid, nullptr );
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})";
array<Type^>^wlParams = {String::typeid,Object::typeid,Object::typeid};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo^ writeLineMI = Console::typeid->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, int::typeid );
// 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, int::typeid );
// 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, nullptr );
// 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();
}
int main()
{
array<Object^>^ctorParams = gcnew array<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, nullptr, ptInstance, gcnew array<Object^>(0) );
}
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 de Metadados e Semântica". Para obter mais informações, consulte CLI (Common Language Infrastructure) do ECMA 335.
Campos
Add |
Adiciona dois valores e envia o resultado para a pilha de avaliação. |
Add_Ovf |
Adiciona dois números inteiros, executa uma verificação de estouro e efetua o push do resultado para a pilha de avaliação. |
Add_Ovf_Un |
Adiciona dois valores de inteiro sem sinal, executa uma verificação de estouro e efetua o push do resultado para a pilha de avaliação. |
And |
Calcula o AND bit a bit de dois valores e efetua o push do resultado 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 são iguais. |
Beq_S |
Transferirá o controle para uma instrução de destino (forma abreviada) se dois valores forem iguais. |
Bge |
Transferirá controle para uma instrução de destino se o primeiro valor for maior ou igual ao segundo valor. |
Bge_S |
Transferirá controle para uma instrução de destino (forma abreviada) se o primeiro valor for maior ou igual ao segundo valor. |
Bge_Un |
Transferirá o controle para uma instrução de destino se o primeiro valor for maior que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Bge_Un_S |
Transferirá o controle para uma instrução de destino (forma abreviada) se o primeiro valor for maior que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Bgt |
Transferirá controle para uma instrução de destino se o primeiro valor for maior que o segundo valor. |
Bgt_S |
Transferirá controle para uma instrução de destino (forma abreviada) se o primeiro valor for maior que o segundo valor. |
Bgt_Un |
Transferirá o controle para uma instrução de destino se o primeiro valor for maior que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Bgt_Un_S |
Transferirá o controle para uma instrução de destino (forma abreviada) se o primeiro valor for maior que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Ble |
Transferirá controle para uma instrução de destino se o primeiro valor for menor ou igual ao segundo valor. |
Ble_S |
Transferirá controle para uma instrução de destino (forma abreviada) se o primeiro valor for menor ou igual ao segundo valor. |
Ble_Un |
Transferirá o controle para uma instrução de destino se o primeiro valor for menor ou igual ao segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Ble_Un_S |
Transferirá o controle para uma instrução de destino (forma abreviada) se o primeiro valor for menor ou igual ao segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Blt |
Transferirá controle para uma instrução de destino se o primeiro valor for menor que o segundo valor. |
Blt_S |
Transferirá controle para uma instrução de destino (forma abreviada) se o primeiro valor for menor que o segundo valor. |
Blt_Un |
Transferirá o controle para uma instrução de destino se o primeiro valor for menor que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Blt_Un_S |
Transferirá o controle para uma instrução de destino (forma abreviada) se o primeiro valor for menor que o segundo valor ao comparar valores de inteiro sem sinal ou valores float não ordenados. |
Bne_Un |
Transfere o controle para uma instrução de destino quando dois valores de inteiro sem sinal ou valores de float não ordenados não são iguais. |
Bne_Un_S |
Transfere o controle para uma instrução de destino (forma abreviada) quando dois valores inteiros sem sinal ou valores de float não ordenados não são iguais. |
Box |
Converte um tipo de valor em uma referência de objeto (tipo |
Br |
Transfere o controle incondicionalmente para uma instrução de destino. |
Br_S |
Transfere o controle de forma incondicional para uma instrução de destino (forma abreviada). |
Break |
Sinaliza a CLI (Common Language Infrastructure) para informar o depurador de que um ponto de interrupção foi ultrapassado. |
Brfalse |
Transferirá o controle para uma instrução de destino se |
Brfalse_S |
Transferirá 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 (forma abreviada) 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, enviando o valor retornado por push para a pilha de avaliação. |
Castclass |
Tenta converter um objeto passado por referência à classe especificada. |
Ceq |
Compara dois valores. Se eles 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 sem sinal ou não ordenados. Se o primeiro valor for maior que o segundo, o valor inteiro 1 |
Ckfinite |
Gera 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 sem sinal 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 em |
Conv_I2 |
Converte o valor na parte superior da pilha de avaliação em |
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 com sinal no topo da pilha de avaliação em |
Conv_Ovf_I_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_I1 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_I1_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_I2 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_I2_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_I4 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_I4_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_I8 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_I8_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_U |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_U_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_U1 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_U1_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_U2 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_U2_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_U4 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_U4_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_Ovf_U8 |
Converte o valor com sinal no topo da pilha de avaliação em |
Conv_Ovf_U8_Un |
Converte o valor sem sinal no topo da pilha de avaliação em |
Conv_R_Un |
Converte o valor de 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 de avaliação em |
Conv_U1 |
Converte o valor na parte superior da pilha de avaliação em |
Conv_U2 |
Converte o valor na parte superior da pilha de avaliação em |
Conv_U4 |
Converte o valor na parte superior da pilha de avaliação em |
Conv_U8 |
Converte o valor na parte superior da pilha de avaliação em |
Cpblk |
Copia bytes de número 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 efetua o push do resultado como um ponto flutuante (tipo |
Div_Un |
Divide dois valores de inteiro sem sinal e envia o resultado ( |
Dup |
Copia o valor atual mais alto na pilha de avaliação e, em seguida, envia a cópia para a pilha de avaliação. |
Endfilter |
Transfere o controle da cláusula |
Endfinally |
Transfere o controle da cláusula |
Initblk |
Inicializa um bloco de memória especificado em um endereço específico e em um tamanho e valor inicial especificados. |
Initobj |
Inicializa cada campo do tipo de valor em um endereço especificado como 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 vai 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 forma curta especificado) para a pilha de avaliação. |
Ldarga |
Carregar um endereço de argumento para a pilha de avaliação. |
Ldarga_S |
Carregar um endereço de argumento, na forma abreviada, para a pilha de avaliação. |
Ldc_I4 |
Envia por push um valor do tipo |
Ldc_I4_0 |
Envia o valor inteiro de 0 para a pilha de avaliação como um |
Ldc_I4_1 |
Envia o valor inteiro 1 por push para a pilha de avaliação como um |
Ldc_I4_2 |
Efetua o push do valor inteiro de 2 para a pilha de avaliação como um |
Ldc_I4_3 |
Efetua o push do valor inteiro de 3 para a pilha de avaliação como um |
Ldc_I4_4 |
Efetua o push do valor inteiro de 4 para a pilha de avaliação como um |
Ldc_I4_5 |
Efetua o push do valor inteiro de 5 para a pilha de avaliação como um |
Ldc_I4_6 |
Efetua o push do valor inteiro de 6 para a pilha de avaliação como um |
Ldc_I4_7 |
Efetua o push do valor inteiro de 7 para a pilha de avaliação como um |
Ldc_I4_8 |
Efetua o push do valor inteiro de 8 para a pilha de avaliação como um |
Ldc_I4_M1 |
Efetua o push do valor de inteiro de -1 para a pilha de avaliação como um |
Ldc_I4_S |
Envia o valor de |
Ldc_I8 |
Envia por push um valor do tipo |
Ldc_R4 |
Efetua o push de um valor fornecido do tipo |
Ldc_R8 |
Efetua o push de um valor fornecido do tipo |
Ldelem |
Carrega o elemento a 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 para o topo 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 da matriz em um índice de matriz especificado no topo da pilha de avaliação como o tipo |
Ldfld |
Localiza o valor de um campo no objeto cuja referência está na pilha de avaliação no momento. |
Ldflda |
Localiza o endereço de um campo no objeto cuja referência está na pilha de avaliação no momento. |
Ldftn |
Envia um ponteiro não gerenciado (tipo |
Ldind_I |
Carrega um valor do tipo |
Ldind_I1 |
Carrega um valor do tipo |
Ldind_I2 |
Carrega um valor do tipo |
Ldind_I4 |
Carrega um valor do tipo |
Ldind_I8 |
Carrega um valor do 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 do tipo |
Ldind_U2 |
Carrega um valor do tipo |
Ldind_U4 |
Carrega um valor do tipo |
Ldlen |
Efetua o push do número de elementos de uma matriz unidimensional de base 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 para a pilha de avaliação. |
Ldloc_2 |
Carrega a variável local no índice 2 para a pilha de avaliação. |
Ldloc_3 |
Carrega a variável local no índice 3 para a pilha de avaliação. |
Ldloc_S |
Carrega a variável local em um índice específico na pilha de avaliação, de forma abreviada. |
Ldloca |
Carrega o endereço da variável local em um índice específico para a pilha de avaliação. |
Ldloca_S |
Carrega o endereço da variável local em um índice específico para a pilha de avaliação, em forma abreviada. |
Ldnull |
Envia uma referência nula (tipo |
Ldobj |
Copia o objeto de tipo de valor apontado por um endereço na parte superior da pilha de avaliação. |
Ldsfld |
Envia por push o valor de um campo estático para a pilha de avaliação. |
Ldsflda |
Efetua o push do endereço de um campo estático para a pilha de avaliação. |
Ldstr |
Envia por push uma nova referência de objeto para uma literal de cadeia de caracteres armazenada nos metadados. |
Ldtoken |
Converte um token de metadados em sua representação de runtime, enviando-o por push para a pilha de avaliação. |
Ldvirtftn |
Efetua o push de um ponteiro não gerenciado (tipo |
Leave |
Sai de uma região protegida de código, transferindo o controle incondicionalmente para uma instrução de destino específica. |
Leave_S |
Sai de uma região protegida de código, transferindo o controle incondicionalmente para uma instrução de destino (forma abreviada). |
Localloc |
Aloca um determinado número de bytes do pool de memória dinâmica local e envia o endereço (um ponteiro transitório, tipo |
Mkrefany |
Envia uma referência tipada a uma instância de um tipo específico para a pilha de avaliação. |
Mul |
Multiplica dois valores e efetua o push do resultado na pilha de avaliação. |
Mul_Ovf |
Multiplica dois valores inteiros, executa uma verificação de estouro e envia por push o resultado na pilha de avaliação. |
Mul_Ovf_Un |
Multiplica dois valores de inteiro sem sinal, executa uma verificação de estouro e efetua o push do resultado para a pilha de avaliação. |
Neg |
Nega um valor e efetua o push do 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 na 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 |
Preencherá o espaço se os opcodes forem corrigidos. Nenhuma operação significativa será executada, embora um ciclo de processamento possa ser consumido. |
Not |
Calcula o complemento bit a bit do valor de inteiro na parte superior da pilha e efetua o push o resultado para a pilha de avaliação como o mesmo tipo. |
Or |
Computa o complemento bit a bit dos dois valores de inteiro na parte superior da pilha e efetua o push do resultado para a pilha de avaliação. |
Pop |
Remove o valor atualmente no topo 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 da matriz subsequente não executa nenhuma verificação de tipo no tempo de execução e que ela 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 efetua o push do restante para a pilha de avaliação. |
Rem_Un |
Divide dois valores sem sinal e efetua o push do restante para a pilha de avaliação. |
Ret |
Retorna do método atual, enviando um valor retornado (se houver) da pilha de avaliação do computador chamado para a pilha de avaliação do chamador. |
Rethrow |
Gera novamente a exceção atual. |
Shl |
Desloca um valor de inteiro para a esquerda (em zeros) por um número especificado de bits, efetuando o push do resultado para a pilha de avaliação. |
Shr |
Desloca um valor de inteiro (no logon) para a direita em um número especificado de bits, efetuando o push do resultado para a pilha de avaliação. |
Shr_Un |
Desloca um valor inteiro sem sinal (em zeros) para a direita em um número especificado de bits, efetuando o push do resultado para a pilha de avaliação. |
Sizeof |
Envia o tamanho, em bytes, de um tipo de valor fornecido para a pilha de avaliação. |
Starg |
Armazena o valor localizado no topo da pilha de avaliação no slot de argumento em um índice especificado. |
Starg_S |
Armazena o valor localizado no topo da pilha de avaliação no slot de argumento em um índice especificado, de forma abreviada. |
Stelem |
Substitui o elemento de matriz de um índice especificado 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 valor |
Stelem_I1 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_I2 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_I4 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_I8 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_R4 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_R8 |
Substitui o elemento de matriz em um determinado índice pelo valor |
Stelem_Ref |
Substitui o elemento da matriz de um determinado índice com o valor de referência de objeto (tipo |
Stfld |
Substitui o valor armazenado no campo de uma referência de objeto ou de um ponteiro por um novo valor. |
Stind_I |
Armazena um valor do tipo |
Stind_I1 |
Armazena um valor do tipo |
Stind_I2 |
Armazena um valor do tipo |
Stind_I4 |
Armazena um valor do tipo |
Stind_I8 |
Armazena um valor do tipo |
Stind_R4 |
Armazena um valor do tipo |
Stind_R8 |
Armazena um valor do tipo |
Stind_Ref |
Armazena um valor de referência de objeto em um endereço fornecido. |
Stloc |
Exibe o valor atual na parte superior da pilha de avaliação e o armazena na lista de variáveis locais 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 locais 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 locais 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 locais 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 locais 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 locais em |
Stobj |
Copia um valor do tipo especificado da pilha de avaliação para 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 efetua o push do resultado para a pilha de avaliação. |
Sub_Ovf |
Subtrai um valor de inteiro de outro, executa uma verificação de estouro e efetua o push do resultado para a pilha de avaliação. |
Sub_Ovf_Un |
Subtrai um valor de inteiro sem sinal de outro, executa uma verificação de estouro e efetua o push do resultado para a pilha de avaliação. |
Switch |
Implementa uma tabela de atalhos. |
Tailcall |
Executa uma instrução de chamada de método pós-fixada, de modo que o registro de ativação do método atual é removido antes da execução da instrução de chamada real. |
Throw |
Gera o objeto de exceção atualmente na pilha de avaliação. |
Unaligned |
Indica que um endereço atualmente sobre a pilha de avaliação pode não estar alinhado ao tamanho natural da instrução imediatamente após |
Unbox |
Converte a representação demarcada de um tipo de valor em sua forma não marcada. |
Unbox_Any |
Converte a representação demarcada de um tipo especificado na instrução em sua forma não demarcada. |
Volatile |
Especifica que um endereço atualmente sobre a pilha de avaliação pode ser volátil e os resultados da leitura daquele local não podem ser armazenados em cache ou não é possível suprimir vários repositórios para esse local. |
Xor |
Calcula o XOR bit a bit dos dois valores superiores na pilha de avaliação, efetuando o push do resultado para a pilha de avaliação. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
TakesSingleByteArgument(OpCode) |
Retornará true ou false se o código de operação fornecido tiver um argumento de byte único. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |