OpCodes Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona representaciones de campo de las instrucciones del Lenguaje intermedio de Microsoft (MSIL) para su emisión por parte de los miembros de la clase 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
- Herencia
-
OpCodes
- Atributos
Ejemplos
En el ejemplo siguiente se muestra la construcción de un método dinámico mediante ILGenerator para emitir OpCodes
en .MethodBuilder
using 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
Comentarios
Para obtener una descripción detallada de los códigos de operación del miembro, consulte la documentación de Common Language Infrastructure (CLI), especialmente "Partition III: CIL Instruction Set" y "Partition II: Metadata Definition and Semantics". Para obtener más información, consulte ECMA 335 Common Language Infrastructure (CLI).
Campos
Add |
Suma dos valores e inserta el resultado en la pila de evaluación. |
Add_Ovf |
Suma dos enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
Add_Ovf_Un |
Suma dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
And |
Calcula la operación AND bit a bit de dos valores e inserta el resultado en la pila de evaluación. |
Arglist |
Devuelve un puntero no administrado a la lista de argumentos del método actual. |
Beq |
Transfiere el control a una instrucción máquina de destino si dos valores son iguales. |
Beq_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si dos valores son iguales. |
Bge |
Transfiere el control a una instrucción máquina de destino si el primer valor es mayor o igual que el segundo valor. |
Bge_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es mayor o igual que el segundo valor. |
Bge_Un |
Transfiere el control a una instrucción máquina de destino si el primer valor es mayor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Bge_Un_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es mayor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Bgt |
Transfiere el control a una instrucción máquina de destino si el primer valor es mayor que el segundo valor. |
Bgt_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es mayor que el segundo valor. |
Bgt_Un |
Transfiere el control a una instrucción máquina de destino si el primer valor es mayor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Bgt_Un_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es mayor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Ble |
Transfiere el control a una instrucción máquina de destino si el primer valor es menor o igual que el segundo valor. |
Ble_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es menor o igual que el segundo valor. |
Ble_Un |
Transfiere el control a una instrucción máquina de destino si el primer valor es menor o igual que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Ble_Un_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es menor o igual que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Blt |
Transfiere el control a una instrucción máquina de destino si el primer valor es menor que el segundo valor. |
Blt_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es menor que el segundo valor. |
Blt_Un |
Transfiere el control a una instrucción máquina de destino si el primer valor es menor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Blt_Un_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si el primer valor es menor que el segundo valor, cuando se comparan valores enteros sin signo o valores flotantes desordenados. |
Bne_Un |
Transfiere el control a una instrucción máquina de destino cuando dos valores enteros sin signo o dos valores flotantes desordenados no son iguales. |
Bne_Un_S |
Transfiere el control a una instrucción máquina de destino (forma corta) cuando dos valores enteros sin signo o dos valores flotantes desordenados no son iguales. |
Box |
Convierte un tipo de valor en una referencia a objeto (tipo |
Br |
Transfiere el control incondicionalmente a una instrucción de destino. |
Br_S |
Transfiere el control incondicionalmente a una instrucción máquina de destino (forma corta). |
Break |
Indica a Common Language Infrastructure (CLI) que informe al depurador de que se ha recorrido un punto de interrupción. |
Brfalse |
Transfiere el control a una instrucción máquina de destino si |
Brfalse_S |
Transfiere el control a una instrucción máquina de destino si |
Brtrue |
Transfiere el control a una instrucción máquina de destino si |
Brtrue_S |
Transfiere el control a una instrucción máquina de destino (forma corta) si |
Call |
Llama al método indicado por el descriptor del método que se ha pasado. |
Calli |
Llama al método indicado en la pila de evaluación (como puntero a un punto de entrada) con los argumentos descritos mediante una convención de llamada. |
Callvirt |
Llama a un método enlazado tardíamente en un objeto e inserta el valor devuelto en la pila de evaluación. |
Castclass |
Intenta convertir un objeto pasado por referencia en la clase especificada. |
Ceq |
Compara dos valores. Si son iguales, el valor entero 1 |
Cgt |
Compara dos valores. Si el primer valor es mayor que el segundo, se inserta el valor entero 1 |
Cgt_Un |
Compara dos valores sin signo o desordenados. Si el primer valor es mayor que el segundo, se inserta el valor entero 1 |
Ckfinite |
Produce ArithmeticException si el valor no es un número finito. |
Clt |
Compara dos valores. Si el primer valor es menor que el segundo, se inserta el valor entero 1 |
Clt_Un |
Compara los valores sin signo o desordenados |
Constrained |
Restringe el tipo en el que se realiza una llamada a método virtual. |
Conv_I |
Convierte el valor situado en la parte superior de la pila de evaluación en |
Conv_I1 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_I2 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_I4 |
Convierte el valor situado en la parte superior de la pila de evaluación en |
Conv_I8 |
Convierte el valor situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I1 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en un |
Conv_Ovf_I1_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en un |
Conv_Ovf_I2 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en un |
Conv_Ovf_I2_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en un |
Conv_Ovf_I4 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I4_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I8 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_I8_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U1 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U1_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U2 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U2_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U4 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U4_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U8 |
Convierte el valor con signo situado en la parte superior de la pila de evaluación en |
Conv_Ovf_U8_Un |
Convierte el valor sin signo situado en la parte superior de la pila de evaluación en |
Conv_R_Un |
Convierte el valor entero sin signo situado en la parte superior de la pila de evaluación en |
Conv_R4 |
Convierte el valor situado en la parte superior de la pila de evaluación en |
Conv_R8 |
Convierte el valor situado en la parte superior de la pila de evaluación en |
Conv_U |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_U1 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_U2 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_U4 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Conv_U8 |
Convierte el valor que se encuentra en la parte superior de la pila de evaluación en |
Cpblk |
Copia un número de bytes especificado de una dirección de origen en una dirección de destino. |
Cpobj |
Copia el tipo de valor ubicado en la dirección de un objeto (tipo |
Div |
Divide dos valores e inserta el resultado como punto flotante (de tipo |
Div_Un |
Divide dos valores enteros sin signo e inserta el resultado ( |
Dup |
Copia el valor que se encuentra en la parte superior de la pila de evaluación e inserta la copia en la pila de evaluación. |
Endfilter |
Vuelve a transferir el control de la cláusula |
Endfinally |
Vuelve a transferir el control de la cláusula |
Initblk |
Inicializa un bloque de memoria especificado en una dirección específica con el tamaño y el valor inicial dados. |
Initobj |
Inicializa cada uno de los campos del tipo de valor en la dirección especificada en una referencia nula o en un valor 0 del tipo primitivo correspondiente. |
Isinst |
Comprueba si una referencia a objeto (de tipo |
Jmp |
Sale del método actual y salta al método especificado. |
Ldarg |
Carga un argumento (al que hace referencia un valor de índice especificado) en la pila. |
Ldarg_0 |
Carga el argumento que se encuentra en el índice 0 en la pila de evaluación. |
Ldarg_1 |
Carga el argumento que se encuentra en el índice 1 en la pila de evaluación. |
Ldarg_2 |
Carga el argumento que se encuentra en el índice 2 en la pila de evaluación. |
Ldarg_3 |
Carga el argumento que se encuentra en el índice 3 en la pila de evaluación. |
Ldarg_S |
Carga el argumento (al que hace referencia un índice de forma corta especificado) en la pila de evaluación. |
Ldarga |
Carga la dirección de un argumento en la pila de evaluación. |
Ldarga_S |
Carga la dirección de un argumento (forma corta) en la pila de evaluación. |
Ldc_I4 |
Inserta en la pila de evaluación un valor suministrado de tipo |
Ldc_I4_0 |
Inserta en la pila de evaluación el valor entero 0 como |
Ldc_I4_1 |
Inserta en la pila de evaluación el valor entero 1 como |
Ldc_I4_2 |
Inserta en la pila de evaluación el valor entero 2 como |
Ldc_I4_3 |
Inserta en la pila de evaluación el valor entero 3 como |
Ldc_I4_4 |
Inserta en la pila de evaluación el valor entero 4 como |
Ldc_I4_5 |
Inserta en la pila de evaluación el valor entero 5 como |
Ldc_I4_6 |
Inserta en la pila de evaluación el valor entero 6 como |
Ldc_I4_7 |
Inserta en la pila de evaluación el valor entero 7 como |
Ldc_I4_8 |
Inserta en la pila de evaluación el valor entero 8 como |
Ldc_I4_M1 |
Inserta en la pila de evaluación el valor entero -1 como |
Ldc_I4_S |
Inserta en la pila de evaluación el valor |
Ldc_I8 |
Inserta en la pila de evaluación un valor suministrado de tipo |
Ldc_R4 |
Inserta en la pila de evaluación un valor suministrado de tipo |
Ldc_R8 |
Inserta en la pila de evaluación un valor suministrado de tipo |
Ldelem |
Carga el elemento que se encuentra en una posición de índice de matriz especificada en la parte superior de la pila de evaluación como el tipo definido en la instrucción. |
Ldelem_I |
Carga el elemento de tipo |
Ldelem_I1 |
Carga el elemento de tipo |
Ldelem_I2 |
Carga el elemento de tipo |
Ldelem_I4 |
Carga el elemento de tipo |
Ldelem_I8 |
Carga el elemento de tipo |
Ldelem_R4 |
Carga el elemento de tipo |
Ldelem_R8 |
Carga el elemento de tipo |
Ldelem_Ref |
Carga el elemento que contiene una referencia a objeto en una posición de índice de matriz especificada en la parte superior de la pila de evaluación como tipo |
Ldelem_U1 |
Carga el elemento de tipo |
Ldelem_U2 |
Carga el elemento de tipo |
Ldelem_U4 |
Carga el elemento de tipo |
Ldelema |
Carga la dirección del elemento de la matriz que se encuentra en un índice de la matriz especificado en la parte superior de la pila de evaluación como tipo |
Ldfld |
Encuentra el valor de un campo en el objeto cuya referencia se encuentra actualmente en la pila de evaluación. |
Ldflda |
Busca la dirección de un campo en el objeto cuya referencia se encuentra actualmente en la pila de evaluación. |
Ldftn |
Inserta en la pila de evaluación un puntero no administrado (de tipo |
Ldind_I |
Carga indirectamente un valor de tipo |
Ldind_I1 |
Carga indirectamente un valor de tipo |
Ldind_I2 |
Carga indirectamente un valor de tipo |
Ldind_I4 |
Carga indirectamente un valor de tipo |
Ldind_I8 |
Carga indirectamente un valor de tipo |
Ldind_R4 |
Carga indirectamente un valor de tipo |
Ldind_R8 |
Carga indirectamente un valor de tipo |
Ldind_Ref |
Carga indirectamente una referencia a objeto como tipo |
Ldind_U1 |
Carga indirectamente un valor de tipo |
Ldind_U2 |
Carga indirectamente un valor de tipo |
Ldind_U4 |
Carga indirectamente un valor de tipo |
Ldlen |
Inserta en la pila de evaluación el número de elementos de una matriz unidimensional de base cero. |
Ldloc |
Carga en la pila de evaluación la variable local que se encuentra en un índice específico. |
Ldloc_0 |
Carga en la pila de evaluación la variable local que se encuentra en el índice 0. |
Ldloc_1 |
Carga en la pila de evaluación la variable local que se encuentra en el índice 1. |
Ldloc_2 |
Carga en la pila de evaluación la variable local que se encuentra en el índice 2. |
Ldloc_3 |
Carga en la pila de evaluación la variable local que se encuentra en el índice 3. |
Ldloc_S |
Carga en la pila de evaluación la variable local que se encuentra en un índice específico (forma corta). |
Ldloca |
Carga en la pila de evaluación la dirección de la variable local que se encuentra en un índice específico. |
Ldloca_S |
Carga en la pila de evaluación la dirección de la variable local que se encuentra en un índice específico (forma corta). |
Ldnull |
Inserta en la pila de evaluación una referencia nula (de tipo |
Ldobj |
Copia en la parte superior de la pila de evaluación el objeto de tipo de valor al que señala una dirección. |
Ldsfld |
Inserta en la pila de evaluación el valor de un campo estático. |
Ldsflda |
Inserta en la pila de evaluación la dirección de un campo estático. |
Ldstr |
Inserta una nueva referencia de objeto a un literal de cadena almacenado en los metadatos. |
Ldtoken |
Convierte un símbolo (token) de metadatos en su representación en tiempo de ejecución y lo inserta en la pila de evaluación. |
Ldvirtftn |
Inserta en la pila de evaluación un puntero no administrado (de tipo |
Leave |
Sale de una región de código protegida y transfiere el control incondicionalmente a una instrucción máquina de destino específica. |
Leave_S |
Sale de una región de código protegida y transfiere el control incondicionalmente a una instrucción máquina de destino (forma corta). |
Localloc |
Asigna un número determinado de bytes del bloque de memoria dinámica local e inserta la dirección (un puntero transitorio de tipo |
Mkrefany |
Inserta en la pila de evaluación una referencia con tipo a una instancia de un tipo específico. |
Mul |
Multiplica dos valores e inserta el resultado en la pila de evaluación. |
Mul_Ovf |
Multiplica dos valores enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
Mul_Ovf_Un |
Multiplica dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
Neg |
Convierte un valor en negativo e inserta el resultado en la pila de evaluación. |
Newarr |
Inserta en la pila de evaluación una referencia de objeto a una nueva matriz unidimensional de base cero cuyos elementos son de un tipo específico. |
Newobj |
Crea un nuevo objeto o una nueva instancia de un tipo de valor e inserta en la pila de evaluación una referencia a objeto (de tipo |
Nop |
Rellena el espacio si los códigos de operación se han modificado. No se realiza ninguna operación significativa, aunque puede consumirse un ciclo de procesamiento. |
Not |
Calcula el complemento bit a bit del valor entero que se encuentra en la parte superior de la pila e inserta el resultado, del mismo tipo, en la pila de evaluación. |
Or |
Calcula el complemento bit a bit de los dos valores enteros situados en la parte superior de la pila e inserta el resultado en la pila de evaluación. |
Pop |
Quita el valor situado en la parte superior de la pila de evaluación. |
Prefix1 |
Esta es una instrucción reservada. |
Prefix2 |
Esta es una instrucción reservada. |
Prefix3 |
Esta es una instrucción reservada. |
Prefix4 |
Esta es una instrucción reservada. |
Prefix5 |
Esta es una instrucción reservada. |
Prefix6 |
Esta es una instrucción reservada. |
Prefix7 |
Esta es una instrucción reservada. |
Prefixref |
Esta es una instrucción reservada. |
Readonly |
Especifica que la operación de dirección de matriz subsiguiente no realiza ninguna comprobación de tipo en tiempo de ejecución y devuelve un puntero administrado cuya mutabilidad está restringida. |
Refanytype |
Recupera el símbolo (token) de tipo incrustado en una referencia con tipo. |
Refanyval |
Recupera la dirección (de tipo |
Rem |
Divide dos valores e inserta el resultado en la pila de evaluación. |
Rem_Un |
Divide dos valores sin signo e inserta el resultado en la pila de evaluación. |
Ret |
Regresa del método actual e inserta un valor devuelto (si existe) desde la pila de evaluación del destinatario de la llamada en la pila de evaluación del llamador. |
Rethrow |
Vuelve a producir la excepción actual. |
Shl |
Desplaza un valor entero a la izquierda (en ceros) el número de bits especificado e inserta el resultado en la pila de evaluación. |
Shr |
Desplaza un valor entero (en signo) a la derecha el número de bits especificado e inserta el resultado en la pila de evaluación. |
Shr_Un |
Desplaza un valor entero sin signo (en ceros) a la derecha el número de bits especificado e inserta el resultado en la pila de evaluación. |
Sizeof |
Inserta en la pila de evaluación el tamaño, en bytes, de un tipo de valor suministrado. |
Starg |
Almacena el valor que se encuentra en la parte superior de la pila de evaluación en la ranura de argumento de una posición de índice especificada. |
Starg_S |
Almacena el valor que se encuentra en la parte superior de la pila de evaluación en la ranura de argumento de una posición de índice especificada (forma corta). |
Stelem |
Reemplaza el elemento de matriz que se encuentra en una posición de índice dada por el valor de la pila de evaluación cuyo tipo se especifica en la instrucción. |
Stelem_I |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_I1 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_I2 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_I4 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_I8 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_R4 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_R8 |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor |
Stelem_Ref |
Sustituye el elemento de la matriz que se encuentra en una posición de índice determinada por el valor de referencia a objeto (de tipo |
Stfld |
Sustituye por un valor nuevo el valor almacenado en el campo de una referencia a objeto o puntero. |
Stind_I |
Almacena un valor de tipo |
Stind_I1 |
Almacena un valor de tipo |
Stind_I2 |
Almacena un valor de tipo |
Stind_I4 |
Almacena un valor de tipo |
Stind_I8 |
Almacena un valor de tipo |
Stind_R4 |
Almacena un valor de tipo |
Stind_R8 |
Almacena un valor de tipo |
Stind_Ref |
Almacena un valor de referencia a objeto en una dirección suministrada. |
Stloc |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en un índice especificado. |
Stloc_0 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 0. |
Stloc_1 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 1. |
Stloc_2 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 2. |
Stloc_3 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 3. |
Stloc_S |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en |
Stobj |
Copia un valor del tipo especificado de la pila de evaluación y lo coloca en una dirección de memoria suministrada. |
Stsfld |
Sustituye el valor de un campo estático por un valor de la pila de evaluación. |
Sub |
Resta un valor de otro e inserta el resultado en la pila de evaluación. |
Sub_Ovf |
Resta un valor entero de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
Sub_Ovf_Un |
Resta un valor entero sin signo de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
Switch |
Implementa una tabla de saltos. |
Tailcall |
Ejecuta una instrucción máquina de llamada a método postfija de tal modo que el marco de pila del método actual se quita antes de que se ejecute la verdadera instrucción máquina de llamada. |
Throw |
Produce el objeto de excepción que se encuentra actualmente en la pila de evaluación. |
Unaligned |
Indica que una dirección que se encuentra actualmente en la parte superior de la pila de evaluación puede no estar alineada con el tamaño natural de la instrucción máquina |
Unbox |
Convierte la representación de un tipo de valor al que se le ha aplicado la conversión boxing en la forma que tendría al aplicarle la conversión unboxing. |
Unbox_Any |
Convierte la representación a la que se aplica la conversión boxing de un tipo especificada en la instrucción a su forma de conversión unboxing. |
Volatile |
Especifica que una dirección que se encuentra actualmente en la parte superior de la pila de evaluación puede ser volátil y los resultados de leer esa ubicación no se pueden almacenar en la caché o no se pueden suprimir múltiples almacenamientos en esa ubicación. |
Xor |
Calcula la operación XOR bit a bit de los dos valores superiores de la pila de evaluación e inserta el resultado en la pila. |
Métodos
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
TakesSingleByteArgument(OpCode) |
Devuelve true o false si el código de operación suministrado utiliza un argumento de un solo byte. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |