OpCodes Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit des représentations de champ des instructions MSIL (Microsoft Intermediate Language) pour l’émission par les membres de classe ILGenerator (tels que 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
- Héritage
-
OpCodes
- Attributs
Exemples
L’exemple suivant illustre la construction d’une méthode dynamique à l’aide ILGenerator de l’émission OpCodes dans un 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
Remarques
Pour obtenir une description détaillée des opcodes membres, consultez la documentation de Common Language Infrastructure (CLI), en particulier « Partition III : JEU d’instructions CIL » et « Partition II : Définition et sémantique des métadonnées ». Pour plus d’informations, consultez ECMA 335 Common Language Infrastructure (CLI).
Champs
| Nom | Description |
|---|---|
| Add |
Ajoute deux valeurs et envoie (push) le résultat dans la pile d’évaluation. |
| Add_Ovf |
Ajoute deux entiers, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| Add_Ovf_Un |
Ajoute deux valeurs entières non signées, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| And |
Calcule le bit AND de deux valeurs et envoie le résultat sur la pile d’évaluation. |
| Arglist |
Retourne un pointeur non managé vers la liste d’arguments de la méthode actuelle. |
| Beq |
Transfère le contrôle à une instruction cible si deux valeurs sont égales. |
| Beq_S |
Transfère le contrôle à une instruction cible (forme abrégée) si deux valeurs sont égales. |
| Bge |
Transfère le contrôle à une instruction cible si la première valeur est supérieure ou égale à la deuxième valeur. |
| Bge_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est supérieure ou égale à la deuxième valeur. |
| Bge_Un |
Transfère le contrôle à une instruction cible si la première valeur est supérieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Bge_Un_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est supérieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Bgt |
Transfère le contrôle à une instruction cible si la première valeur est supérieure à la deuxième valeur. |
| Bgt_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est supérieure à la deuxième valeur. |
| Bgt_Un |
Transfère le contrôle à une instruction cible si la première valeur est supérieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Bgt_Un_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est supérieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Ble |
Transfère le contrôle à une instruction cible si la première valeur est inférieure ou égale à la deuxième valeur. |
| Ble_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est inférieure ou égale à la deuxième valeur. |
| Ble_Un |
Transfère le contrôle à une instruction cible si la première valeur est inférieure ou égale à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Ble_Un_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est inférieure ou égale à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Blt |
Transfère le contrôle à une instruction cible si la première valeur est inférieure à la deuxième valeur. |
| Blt_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est inférieure à la deuxième valeur. |
| Blt_Un |
Transfère le contrôle à une instruction cible si la première valeur est inférieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Blt_Un_S |
Transfère le contrôle à une instruction cible (forme abrégée) si la première valeur est inférieure à la deuxième valeur, lors de la comparaison des valeurs entières non signées ou des valeurs float non ordonnées. |
| Bne_Un |
Transfère le contrôle à une instruction cible lorsque deux valeurs entières non signées ou des valeurs float non ordonnées ne sont pas égales. |
| Bne_Un_S |
Transfère le contrôle à une instruction cible (formulaire court) lorsque deux valeurs entières non signées ou des valeurs float non ordonnées ne sont pas égales. |
| Box |
Convertit un type valeur en référence d’objet (type |
| Br |
Transfère inconditionnellement le contrôle à une instruction cible. |
| Br_S |
Transfère inconditionnellement le contrôle à une instruction cible (forme abrégée). |
| Break |
Signale l’interface CLI (Common Language Infrastructure) pour informer le débogueur qu’un point d’arrêt a été triplé. |
| Brfalse |
Transfère le contrôle à une instruction cible si |
| Brfalse_S |
Transfère le contrôle à une instruction cible s’il |
| Brtrue |
Transfère le contrôle à une instruction cible s’il |
| Brtrue_S |
Transfère le contrôle à une instruction cible (forme abrégée) s’il |
| Call |
Appelle la méthode indiquée par le descripteur de méthode passé. |
| Calli |
Appelle la méthode indiquée sur la pile d’évaluation (en tant que pointeur vers un point d’entrée) avec des arguments décrits par une convention d’appel. |
| Callvirt |
Appelle une méthode à liaison tardive sur un objet, en transmettant la valeur de retour sur la pile d’évaluation. |
| Castclass |
Tente de convertir un objet passé par référence à la classe spécifiée. |
| Ceq |
Compare deux valeurs. S’ils sont égaux, la valeur entière 1 |
| Cgt |
Compare deux valeurs. Si la première valeur est supérieure à la seconde, la valeur entière 1 |
| Cgt_Un |
Compare deux valeurs non signées ou non ordonnées. Si la première valeur est supérieure à la seconde, la valeur entière 1 |
| Ckfinite |
Lève ArithmeticException si la valeur n’est pas un nombre fini. |
| Clt |
Compare deux valeurs. Si la première valeur est inférieure à la seconde, la valeur entière 1 |
| Clt_Un |
Compare les valeurs |
| Constrained |
Limite le type sur lequel un appel de méthode virtuelle est effectué. |
| Conv_I |
Convertit la valeur en haut de la pile |
| Conv_I1 |
Convertit la valeur en haut de la pile |
| Conv_I2 |
Convertit la valeur en haut de la pile |
| Conv_I4 |
Convertit la valeur en haut de la pile |
| Conv_I8 |
Convertit la valeur en haut de la pile |
| Conv_Ovf_I |
Convertit la valeur signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_I_Un |
Convertit la valeur non signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_I1 |
Convertit la valeur signée au-dessus de la pile d’évaluation en signe |
| Conv_Ovf_I1_Un |
Convertit la valeur non signée au-dessus de la pile d’évaluation en signe |
| Conv_Ovf_I2 |
Convertit la valeur signée au-dessus de la pile d’évaluation en la |
| Conv_Ovf_I2_Un |
Convertit la valeur non signée au-dessus de la pile d’évaluation en signe |
| Conv_Ovf_I4 |
Convertit la valeur signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_I4_Un |
Convertit la valeur non signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_I8 |
Convertit la valeur signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_I8_Un |
Convertit la valeur non signée au-dessus de la pile d’évaluation en |
| Conv_Ovf_U |
Convertit la valeur signée en haut de la pile |
| Conv_Ovf_U_Un |
Convertit la valeur non signée au-dessus de la pile |
| Conv_Ovf_U1 |
Convertit la valeur signée au-dessus de la pile |
| Conv_Ovf_U1_Un |
Convertit la valeur non signée en haut de la pile |
| Conv_Ovf_U2 |
Convertit la valeur signée au-dessus de la pile |
| Conv_Ovf_U2_Un |
Convertit la valeur non signée en haut de la pile |
| Conv_Ovf_U4 |
Convertit la valeur signée en haut de la pile |
| Conv_Ovf_U4_Un |
Convertit la valeur non signée au-dessus de la pile |
| Conv_Ovf_U8 |
Convertit la valeur signée en haut de la pile |
| Conv_Ovf_U8_Un |
Convertit la valeur non signée au-dessus de la pile |
| Conv_R_Un |
Convertit la valeur entière non signée en haut de la pile |
| Conv_R4 |
Convertit la valeur en haut de la pile |
| Conv_R8 |
Convertit la valeur en haut de la pile |
| Conv_U |
Convertit la valeur en haut de la pile |
| Conv_U1 |
Convertit la valeur en haut de la pile |
| Conv_U2 |
Convertit la valeur en haut de la pile |
| Conv_U4 |
Convertit la valeur en haut de la pile |
| Conv_U8 |
Convertit la valeur en haut de la pile |
| Cpblk |
Copie un nombre spécifié d’octets d’une adresse source vers une adresse de destination. |
| Cpobj |
Copie le type de valeur situé à l’adresse d’un objet (type |
| Div |
Divise deux valeurs et envoie le résultat sous forme de virgule flottante (type |
| Div_Un |
Divise deux valeurs entières non signées et envoie le résultat ( |
| Dup |
Copie la valeur la plus élevée actuelle sur la pile d’évaluation, puis envoie (push) la copie sur la pile d’évaluation. |
| Endfilter |
Transfère le contrôle de la |
| Endfinally |
Transfère le contrôle à partir de l’ou |
| Initblk |
Initialise un bloc de mémoire spécifié à une adresse spécifique à une taille donnée et une valeur initiale. |
| Initobj |
Initialise chaque champ du type valeur à une adresse spécifiée à une référence Null ou un 0 du type primitif approprié. |
| Isinst |
Teste si une référence d’objet (type |
| Jmp |
Quitte la méthode actuelle et passe à la méthode spécifiée. |
| Ldarg |
Charge un argument (référencé par une valeur d’index spécifiée) sur la pile. |
| Ldarg_0 |
Charge l’argument à l’index 0 dans la pile d’évaluation. |
| Ldarg_1 |
Charge l’argument à l’index 1 dans la pile d’évaluation. |
| Ldarg_2 |
Charge l’argument à l’index 2 dans la pile d’évaluation. |
| Ldarg_3 |
Charge l’argument à l’index 3 dans la pile d’évaluation. |
| Ldarg_S |
Charge l’argument (référencé par un index de formulaire court spécifié) dans la pile d’évaluation. |
| Ldarga |
Chargez une adresse d’argument sur la pile d’évaluation. |
| Ldarga_S |
Chargez une adresse d’argument, sous forme abrégée, sur la pile d’évaluation. |
| Ldc_I4 |
Envoie (push) une valeur de type |
| Ldc_I4_0 |
Envoie (push) la valeur entière de 0 sur la pile d’évaluation en tant que |
| Ldc_I4_1 |
Envoie (push) la valeur entière de 1 sur la pile d’évaluation en tant que |
| Ldc_I4_2 |
Envoie (push) la valeur entière de 2 dans la pile d’évaluation en tant que |
| Ldc_I4_3 |
Envoie (push) la valeur entière de 3 sur la pile d’évaluation en tant que |
| Ldc_I4_4 |
Envoie (push) la valeur entière de 4 sur la pile d’évaluation en tant que |
| Ldc_I4_5 |
Envoie (push) la valeur entière de 5 sur la pile d’évaluation en tant que |
| Ldc_I4_6 |
Envoie (push) la valeur entière de 6 sur la pile d’évaluation en tant que |
| Ldc_I4_7 |
Envoie (push) la valeur entière de 7 sur la pile d’évaluation en tant que |
| Ldc_I4_8 |
Envoie (push) la valeur entière de 8 sur la pile d’évaluation en tant que |
| Ldc_I4_M1 |
Envoie (push) la valeur entière de -1 sur la pile d’évaluation en tant que |
| Ldc_I4_S |
Envoie (push) la valeur fournie |
| Ldc_I8 |
Envoie (push) une valeur de type |
| Ldc_R4 |
Envoie (push) une valeur de type |
| Ldc_R8 |
Envoie (push) une valeur de type |
| Ldelem |
Charge l’élément à un index de tableau spécifié en haut de la pile d’évaluation comme type spécifié dans l’instruction. |
| Ldelem_I |
Charge l’élément avec un type |
| Ldelem_I1 |
Charge l’élément avec un type |
| Ldelem_I2 |
Charge l’élément avec un type |
| Ldelem_I4 |
Charge l’élément avec un type |
| Ldelem_I8 |
Charge l’élément avec un type |
| Ldelem_R4 |
Charge l’élément avec un type |
| Ldelem_R8 |
Charge l’élément avec un type |
| Ldelem_Ref |
Charge l’élément contenant une référence d’objet à un index de tableau spécifié en haut de la pile d’évaluation en tant que type |
| Ldelem_U1 |
Charge l’élément avec un type |
| Ldelem_U2 |
Charge l’élément avec un type |
| Ldelem_U4 |
Charge l’élément avec un type |
| Ldelema |
Charge l’adresse de l’élément de tableau à un index de tableau spécifié en haut de la pile d’évaluation en tant que type |
| Ldfld |
Recherche la valeur d’un champ dans l’objet dont la référence se trouve actuellement sur la pile d’évaluation. |
| Ldflda |
Recherche l’adresse d’un champ dans l’objet dont la référence se trouve actuellement sur la pile d’évaluation. |
| Ldftn |
Envoie (push) un pointeur non managé (type |
| Ldind_I |
Charge indirectement une valeur de type |
| Ldind_I1 |
Charge indirectement une valeur de type |
| Ldind_I2 |
Charge indirectement une valeur de type |
| Ldind_I4 |
Charge indirectement une valeur de type |
| Ldind_I8 |
Charge indirectement une valeur de type |
| Ldind_R4 |
Charge indirectement une valeur de type |
| Ldind_R8 |
Charge indirectement une valeur de type |
| Ldind_Ref |
Charge indirectement une référence d’objet en tant que type |
| Ldind_U1 |
Charge indirectement une valeur de type |
| Ldind_U2 |
Charge indirectement une valeur de type |
| Ldind_U4 |
Charge indirectement une valeur de type |
| Ldlen |
Envoie (push) le nombre d’éléments d’un tableau unidimensionnel de base zéro sur la pile d’évaluation. |
| Ldloc |
Charge la variable locale à un index spécifique dans la pile d’évaluation. |
| Ldloc_0 |
Charge la variable locale à l’index 0 dans la pile d’évaluation. |
| Ldloc_1 |
Charge la variable locale à l’index 1 dans la pile d’évaluation. |
| Ldloc_2 |
Charge la variable locale à l’index 2 dans la pile d’évaluation. |
| Ldloc_3 |
Charge la variable locale à l’index 3 dans la pile d’évaluation. |
| Ldloc_S |
Charge la variable locale à un index spécifique sur la pile d’évaluation, sous forme abrégée. |
| Ldloca |
Charge l’adresse de la variable locale à un index spécifique sur la pile d’évaluation. |
| Ldloca_S |
Charge l’adresse de la variable locale à un index spécifique sur la pile d’évaluation, sous forme abrégée. |
| Ldnull |
Envoie une référence Null (type |
| Ldobj |
Copie l’objet type valeur pointé par une adresse en haut de la pile d’évaluation. |
| Ldsfld |
Envoie (push) la valeur d’un champ statique sur la pile d’évaluation. |
| Ldsflda |
Envoie (push) l’adresse d’un champ statique sur la pile d’évaluation. |
| Ldstr |
Envoie une nouvelle référence d’objet à un littéral de chaîne stocké dans les métadonnées. |
| Ldtoken |
Convertit un jeton de métadonnées en sa représentation d’exécution, en le transmettant à la pile d’évaluation. |
| Ldvirtftn |
Envoie (push) un pointeur non managé (type |
| Leave |
Quitte une région protégée de code, transférant sans condition le contrôle vers une instruction cible spécifique. |
| Leave_S |
Quitte une région protégée de code, en transférant sans condition le contrôle vers une instruction cible (forme abrégée). |
| Localloc |
Alloue un certain nombre d’octets du pool de mémoire dynamique local et envoie (push) l’adresse (pointeur temporaire, type |
| Mkrefany |
Envoie une référence typée à une instance d’un type spécifique sur la pile d’évaluation. |
| Mul |
Multiplie deux valeurs et envoie (push) le résultat sur la pile d’évaluation. |
| Mul_Ovf |
Multiplie deux valeurs entières, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| Mul_Ovf_Un |
Multiplie deux valeurs entières non signées, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| Neg |
Annule une valeur et envoie le résultat sur la pile d’évaluation. |
| Newarr |
Envoie une référence d’objet à un nouveau tableau unidimensionnel de base zéro dont les éléments sont d’un type spécifique sur la pile d’évaluation. |
| Newobj |
Crée un objet ou une nouvelle instance d’un type valeur, en transmettant une référence d’objet (type |
| Nop |
Remplit l’espace si les opcodes sont corrigés. Aucune opération significative n’est effectuée même si un cycle de traitement peut être consommé. |
| Not |
Calcule le complément au niveau du bit de la valeur entière au-dessus de la pile et envoie le résultat sur la pile d’évaluation comme le même type. |
| Or |
Calculez le complément au niveau du bit des deux valeurs entières au-dessus de la pile et envoie le résultat sur la pile d’évaluation. |
| Pop |
Supprime la valeur actuellement située en haut de la pile d’évaluation. |
| Prefix1 |
Il s’agit d’une instruction réservée. |
| Prefix2 |
Il s’agit d’une instruction réservée. |
| Prefix3 |
Il s’agit d’une instruction réservée. |
| Prefix4 |
Il s’agit d’une instruction réservée. |
| Prefix5 |
Il s’agit d’une instruction réservée. |
| Prefix6 |
Il s’agit d’une instruction réservée. |
| Prefix7 |
Il s’agit d’une instruction réservée. |
| Prefixref |
Il s’agit d’une instruction réservée. |
| Readonly |
Spécifie que l’opération d’adresse de tableau suivante n’effectue aucune vérification de type au moment de l’exécution et qu’elle retourne un pointeur managé dont la mutabilité est restreinte. |
| Refanytype |
Récupère le jeton de type incorporé dans une référence typée. |
| Refanyval |
Récupère l’adresse (type |
| Rem |
Divise deux valeurs et envoie le reste dans la pile d’évaluation. |
| Rem_Un |
Divise deux valeurs non signées et envoie le reste sur la pile d’évaluation. |
| Ret |
Retourne à partir de la méthode actuelle, en transmettant une valeur de retour (le cas échéant) à partir de la pile d’évaluation de l’appelant sur la pile d’évaluation de l’appelant. |
| Rethrow |
Rétablit l’exception actuelle. |
| Shl |
Déplace une valeur entière vers la gauche (en zéros) par un nombre spécifié de bits, envoyant le résultat sur la pile d’évaluation. |
| Shr |
Déplace une valeur entière (en signe) à droite par un nombre spécifié de bits, envoyant le résultat sur la pile d’évaluation. |
| Shr_Un |
Déplace une valeur entière non signée (en zéros) à droite par un nombre spécifié de bits, en envoyant le résultat sur la pile d’évaluation. |
| Sizeof |
Envoie (push) la taille, en octets, d’un type valeur fourni dans la pile d’évaluation. |
| Starg |
Stocke la valeur au-dessus de la pile d’évaluation dans l’emplacement d’argument à un index spécifié. |
| Starg_S |
Stocke la valeur en haut de la pile d’évaluation dans l’emplacement d’argument à un index spécifié, sous forme abrégée. |
| Stelem |
Remplace l’élément de tableau à un index donné par la valeur de la pile d’évaluation, dont le type est spécifié dans l’instruction. |
| Stelem_I |
Remplace l’élément de tableau à un index donné par la |
| Stelem_I1 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_I2 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_I4 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_I8 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_R4 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_R8 |
Remplace l’élément de tableau à un index donné par la |
| Stelem_Ref |
Remplace l’élément de tableau à un index donné par la valeur ref de l’objet (type |
| Stfld |
Remplace la valeur stockée dans le champ d’une référence d’objet ou d’un pointeur par une nouvelle valeur. |
| Stind_I |
Stocke une valeur de type |
| Stind_I1 |
Stocke une valeur de type |
| Stind_I2 |
Stocke une valeur de type |
| Stind_I4 |
Stocke une valeur de type |
| Stind_I8 |
Stocke une valeur de type |
| Stind_R4 |
Stocke une valeur de type |
| Stind_R8 |
Stocke une valeur de type |
| Stind_Ref |
Stocke une valeur de référence d’objet à une adresse fournie. |
| Stloc |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales à un index spécifié. |
| Stloc_0 |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales à l’index 0. |
| Stloc_1 |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales à l’index 1. |
| Stloc_2 |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales à l’index 2. |
| Stloc_3 |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales à l’index 3. |
| Stloc_S |
Affiche la valeur actuelle en haut de la pile d’évaluation et la stocke dans la liste des variables locales au |
| Stobj |
Copie une valeur d’un type spécifié de la pile d’évaluation dans une adresse mémoire fournie. |
| Stsfld |
Remplace la valeur d’un champ statique par une valeur de la pile d’évaluation. |
| Sub |
Soustrait une valeur d’une autre et envoie le résultat sur la pile d’évaluation. |
| Sub_Ovf |
Soustrait une valeur entière d’une autre, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| Sub_Ovf_Un |
Soustrait une valeur entière non signée d’une autre, effectue une vérification de dépassement de capacité et envoie le résultat sur la pile d’évaluation. |
| Switch |
Implémente une table de raccourcis. |
| Tailcall |
Effectue une instruction d’appel de méthode postfixée de sorte que la trame de pile de la méthode actuelle soit supprimée avant l’exécution de l’instruction d’appel réelle. |
| Throw |
Lève l’objet d’exception actuellement sur la pile d’évaluation. |
| Unaligned |
Indique qu’une adresse en haut de la pile d’évaluation peut ne pas être alignée sur la taille naturelle immédiatement suivante |
| Unbox |
Convertit la représentation boxée d’un type valeur en son formulaire non encadré. |
| Unbox_Any |
Convertit la représentation boxée d’un type spécifié dans l’instruction en son formulaire non encadré. |
| Volatile |
Spécifie qu’une adresse en haut de la pile d’évaluation peut être volatile et que les résultats de la lecture de cet emplacement ne peuvent pas être mis en cache ou que plusieurs magasins à cet emplacement ne peuvent pas être supprimés. |
| Xor |
Calcule le XOR au niveau du bit des deux premières valeurs de la pile d’évaluation, en transmettant le résultat à la pile d’évaluation. |
Méthodes
| Nom | Description |
|---|---|
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| TakesSingleByteArgument(OpCode) |
Retourne true ou false si l’opcode fourni prend un argument d’octet unique. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |