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 de lenguaje intermedio (MSIL) de Microsoft para la emisión por parte de los miembros de clase /> de
public ref class OpCodes
public class OpCodes
[System.Runtime.InteropServices.ComVisible(true)]
public class OpCodes
type OpCodes = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type OpCodes = class
Public Class OpCodes
- Herencia
-
OpCodes
- Atributos
Ejemplos
En el ejemplo siguiente se muestra la construcción de un método dinámico mediante ILGenerator para emitir OpCodes en .MethodBuilder
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
class EmitWriteLineDemo {
public static Type CreateDynamicType() {
Type[] ctorParams = new Type[] {typeof(int),
typeof(int)};
AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly";
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
"Point.dll");
TypeBuilder pointTypeBld = pointModule.DefineType("Point",
TypeAttributes.Public);
FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
FieldAttributes.Public);
FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
FieldAttributes.Public);
Type objType = Type.GetType("System.Object");
ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);
ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
MethodAttributes.Public,
CallingConventions.Standard,
ctorParams);
ILGenerator ctorIL = pointCtor.GetILGenerator();
// First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Call, objCtor);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Stfld, xField);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_2);
ctorIL.Emit(OpCodes.Stfld, yField);
ctorIL.Emit(OpCodes.Ret);
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
"WritePoint",
MethodAttributes.Public,
typeof(void),
null);
ILGenerator writeStrIL = writeStrMthd.GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// string output through STDIN.
// ILGenerator.EmitWriteLine(string) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:");
// Here, you will do the hard work yourself. First, you need to create
// the string we will be passing and obtain the correct WriteLine overload
// for said string. In the below case, you are substituting in two values,
// so the chosen overload is Console.WriteLine(string, object, object).
String inStr = "({0}, {1})";
Type[] wlParams = new Type[] {typeof(string),
typeof(object),
typeof(object)};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo writeLineMI = typeof(Console).GetMethod(
"WriteLine",
wlParams);
// Push the string with the substitutions onto the stack.
// This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr);
// Since the second argument is an object, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an object. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, xField);
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Atop the stack, you'll find our string inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, yField);
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Now, you have all of the arguments for your call to
// Console.WriteLine(string, object, object) atop the stack:
// the string InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:");
writeStrIL.EmitWriteLine(xField);
writeStrIL.EmitWriteLine("The value of 'y' is:");
writeStrIL.EmitWriteLine(yField);
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL.Emit(OpCodes.Ret);
return pointTypeBld.CreateType();
}
public static void Main() {
object[] ctorParams = new object[2];
Console.Write("Enter a integer value for X: ");
string myX = Console.ReadLine();
Console.Write("Enter a integer value for Y: ");
string myY = Console.ReadLine();
Console.WriteLine("---");
ctorParams[0] = Convert.ToInt32(myX);
ctorParams[1] = Convert.ToInt32(myY);
Type ptType = CreateDynamicType();
object ptInstance = Activator.CreateInstance(ptType, ctorParams);
ptType.InvokeMember("WritePoint",
BindingFlags.InvokeMethod,
null,
ptInstance,
new object[0]);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class EmitWriteLineDemo
Public Shared Function CreateDynamicType() As Type
Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
TypeAttributes.Public)
Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
GetType(Integer), _
FieldAttributes.Public)
Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
GetType(Integer), _
FieldAttributes.Public)
Dim objType As Type = Type.GetType("System.Object")
Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
MethodAttributes.Public, _
CallingConventions.Standard, _
ctorParams)
Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
' First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Call, objCtor)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_1)
ctorIL.Emit(OpCodes.Stfld, xField)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_2)
ctorIL.Emit(OpCodes.Stfld, yField)
ctorIL.Emit(OpCodes.Ret)
' Now, you'll build a method to output some information on the
' inside your dynamic class. This method will have the following
' definition in C#:
' Public Sub WritePoint()
Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
MethodAttributes.Public, _
Nothing, Nothing)
Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
' The below ILGenerator created demonstrates a few ways to create
' string output through STDIN.
' ILGenerator.EmitWriteLine(string) will generate a ldstr and a
' call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:")
' Here, you will do the hard work yourself. First, you need to create
' the string we will be passing and obtain the correct WriteLine overload
' for said string. In the below case, you are substituting in two values,
' so the chosen overload is Console.WriteLine(string, object, object).
Dim inStr As [String] = "({0}, {1})"
Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
' We need the MethodInfo to pass into EmitCall later.
Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
' Push the string with the substitutions onto the stack.
' This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr)
' Since the second argument is an object, and it corresponds to
' to the substitution for the value of our integer field, you
' need to box that field to an object. First, push a reference
' to the current instance, and then push the value stored in
' field 'x'. We need the reference to the current instance (stored
' in local argument index 0) so Ldfld can load from the correct
' instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, xField)
' Now, we execute the box opcode, which pops the value of field 'x',
' returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Atop the stack, you'll find our string inStr, followed by a reference
' to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, yField)
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Now, you have all of the arguments for your call to
' Console.WriteLine(string, object, object) atop the stack:
' the string InStr, a reference to the boxed value of 'x', and
' a reference to the boxed value of 'y'.
' Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
' Lastly, EmitWriteLine can also output the value of a field
' using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:")
writeStrIL.EmitWriteLine(xField)
writeStrIL.EmitWriteLine("The value of 'y' is:")
writeStrIL.EmitWriteLine(yField)
' Since we return no value (void), the ret opcode will not
' return the top stack value.
writeStrIL.Emit(OpCodes.Ret)
Return pointTypeBld.CreateType()
End Function 'CreateDynamicType
Public Shared Sub Main()
Dim ctorParams(1) As Object
Console.Write("Enter a integer value for X: ")
Dim myX As String = Console.ReadLine()
Console.Write("Enter a integer value for Y: ")
Dim myY As String = Console.ReadLine()
Console.WriteLine("---")
ctorParams(0) = Convert.ToInt32(myX)
ctorParams(1) = Convert.ToInt32(myY)
Dim ptType As Type = CreateDynamicType()
Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)
ptType.InvokeMember("WritePoint", _
BindingFlags.InvokeMethod, _
Nothing, ptInstance, Nothing)
End Sub
End Class
Comentarios
Para obtener una descripción detallada de los códigos de operación de miembro, consulte la documentación de Common Language Infrastructure (CLI), especialmente "Partition III: CIL Instruction Set" y "Partition II: Metadata Definition and Semantics". Para obtener más información, consulte ECMA 335 Common Language Infrastructure (CLI).
Campos
| Nombre | Description |
|---|---|
| Add |
Agrega dos valores e inserta el resultado en la pila de evaluación. |
| Add_Ovf |
Agrega dos enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| Add_Ovf_Un |
Agrega dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| And |
Calcula el AND bit a bit de dos valores e inserta el resultado en la pila de evaluación. |
| Arglist |
Devuelve un puntero no administrado a la lista de argumentos del método actual. |
| Beq |
Transfiere el control a una instrucción de destino si dos valores son iguales. |
| Beq_S |
Transfiere el control a una instrucción de destino (forma abreviada) si dos valores son iguales. |
| Bge |
Transfiere el control a una instrucción de destino si el primer valor es mayor o igual que el segundo valor. |
| Bge_S |
Transfiere el control a una instrucción de destino (formato corto) si el primer valor es mayor o igual que el segundo valor. |
| Bge_Un |
Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados. |
| Bge_Un_S |
Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float desordenados. |
| Bgt |
Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor. |
| Bgt_S |
Transfiere el control a una instrucción de destino (formato corto) si el primer valor es mayor que el segundo. |
| Bgt_Un |
Transfiere el control a una instrucción de destino si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados. |
| Bgt_Un_S |
Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es mayor que el segundo valor, al comparar valores enteros sin signo o valores float desordenados. |
| Ble |
Transfiere el control a una instrucción de destino si el primer valor es menor o igual que el segundo. |
| Ble_S |
Transfiere el control a una instrucción de destino (formato corto) si el primer valor es menor o igual que el segundo. |
| Ble_Un |
Transfiere el control a una instrucción de destino si el primer valor es menor o igual que el segundo valor, al comparar valores enteros sin signo o valores flotantes no ordenados. |
| Ble_Un_S |
Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es menor o igual que el segundo valor, al comparar valores enteros sin signo o valores float no ordenados. |
| Blt |
Transfiere el control a una instrucción de destino si el primer valor es menor que el segundo valor. |
| Blt_S |
Transfiere el control a una instrucción de destino (formato corto) si el primer valor es menor que el segundo. |
| Blt_Un |
Transfiere el control a una instrucción de destino si el primer valor es menor que el segundo valor, al comparar valores enteros sin signo o valores flotantes no ordenados. |
| Blt_Un_S |
Transfiere el control a una instrucción de destino (forma abreviada) si el primer valor es menor que el segundo, al comparar valores enteros sin signo o valores float no ordenados. |
| Bne_Un |
Transfiere el control a una instrucción de destino cuando dos valores enteros sin signo o valores float no ordenados no son iguales. |
| Bne_Un_S |
Transfiere el control a una instrucción de destino (formato corto) cuando dos valores enteros sin signo o valores flotantes no ordenados no son iguales. |
| Box |
Convierte un tipo de valor en una referencia de objeto (tipo |
| Br |
Transfiere incondicionalmente el control a una instrucción de destino. |
| Br_S |
Transfiere incondicionalmente el control a una instrucción de destino (forma abreviada). |
| Break |
Indica a Common Language Infrastructure (CLI) que informe al depurador de que se ha recorrido un punto de interrupción. |
| Brfalse |
Transfiere el control a una instrucción de destino si |
| Brfalse_S |
Transfiere el control a una instrucción de destino si |
| Brtrue |
Transfiere el control a una instrucción de destino si |
| Brtrue_S |
Transfiere el control a una instrucción de destino (formato corto) si |
| Call |
Llama al método indicado por el descriptor de método pasado. |
| Calli |
Llama al método indicado en la pila de evaluación (como puntero a un punto de entrada) con argumentos descritos por una convención de llamada. |
| Callvirt |
Llama a un método enlazado en tiempo de ejecución en un objeto, insertando el valor devuelto en la pila de evaluación. |
| Castclass |
Intenta convertir un objeto pasado por referencia a la clase especificada. |
| Ceq |
Compara dos valores. Si son iguales, el valor entero 1 |
| Cgt |
Compara dos valores. Si el primer valor es mayor que el segundo, el valor entero 1 |
| Cgt_Un |
Compara dos valores sin signo o sin ordenar. Si el primer valor es mayor que el segundo, el valor entero 1 |
| Ckfinite |
ArithmeticException Produce si el valor no es un número finito. |
| Clt |
Compara dos valores. Si el primer valor es menor que el segundo, el valor entero 1 |
| Clt_Un |
Compara los valores |
| Constrained |
Restringe el tipo en el que se realiza una llamada de método virtual. |
| Conv_I |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_I1 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_I2 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_I4 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_I8 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_Ovf_I |
Convierte el valor con signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I1 |
Convierte el valor con signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I1_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I2 |
Convierte el valor con signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I2_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I4 |
Convierte el valor con signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I4_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I8 |
Convierte el valor con signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_I8_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en firmado |
| Conv_Ovf_U |
Convierte el valor con signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U1 |
Convierte el valor con signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U1_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U2 |
Convierte el valor con signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U2_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U4 |
Convierte el valor con signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U4_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U8 |
Convierte el valor con signo en la parte superior de la pila de evaluación en |
| Conv_Ovf_U8_Un |
Convierte el valor sin signo en la parte superior de la pila de evaluación en |
| Conv_R_Un |
Convierte el valor entero sin signo en la parte superior de la pila de evaluación en |
| Conv_R4 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_R8 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_U |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_U1 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_U2 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_U4 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Conv_U8 |
Convierte el valor en la parte superior de la pila de evaluación en |
| Cpblk |
Copia un número especificado bytes de una dirección de origen en una dirección de destino. |
| Cpobj |
Copia el tipo de valor ubicado en la dirección de un objeto (tipo |
| Div |
Divide dos valores e inserta el resultado como un punto flotante (tipo |
| Div_Un |
Divide dos valores enteros sin signo e inserta el resultado ( |
| Dup |
Copia el valor superior actual en la pila de evaluación y, a continuación, inserta la copia en la pila de evaluación. |
| Endfilter |
Transfiere el control de la |
| Endfinally |
Transfiere el control de la |
| Initblk |
Inicializa un bloque de memoria especificado en una dirección específica para un tamaño determinado y un valor inicial. |
| Initobj |
Inicializa cada campo del tipo de valor en una dirección especificada a una referencia nula o a 0 del tipo primitivo adecuado. |
| Isinst |
Comprueba si una referencia de objeto (tipo |
| Jmp |
Sale del método actual y salta al método especificado. |
| Ldarg |
Carga un argumento (al que hace referencia un valor de índice especificado) en la pila. |
| Ldarg_0 |
Carga el argumento en el índice 0 en la pila de evaluación. |
| Ldarg_1 |
Carga el argumento en el índice 1 en la pila de evaluación. |
| Ldarg_2 |
Carga el argumento en el índice 2 en la pila de evaluación. |
| Ldarg_3 |
Carga el argumento en el índice 3 en la pila de evaluación. |
| Ldarg_S |
Carga el argumento (al que hace referencia un índice de formulario corto especificado) en la pila de evaluación. |
| Ldarga |
Cargue una dirección de argumento en la pila de evaluación. |
| Ldarga_S |
Cargue una dirección de argumento, en forma abreviada, en la pila de evaluación. |
| Ldc_I4 |
Inserta un valor proporcionado de tipo |
| Ldc_I4_0 |
Inserta el valor entero de 0 en la pila de evaluación como . |
| Ldc_I4_1 |
Inserta el valor entero de 1 en la pila de evaluación como . |
| Ldc_I4_2 |
Inserta el valor entero de 2 en la pila de evaluación como . |
| Ldc_I4_3 |
Inserta el valor entero de 3 en la pila de evaluación como . |
| Ldc_I4_4 |
Inserta el valor entero de 4 en la pila de evaluación como . |
| Ldc_I4_5 |
Inserta el valor entero de 5 en la pila de evaluación como . |
| Ldc_I4_6 |
Inserta el valor entero de 6 en la pila de evaluación como . |
| Ldc_I4_7 |
Inserta el valor entero de 7 en la pila de evaluación como . |
| Ldc_I4_8 |
Inserta el valor entero de 8 en la pila de evaluación como . |
| Ldc_I4_M1 |
Inserta el valor entero de -1 en la pila de evaluación como . |
| Ldc_I4_S |
Inserta el valor proporcionado |
| Ldc_I8 |
Inserta un valor proporcionado de tipo |
| Ldc_R4 |
Inserta un valor proporcionado de tipo |
| Ldc_R8 |
Inserta un valor proporcionado de tipo |
| Ldelem |
Carga el elemento en un índice de matriz especificado en la parte superior de la pila de evaluación como el tipo especificado en la instrucción . |
| Ldelem_I |
Carga el elemento con el tipo |
| Ldelem_I1 |
Carga el elemento con el tipo |
| Ldelem_I2 |
Carga el elemento con el tipo |
| Ldelem_I4 |
Carga el elemento con el tipo |
| Ldelem_I8 |
Carga el elemento con el tipo |
| Ldelem_R4 |
Carga el elemento con el tipo |
| Ldelem_R8 |
Carga el elemento con el tipo |
| Ldelem_Ref |
Carga el elemento que contiene una referencia de objeto en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo |
| Ldelem_U1 |
Carga el elemento con el tipo |
| Ldelem_U2 |
Carga el elemento con el tipo |
| Ldelem_U4 |
Carga el elemento con el tipo |
| Ldelema |
Carga la dirección del elemento de matriz en un índice de matriz especificado en la parte superior de la pila de evaluación como tipo |
| Ldfld |
Busca el valor de un campo en el objeto cuya referencia está actualmente en la pila de evaluación. |
| Ldflda |
Busca la dirección de un campo en el objeto cuya referencia está actualmente en la pila de evaluación. |
| Ldftn |
Inserta un puntero no administrado (tipo |
| Ldind_I |
Carga un valor de tipo |
| Ldind_I1 |
Carga un valor de tipo |
| Ldind_I2 |
Carga un valor de tipo |
| Ldind_I4 |
Carga un valor de tipo |
| Ldind_I8 |
Carga un valor de tipo |
| Ldind_R4 |
Carga un valor de tipo |
| Ldind_R8 |
Carga un valor de tipo |
| Ldind_Ref |
Carga una referencia de objeto como un tipo |
| Ldind_U1 |
Carga un valor de tipo |
| Ldind_U2 |
Carga un valor de tipo |
| Ldind_U4 |
Carga un valor de tipo |
| Ldlen |
Inserta el número de elementos de una matriz unidimensional basada en cero en la pila de evaluación. |
| Ldloc |
Carga la variable local en un índice específico en la pila de evaluación. |
| Ldloc_0 |
Carga la variable local en el índice 0 en la pila de evaluación. |
| Ldloc_1 |
Carga la variable local en el índice 1 en la pila de evaluación. |
| Ldloc_2 |
Carga la variable local en el índice 2 en la pila de evaluación. |
| Ldloc_3 |
Carga la variable local en el índice 3 en la pila de evaluación. |
| Ldloc_S |
Carga la variable local en un índice específico en la pila de evaluación, forma abreviada. |
| Ldloca |
Carga la dirección de la variable local en un índice específico en la pila de evaluación. |
| Ldloca_S |
Carga la dirección de la variable local en un índice específico en la pila de evaluación, forma abreviada. |
| Ldnull |
Inserta una referencia nula (tipo |
| Ldobj |
Copia el objeto de tipo de valor al que apunta una dirección en la parte superior de la pila de evaluación. |
| Ldsfld |
Inserta el valor de un campo estático en la pila de evaluación. |
| Ldsflda |
Inserta la dirección de un campo estático en la pila de evaluación. |
| Ldstr |
Inserta una nueva referencia de objeto a un literal de cadena almacenado en los metadatos. |
| Ldtoken |
Convierte un token de metadatos en su representación en tiempo de ejecución, lo inserta en la pila de evaluación. |
| Ldvirtftn |
Inserta un puntero no administrado (tipo |
| Leave |
Sale de una región protegida de código, transfiriendo incondicionalmente el control a una instrucción de destino específica. |
| Leave_S |
Sale de una región protegida del código, transfiriendo incondicionalmente el control a una instrucción de destino (formulario corto). |
| Localloc |
Asigna un determinado número de bytes del grupo de memoria dinámica local e inserta la dirección (un puntero transitorio, tipo |
| Mkrefany |
Inserta una referencia con tipo a una instancia de un tipo específico en la pila de evaluación. |
| Mul |
Multiplica dos valores e inserta el resultado en la pila de evaluación. |
| Mul_Ovf |
Multiplica dos valores enteros, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| Mul_Ovf_Un |
Multiplica dos valores enteros sin signo, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| Neg |
Niega un valor e inserta el resultado en la pila de evaluación. |
| Newarr |
Inserta una referencia de objeto a una nueva matriz unidimensional basada en cero cuyos elementos son de un tipo específico en la pila de evaluación. |
| Newobj |
Crea un nuevo objeto o una nueva instancia de un tipo de valor, insertando una referencia de objeto (tipo |
| Nop |
Rellena el espacio si se revisan los códigos de operación. No se realiza ninguna operación significativa aunque se puede consumir un ciclo de procesamiento. |
| Not |
Calcula el complemento bit a bit del valor entero en la parte superior de la pila e inserta el resultado en la pila de evaluación como el mismo tipo. |
| Or |
Calcule el complemento bit a bit de los dos valores enteros en la parte superior de la pila e inserta el resultado en la pila de evaluación. |
| Pop |
Quita el valor que se encuentra actualmente encima de la pila de evaluación. |
| Prefix1 |
Se trata de una instrucción reservada. |
| Prefix2 |
Se trata de una instrucción reservada. |
| Prefix3 |
Se trata de una instrucción reservada. |
| Prefix4 |
Se trata de una instrucción reservada. |
| Prefix5 |
Se trata de una instrucción reservada. |
| Prefix6 |
Se trata de una instrucción reservada. |
| Prefix7 |
Se trata de una instrucción reservada. |
| Prefixref |
Se trata de una instrucción reservada. |
| Readonly |
Especifica que la operación de dirección de matriz posterior no realiza ninguna comprobación de tipos en tiempo de ejecución y que devuelve un puntero administrado cuya mubilidad está restringida. |
| Refanytype |
Recupera el token de tipo incrustado en una referencia con tipo. |
| Refanyval |
Recupera la dirección (tipo |
| Rem |
Divide dos valores e inserta el resto en la pila de evaluación. |
| Rem_Un |
Divide dos valores sin signo e inserta el resto en la pila de evaluación. |
| Ret |
Devuelve del método actual, insertando un valor devuelto (si está presente) desde la pila de evaluación del destinatario en la pila de evaluación del autor de la llamada. |
| Rethrow |
Vuelve a generar la excepción actual. |
| Shl |
Desplaza un valor entero a la izquierda (en ceros) por un número especificado de bits, insertando el resultado en la pila de evaluación. |
| Shr |
Desplaza un valor entero (en signo) a la derecha por un número especificado de bits, insertando el resultado en la pila de evaluación. |
| Shr_Un |
Desplaza un valor entero sin signo (en ceros) a la derecha por un número especificado de bits, insertando el resultado en la pila de evaluación. |
| Sizeof |
Inserta el tamaño, en bytes, de un tipo de valor proporcionado en la pila de evaluación. |
| Starg |
Almacena el valor en la parte superior de la pila de evaluación en la ranura de argumentos en un índice especificado. |
| Starg_S |
Almacena el valor en la parte superior de la pila de evaluación en el espacio de argumentos en un índice especificado, forma abreviada. |
| Stelem |
Reemplaza el elemento de matriz en un índice determinado por el valor de la pila de evaluación, cuyo tipo se especifica en la instrucción . |
| Stelem_I |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_I1 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_I2 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_I4 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_I8 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_R4 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_R8 |
Reemplaza el elemento de matriz en un índice determinado por el |
| Stelem_Ref |
Reemplaza el elemento de matriz en un índice determinado por el valor ref del objeto (tipo |
| Stfld |
Reemplaza el valor almacenado en el campo de una referencia o puntero de objeto por un nuevo valor. |
| Stind_I |
Almacena un valor de tipo |
| 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 de objeto en una dirección proporcionada. |
| Stloc |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en un índice especificado. |
| Stloc_0 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 0. |
| Stloc_1 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 1. |
| Stloc_2 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 2. |
| Stloc_3 |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en el índice 3. |
| Stloc_S |
Extrae el valor actual de la parte superior de la pila de evaluación y lo almacena en la lista de variables locales en |
| Stobj |
Copia un valor de un tipo especificado de la pila de evaluación en una dirección de memoria proporcionada. |
| Stsfld |
Reemplaza el valor de un campo estático por un valor de la pila de evaluación. |
| Sub |
Resta un valor de otro e inserta el resultado en la pila de evaluación. |
| Sub_Ovf |
Resta un valor entero de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| Sub_Ovf_Un |
Resta un valor entero sin signo de otro, realiza una comprobación de desbordamiento e inserta el resultado en la pila de evaluación. |
| Switch |
Implementa una tabla de saltos. |
| Tailcall |
Realiza una instrucción de llamada de método postfijo de modo que el marco de pila del método actual se quita antes de que se ejecute la instrucción de llamada real. |
| Throw |
Produce el objeto de excepción actualmente en la pila de evaluación. |
| Unaligned |
Indica que una dirección que se encuentra en la parte de arriba de la pila de evaluación podría no alinearse con el tamaño natural de las instrucciones , |
| Unbox |
Convierte la representación boxing de un tipo de valor en su formulario sin conversión boxing. |
| Unbox_Any |
Convierte la representación boxing de un tipo especificado en la instrucción en su formulario sin conversión boxing. |
| Volatile |
Especifica que una dirección que se encuentra actualmente encima de la pila de evaluación podría ser volátil y los resultados de leer esa ubicación no se pueden almacenar en caché o que no se pueden suprimir varios almacenes en esa ubicación. |
| Xor |
Calcula el XOR bit a bit de los dos valores principales de la pila de evaluación, insertando el resultado en la pila de evaluación. |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como la función hash predeterminada. (Heredado de Object) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| TakesSingleByteArgument(OpCode) |
Devuelve true o false si el código de operación proporcionado toma un único argumento de byte. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |