OpCodes Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce rappresentazioni di campo delle istruzioni MSIL (Microsoft Intermediate Language) per l'emissione da parte dei membri della classe ILGenerator (ad esempio 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
- Ereditarietà
-
OpCodes
- Attributi
Esempio
Nell'esempio seguente viene illustrata la costruzione di un metodo dinamico usando ILGenerator per generare OpCodes in un oggetto 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
Commenti
Per una descrizione dettagliata dei codici operativo dei membri, vedere la documentazione di Common Language Infrastructure (CLI), in particolare "Partition III: CIL Instruction Set" e "Partition II: Metadata Definition and Semantics". Per altre informazioni, vedere ECMA 335 Common Language Infrastructure (CLI).For more information, see ECMA 335 Common Language Infrastructure (CLI).
Campi
| Nome | Descrizione |
|---|---|
| Add |
Aggiunge due valori e inserisce il risultato nello stack di valutazione. |
| Add_Ovf |
Aggiunge due numeri interi, esegue un controllo di overflow e inserisce il risultato nello stack di valutazione. |
| Add_Ovf_Un |
Aggiunge due valori interi senza segno, esegue un controllo di overflow e inserisce il risultato nello stack di valutazione. |
| And |
Calcola l'AND bit per bit di due valori e inserisce il risultato nello stack di valutazione. |
| Arglist |
Restituisce un puntatore non gestito all'elenco di argomenti del metodo corrente. |
| Beq |
Trasferisce il controllo a un'istruzione di destinazione se due valori sono uguali. |
| Beq_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se due valori sono uguali. |
| Bge |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è maggiore o uguale al secondo valore. |
| Bge_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è maggiore o uguale al secondo valore. |
| Bge_Un |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è maggiore del secondo valore, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Bge_Un_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è maggiore del secondo, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Bgt |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è maggiore del secondo valore. |
| Bgt_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è maggiore del secondo valore. |
| Bgt_Un |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è maggiore del secondo valore, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Bgt_Un_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è maggiore del secondo, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Ble |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è minore o uguale al secondo valore. |
| Ble_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è minore o uguale al secondo valore. |
| Ble_Un |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è minore o uguale al secondo valore, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Ble_Un_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è minore o uguale al secondo valore, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Blt |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è minore del secondo valore. |
| Blt_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è minore del secondo valore. |
| Blt_Un |
Trasferisce il controllo a un'istruzione di destinazione se il primo valore è minore del secondo valore, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Blt_Un_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se il primo valore è minore del secondo, quando si confrontano valori integer senza segno o valori float non ordinati. |
| Bne_Un |
Trasferisce il controllo a un'istruzione di destinazione quando due valori integer senza segno o valori float non ordinati non sono uguali. |
| Bne_Un_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) quando due valori integer senza segno o valori float non ordinati non sono uguali. |
| Box |
Converte un tipo valore in un riferimento a un oggetto (tipo |
| Br |
Trasferisce in modo incondizionato il controllo a un'istruzione di destinazione. |
| Br_S |
Trasferisce in modo incondizionato il controllo a un'istruzione di destinazione (forma breve). |
| Break |
Segnala a Common Language Infrastructure (CLI) di informare il debugger che è stato ritagliato un punto di interruzione. |
| Brfalse |
Trasferisce il controllo a un'istruzione di destinazione se |
| Brfalse_S |
Trasferisce il controllo a un'istruzione di destinazione se |
| Brtrue |
Trasferisce il controllo a un'istruzione di destinazione se |
| Brtrue_S |
Trasferisce il controllo a un'istruzione di destinazione (forma breve) se |
| Call |
Chiama il metodo indicato dal descrittore del metodo passato. |
| Calli |
Chiama il metodo indicato nello stack di valutazione (come puntatore a un punto di ingresso) con argomenti descritti da una convenzione di chiamata. |
| Callvirt |
Chiama un metodo ad associazione tardiva su un oggetto, spingendo il valore restituito nello stack di valutazione. |
| Castclass |
Tenta di eseguire il cast di un oggetto passato per riferimento alla classe specificata. |
| Ceq |
Confronta due valori. Se sono uguali, il valore intero 1 |
| Cgt |
Confronta due valori. Se il primo valore è maggiore del secondo, il valore intero 1 |
| Cgt_Un |
Confronta due valori senza segno o non ordinati. Se il primo valore è maggiore del secondo, il valore intero 1 |
| Ckfinite |
Genera un'eccezione ArithmeticException se il valore non è un numero finito. |
| Clt |
Confronta due valori. Se il primo valore è minore del secondo, il valore intero 1 |
| Clt_Un |
Confronta i valori |
| Constrained |
Vincola il tipo su cui viene effettuata una chiamata al metodo virtuale. |
| Conv_I |
Converte il valore sopra lo stack di valutazione in |
| Conv_I1 |
Converte il valore sopra lo stack di valutazione in |
| Conv_I2 |
Converte il valore sopra lo stack di valutazione in |
| Conv_I4 |
Converte il valore sopra lo stack di valutazione in |
| Conv_I8 |
Converte il valore sopra lo stack di valutazione in |
| Conv_Ovf_I |
Converte il valore con segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I_Un |
Converte il valore senza segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I1 |
Converte il valore con segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I1_Un |
Converte il valore senza segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I2 |
Converte il valore con segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I2_Un |
Converte il valore senza segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I4 |
Converte il valore con segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I4_Un |
Converte il valore senza segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I8 |
Converte il valore con segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_I8_Un |
Converte il valore senza segno sopra lo stack di valutazione in con segno |
| Conv_Ovf_U |
Converte il valore con segno all'inizio dello stack di valutazione in |
| Conv_Ovf_U_Un |
Converte il valore senza segno sopra lo stack di valutazione in |
| Conv_Ovf_U1 |
Converte il valore con segno sopra lo stack |
| Conv_Ovf_U1_Un |
Converte il valore senza segno sopra lo stack |
| Conv_Ovf_U2 |
Converte il valore con segno sopra lo stack |
| Conv_Ovf_U2_Un |
Converte il valore senza segno sopra lo stack |
| Conv_Ovf_U4 |
Converte il valore con segno all'inizio dello stack di valutazione in |
| Conv_Ovf_U4_Un |
Converte il valore senza segno sopra lo stack di valutazione in |
| Conv_Ovf_U8 |
Converte il valore con segno all'inizio dello stack di valutazione in |
| Conv_Ovf_U8_Un |
Converte il valore senza segno sopra lo stack di valutazione in |
| Conv_R_Un |
Converte il valore intero senza segno sopra lo stack di valutazione in |
| Conv_R4 |
Converte il valore sopra lo stack di valutazione in |
| Conv_R8 |
Converte il valore sopra lo stack di valutazione in |
| Conv_U |
Converte il valore sopra lo stack di valutazione in |
| Conv_U1 |
Converte il valore sopra lo stack di valutazione in |
| Conv_U2 |
Converte il valore sopra lo stack di valutazione in |
| Conv_U4 |
Converte il valore sopra lo stack di valutazione in |
| Conv_U8 |
Converte il valore sopra lo stack di valutazione in |
| Cpblk |
Copia un numero specificato di byte da un indirizzo di origine a un indirizzo di destinazione. |
| Cpobj |
Copia il tipo di valore che si trova nell'indirizzo di un oggetto (tipo |
| Div |
Divide due valori e inserisce il risultato come virgola mobile (tipo |
| Div_Un |
Divide due valori integer senza segno e inserisce il risultato ( |
| Dup |
Copia il valore più alto corrente nello stack di valutazione e quindi esegue il push della copia nello stack di valutazione. |
| Endfilter |
Trasferisce il controllo dalla |
| Endfinally |
Trasferisce il controllo dalla |
| Initblk |
Inizializza un blocco di memoria specificato in corrispondenza di un indirizzo specifico a una determinata dimensione e valore iniziale. |
| Initobj |
Inizializza ogni campo del tipo valore in corrispondenza di un indirizzo specificato a un riferimento Null o a un valore 0 del tipo primitivo appropriato. |
| Isinst |
Verifica se un riferimento a un oggetto (tipo |
| Jmp |
Esce dal metodo corrente e passa al metodo specificato. |
| Ldarg |
Carica un argomento (a cui fa riferimento un valore di indice specificato) nello stack. |
| Ldarg_0 |
Carica l'argomento in corrispondenza dell'indice 0 nello stack di valutazione. |
| Ldarg_1 |
Carica l'argomento in corrispondenza dell'indice 1 nello stack di valutazione. |
| Ldarg_2 |
Carica l'argomento in corrispondenza dell'indice 2 nello stack di valutazione. |
| Ldarg_3 |
Carica l'argomento in corrispondenza dell'indice 3 nello stack di valutazione. |
| Ldarg_S |
Carica l'argomento (a cui fa riferimento un indice di forma breve specificato) nello stack di valutazione. |
| Ldarga |
Caricare un indirizzo di argomento nello stack di valutazione. |
| Ldarga_S |
Caricare un indirizzo di argomento, in forma breve, nello stack di valutazione. |
| Ldc_I4 |
Inserisce un valore fornito di tipo |
| Ldc_I4_0 |
Inserisce il valore intero pari a 0 nello stack di valutazione come . |
| Ldc_I4_1 |
Inserisce il valore intero 1 nello stack di valutazione come . |
| Ldc_I4_2 |
Inserisce il valore intero 2 nello stack di valutazione come . |
| Ldc_I4_3 |
Inserisce il valore intero pari a 3 nello stack di valutazione come . |
| Ldc_I4_4 |
Inserisce il valore intero 4 nello stack di valutazione come . |
| Ldc_I4_5 |
Inserisce il valore intero 5 nello stack di valutazione come . |
| Ldc_I4_6 |
Inserisce il valore intero 6 nello stack di valutazione come . |
| Ldc_I4_7 |
Inserisce il valore intero pari a 7 nello stack di valutazione come . |
| Ldc_I4_8 |
Inserisce il valore intero pari a 8 nello stack di valutazione come . |
| Ldc_I4_M1 |
Inserisce il valore intero di -1 nello stack di valutazione come . |
| Ldc_I4_S |
Inserisce il valore fornito |
| Ldc_I8 |
Inserisce un valore fornito di tipo |
| Ldc_R4 |
Inserisce un valore fornito di tipo |
| Ldc_R8 |
Inserisce un valore fornito di tipo |
| Ldelem |
Carica l'elemento in corrispondenza di un indice di matrice specificato nella parte superiore dello stack di valutazione come tipo specificato nell'istruzione . |
| Ldelem_I |
Carica l'elemento con tipo |
| Ldelem_I1 |
Carica l'elemento con tipo |
| Ldelem_I2 |
Carica l'elemento con tipo |
| Ldelem_I4 |
Carica l'elemento con tipo |
| Ldelem_I8 |
Carica l'elemento con tipo |
| Ldelem_R4 |
Carica l'elemento con tipo |
| Ldelem_R8 |
Carica l'elemento con tipo |
| Ldelem_Ref |
Carica l'elemento contenente un riferimento a un oggetto in corrispondenza di un indice di matrice specificato nella parte superiore dello stack di valutazione come tipo |
| Ldelem_U1 |
Carica l'elemento con tipo |
| Ldelem_U2 |
Carica l'elemento con tipo |
| Ldelem_U4 |
Carica l'elemento con tipo |
| Ldelema |
Carica l'indirizzo dell'elemento matrice in corrispondenza di un indice di matrice specificato nella parte superiore dello stack di valutazione come tipo |
| Ldfld |
Trova il valore di un campo nell'oggetto il cui riferimento è attualmente nello stack di valutazione. |
| Ldflda |
Trova l'indirizzo di un campo nell'oggetto il cui riferimento è attualmente nello stack di valutazione. |
| Ldftn |
Esegue il push di un puntatore non gestito (tipo |
| Ldind_I |
Carica indirettamente un valore di tipo |
| Ldind_I1 |
Carica indirettamente un valore di tipo |
| Ldind_I2 |
Carica indirettamente un valore di tipo |
| Ldind_I4 |
Carica indirettamente un valore di tipo |
| Ldind_I8 |
Carica indirettamente un valore di tipo |
| Ldind_R4 |
Carica indirettamente un |
| Ldind_R8 |
Carica indirettamente un |
| Ldind_Ref |
Carica un riferimento a un oggetto come tipo |
| Ldind_U1 |
Carica indirettamente un valore di tipo |
| Ldind_U2 |
Carica indirettamente un valore di tipo |
| Ldind_U4 |
Carica indirettamente un valore di tipo |
| Ldlen |
Inserisce il numero di elementi di una matrice unidimensionale in base zero nello stack di valutazione. |
| Ldloc |
Carica la variabile locale in corrispondenza di un indice specifico nello stack di valutazione. |
| Ldloc_0 |
Carica la variabile locale in corrispondenza dell'indice 0 nello stack di valutazione. |
| Ldloc_1 |
Carica la variabile locale in corrispondenza dell'indice 1 nello stack di valutazione. |
| Ldloc_2 |
Carica la variabile locale in corrispondenza dell'indice 2 nello stack di valutazione. |
| Ldloc_3 |
Carica la variabile locale in corrispondenza dell'indice 3 nello stack di valutazione. |
| Ldloc_S |
Carica la variabile locale in corrispondenza di un indice specifico nello stack di valutazione, forma breve. |
| Ldloca |
Carica l'indirizzo della variabile locale in corrispondenza di un indice specifico nello stack di valutazione. |
| Ldloca_S |
Carica l'indirizzo della variabile locale in corrispondenza di un indice specifico nello stack di valutazione, forma breve. |
| Ldnull |
Inserisce un riferimento Null (tipo |
| Ldobj |
Copia l'oggetto tipo valore a cui punta un indirizzo nella parte superiore dello stack di valutazione. |
| Ldsfld |
Inserisce il valore di un campo statico nello stack di valutazione. |
| Ldsflda |
Inserisce l'indirizzo di un campo statico nello stack di valutazione. |
| Ldstr |
Esegue il push di un nuovo riferimento a un nuovo oggetto in un valore letterale stringa archiviato nei metadati. |
| Ldtoken |
Converte un token di metadati nella relativa rappresentazione di runtime, che lo inserisce nello stack di valutazione. |
| Ldvirtftn |
Esegue il push di un puntatore non gestito (tipo |
| Leave |
Esce da un'area protetta di codice, trasferendo in modo incondizionato il controllo a un'istruzione di destinazione specifica. |
| Leave_S |
Esce da un'area protetta di codice, trasferendo in modo incondizionato il controllo a un'istruzione di destinazione (forma breve). |
| Localloc |
Alloca un determinato numero di byte dal pool di memoria dinamica locale e inserisce l'indirizzo (un puntatore temporaneo, tipo |
| Mkrefany |
Inserisce un riferimento tipizzato a un'istanza di un tipo specifico nello stack di valutazione. |
| Mul |
Moltiplica due valori e inserisce il risultato nello stack di valutazione. |
| Mul_Ovf |
Moltiplica due valori interi, esegue un controllo di overflow e inserisce il risultato nello stack di valutazione. |
| Mul_Ovf_Un |
Moltiplica due valori interi senza segno, esegue un controllo di overflow e inserisce il risultato nello stack di valutazione. |
| Neg |
Nega un valore e inserisce il risultato nello stack di valutazione. |
| Newarr |
Inserisce un riferimento a un oggetto a una nuova matrice unidimensionale basata su zero i cui elementi sono di un tipo specifico nello stack di valutazione. |
| Newobj |
Crea un nuovo oggetto o una nuova istanza di un tipo valore, push di un riferimento a un oggetto (tipo |
| Nop |
Riempie lo spazio se vengono applicate patch ai codici operativo. Non viene eseguita alcuna operazione significativa anche se è possibile utilizzare un ciclo di elaborazione. |
| Not |
Calcola il complemento bit per bit del valore intero sopra lo stack e inserisce il risultato nello stack di valutazione dello stesso tipo. |
| Or |
Calcolare il complemento bit per bit dei due valori integer sopra lo stack e inserisce il risultato nello stack di valutazione. |
| Pop |
Rimuove il valore attualmente all'inizio dello stack di valutazione. |
| Prefix1 |
Si tratta di un'istruzione riservata. |
| Prefix2 |
Si tratta di un'istruzione riservata. |
| Prefix3 |
Si tratta di un'istruzione riservata. |
| Prefix4 |
Si tratta di un'istruzione riservata. |
| Prefix5 |
Si tratta di un'istruzione riservata. |
| Prefix6 |
Si tratta di un'istruzione riservata. |
| Prefix7 |
Si tratta di un'istruzione riservata. |
| Prefixref |
Si tratta di un'istruzione riservata. |
| Readonly |
Specifica che l'operazione di indirizzo di matrice successiva non esegue alcun controllo dei tipi in fase di esecuzione e che restituisce un puntatore gestito la cui mutabilità è limitata. |
| Refanytype |
Recupera il token di tipo incorporato in un riferimento tipizzato. |
| Refanyval |
Recupera l'indirizzo (tipo |
| Rem |
Divide due valori e inserisce il resto nello stack di valutazione. |
| Rem_Un |
Divide due valori senza segno e inserisce il resto nello stack di valutazione. |
| Ret |
Restituisce dal metodo corrente, push di un valore restituito (se presente) dallo stack di valutazione del chiamato nello stack di valutazione del chiamante. |
| Rethrow |
Rigenera l'eccezione corrente. |
| Shl |
Sposta un valore intero a sinistra (in zeri) da un numero specificato di bit, eseguendo il push del risultato nello stack di valutazione. |
| Shr |
Sposta un valore intero (nel segno) a destra da un numero specificato di bit, eseguendo il push del risultato nello stack di valutazione. |
| Shr_Un |
Sposta un valore intero senza segno (in zeri) a destra da un numero specificato di bit, eseguendo il push del risultato nello stack di valutazione. |
| Sizeof |
Inserisce le dimensioni, in byte, di un tipo valore fornito nello stack di valutazione. |
| Starg |
Archivia il valore sopra lo stack di valutazione nello slot dell'argomento in corrispondenza di un indice specificato. |
| Starg_S |
Archivia il valore sopra lo stack di valutazione nello slot dell'argomento in corrispondenza di un indice specificato, forma breve. |
| Stelem |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il valore nello stack di valutazione, il cui tipo è specificato nell'istruzione . |
| Stelem_I |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_I1 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_I2 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_I4 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_I8 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_R4 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_R8 |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il |
| Stelem_Ref |
Sostituisce l'elemento della matrice in corrispondenza di un determinato indice con il valore di riferimento dell'oggetto (tipo |
| Stfld |
Sostituisce il valore archiviato nel campo di un riferimento a un oggetto o un puntatore con un nuovo valore. |
| Stind_I |
Archivia un valore di tipo |
| Stind_I1 |
Archivia un valore di tipo |
| Stind_I2 |
Archivia un valore di tipo |
| Stind_I4 |
Archivia un valore di tipo |
| Stind_I8 |
Archivia un valore di tipo |
| Stind_R4 |
Archivia un valore di tipo |
| Stind_R8 |
Archivia un valore di tipo |
| Stind_Ref |
Archivia un valore di riferimento all'oggetto in corrispondenza di un indirizzo fornito. |
| Stloc |
Popa il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco di variabili locali in corrispondenza di un indice specificato. |
| Stloc_0 |
Visualizza il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco delle variabili locali in corrispondenza dell'indice 0. |
| Stloc_1 |
Visualizza il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco delle variabili locali in corrispondenza dell'indice 1. |
| Stloc_2 |
Popula il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco delle variabili locali in corrispondenza dell'indice 2. |
| Stloc_3 |
Popula il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco delle variabili locali in corrispondenza dell'indice 3. |
| Stloc_S |
Popa il valore corrente dall'inizio dello stack di valutazione e lo archivia nell'elenco delle variabili locali in |
| Stobj |
Copia un valore di un tipo specificato dallo stack di valutazione in un indirizzo di memoria fornito. |
| Stsfld |
Sostituisce il valore di un campo statico con un valore dello stack di valutazione. |
| Sub |
Sottrae un valore da un altro e inserisce il risultato nello stack di valutazione. |
| Sub_Ovf |
Sottrae un valore intero da un altro, esegue un controllo di overflow e inserisce il risultato nello stack di valutazione. |
| Sub_Ovf_Un |
Sottrae un valore intero senza segno da un altro, esegue un controllo dell'overflow e inserisce il risultato nello stack di valutazione. |
| Switch |
Implementa una jump table. |
| Tailcall |
Esegue un'istruzione di chiamata al metodo con prefisso in modo che lo stack frame del metodo corrente venga rimosso prima dell'esecuzione dell'istruzione di chiamata effettiva. |
| Throw |
Genera l'oggetto eccezione attualmente nello stack di valutazione. |
| Unaligned |
Indica che un indirizzo attualmente superiore allo stack di valutazione potrebbe non essere allineato alle dimensioni naturali dell'istruzione immediatamente seguente |
| Unbox |
Converte la rappresentazione boxed di un tipo valore nel formato unboxed. |
| Unbox_Any |
Converte la rappresentazione boxed di un tipo specificato nell'istruzione nel formato unboxed. |
| Volatile |
Specifica che un indirizzo attualmente superiore allo stack di valutazione potrebbe essere volatile e i risultati della lettura di tale posizione non possono essere memorizzati nella cache o che non è possibile eliminare più archivi in tale posizione. |
| Xor |
Calcola l'XOR bit per bit dei primi due valori nello stack di valutazione, spingendo il risultato nello stack di valutazione. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| TakesSingleByteArgument(OpCode) |
Restituisce true o false se il codice operativo fornito accetta un singolo argomento di byte. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |