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 les représentations des champs des instructions MSIL (Microsoft Intermediate Language) pour l'émission par les membres de classe ILGenerator (par exemple, 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 utilisant ILGenerator pour émettre OpCodes
dans un MethodBuilder.
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
Type^ CreateDynamicType()
{
array<Type^>^ctorParams = {int::typeid,int::typeid};
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyDynamicAssembly";
AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess::Run );
ModuleBuilder^ pointModule = myAsmBuilder->DefineDynamicModule( "PointModule", "Point.dll" );
TypeBuilder^ pointTypeBld = pointModule->DefineType( "Point", TypeAttributes::Public );
FieldBuilder^ xField = pointTypeBld->DefineField( "x", int::typeid, FieldAttributes::Public );
FieldBuilder^ yField = pointTypeBld->DefineField( "y", int::typeid, FieldAttributes::Public );
Type^ objType = Type::GetType( "System.Object" );
ConstructorInfo^ objCtor = objType->GetConstructor( gcnew array<Type^>(0) );
ConstructorBuilder^ pointCtor = pointTypeBld->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, ctorParams );
ILGenerator^ ctorIL = pointCtor->GetILGenerator();
// First, you build the constructor.
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Call, objCtor );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_1 );
ctorIL->Emit( OpCodes::Stfld, xField );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_2 );
ctorIL->Emit( OpCodes::Stfld, yField );
ctorIL->Emit( OpCodes::Ret );
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder^ writeStrMthd = pointTypeBld->DefineMethod( "WritePoint", MethodAttributes::Public, void::typeid, nullptr );
ILGenerator^ writeStrIL = writeStrMthd->GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// String* output through STDIN.
// ILGenerator::EmitWriteLine(String*) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL->EmitWriteLine( "The value of this current instance is:" );
// Here, you will do the hard work yourself. First, you need to create
// the String* we will be passing and obtain the correct WriteLine overload
// for said String*. In the below case, you are substituting in two values,
// so the chosen overload is Console::WriteLine(String*, Object*, Object*).
String^ inStr = "( {0}, {1})";
array<Type^>^wlParams = {String::typeid,Object::typeid,Object::typeid};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo^ writeLineMI = Console::typeid->GetMethod( "WriteLine", wlParams );
// Push the String* with the substitutions onto the stack.
// This is the first argument for WriteLine - the String* one.
writeStrIL->Emit( OpCodes::Ldstr, inStr );
// Since the second argument is an Object*, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an Object*. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, xField );
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an Object*.
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Atop the stack, you'll find our String* inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, yField );
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Now, you have all of the arguments for your call to
// Console::WriteLine(String*, Object*, Object*) atop the stack:
// the String* InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console::WriteLine(String*, Object*, Object*) with EmitCall.
writeStrIL->EmitCall( OpCodes::Call, writeLineMI, nullptr );
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL->EmitWriteLine( "The value of 'x' is:" );
writeStrIL->EmitWriteLine( xField );
writeStrIL->EmitWriteLine( "The value of 'y' is:" );
writeStrIL->EmitWriteLine( yField );
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL->Emit( OpCodes::Ret );
return pointTypeBld->CreateType();
}
int main()
{
array<Object^>^ctorParams = gcnew array<Object^>(2);
Console::Write( "Enter a integer value for X: " );
String^ myX = Console::ReadLine();
Console::Write( "Enter a integer value for Y: " );
String^ myY = Console::ReadLine();
Console::WriteLine( "---" );
ctorParams[ 0 ] = Convert::ToInt32( myX );
ctorParams[ 1 ] = Convert::ToInt32( myY );
Type^ ptType = CreateDynamicType();
Object^ ptInstance = Activator::CreateInstance( ptType, ctorParams );
ptType->InvokeMember( "WritePoint", BindingFlags::InvokeMethod, nullptr, ptInstance, gcnew array<Object^>(0) );
}
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
class EmitWriteLineDemo {
public static Type CreateDynamicType() {
Type[] ctorParams = new Type[] {typeof(int),
typeof(int)};
AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly";
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
"Point.dll");
TypeBuilder pointTypeBld = pointModule.DefineType("Point",
TypeAttributes.Public);
FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
FieldAttributes.Public);
FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
FieldAttributes.Public);
Type objType = Type.GetType("System.Object");
ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);
ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
MethodAttributes.Public,
CallingConventions.Standard,
ctorParams);
ILGenerator ctorIL = pointCtor.GetILGenerator();
// First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Call, objCtor);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Stfld, xField);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_2);
ctorIL.Emit(OpCodes.Stfld, yField);
ctorIL.Emit(OpCodes.Ret);
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
"WritePoint",
MethodAttributes.Public,
typeof(void),
null);
ILGenerator writeStrIL = writeStrMthd.GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// string output through STDIN.
// ILGenerator.EmitWriteLine(string) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:");
// Here, you will do the hard work yourself. First, you need to create
// the string we will be passing and obtain the correct WriteLine overload
// for said string. In the below case, you are substituting in two values,
// so the chosen overload is Console.WriteLine(string, object, object).
String inStr = "({0}, {1})";
Type[] wlParams = new Type[] {typeof(string),
typeof(object),
typeof(object)};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo writeLineMI = typeof(Console).GetMethod(
"WriteLine",
wlParams);
// Push the string with the substitutions onto the stack.
// This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr);
// Since the second argument is an object, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an object. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, xField);
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Atop the stack, you'll find our string inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, yField);
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Now, you have all of the arguments for your call to
// Console.WriteLine(string, object, object) atop the stack:
// the string InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:");
writeStrIL.EmitWriteLine(xField);
writeStrIL.EmitWriteLine("The value of 'y' is:");
writeStrIL.EmitWriteLine(yField);
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL.Emit(OpCodes.Ret);
return pointTypeBld.CreateType();
}
public static void Main() {
object[] ctorParams = new object[2];
Console.Write("Enter a integer value for X: ");
string myX = Console.ReadLine();
Console.Write("Enter a integer value for Y: ");
string myY = Console.ReadLine();
Console.WriteLine("---");
ctorParams[0] = Convert.ToInt32(myX);
ctorParams[1] = Convert.ToInt32(myY);
Type ptType = CreateDynamicType();
object ptInstance = Activator.CreateInstance(ptType, ctorParams);
ptType.InvokeMember("WritePoint",
BindingFlags.InvokeMethod,
null,
ptInstance,
new object[0]);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class EmitWriteLineDemo
Public Shared Function CreateDynamicType() As Type
Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
TypeAttributes.Public)
Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
GetType(Integer), _
FieldAttributes.Public)
Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
GetType(Integer), _
FieldAttributes.Public)
Dim objType As Type = Type.GetType("System.Object")
Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
MethodAttributes.Public, _
CallingConventions.Standard, _
ctorParams)
Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
' First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Call, objCtor)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_1)
ctorIL.Emit(OpCodes.Stfld, xField)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_2)
ctorIL.Emit(OpCodes.Stfld, yField)
ctorIL.Emit(OpCodes.Ret)
' Now, you'll build a method to output some information on the
' inside your dynamic class. This method will have the following
' definition in C#:
' Public Sub WritePoint()
Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
MethodAttributes.Public, _
Nothing, Nothing)
Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
' The below ILGenerator created demonstrates a few ways to create
' string output through STDIN.
' ILGenerator.EmitWriteLine(string) will generate a ldstr and a
' call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:")
' Here, you will do the hard work yourself. First, you need to create
' the string we will be passing and obtain the correct WriteLine overload
' for said string. In the below case, you are substituting in two values,
' so the chosen overload is Console.WriteLine(string, object, object).
Dim inStr As [String] = "({0}, {1})"
Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
' We need the MethodInfo to pass into EmitCall later.
Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
' Push the string with the substitutions onto the stack.
' This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr)
' Since the second argument is an object, and it corresponds to
' to the substitution for the value of our integer field, you
' need to box that field to an object. First, push a reference
' to the current instance, and then push the value stored in
' field 'x'. We need the reference to the current instance (stored
' in local argument index 0) so Ldfld can load from the correct
' instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, xField)
' Now, we execute the box opcode, which pops the value of field 'x',
' returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Atop the stack, you'll find our string inStr, followed by a reference
' to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, yField)
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Now, you have all of the arguments for your call to
' Console.WriteLine(string, object, object) atop the stack:
' the string InStr, a reference to the boxed value of 'x', and
' a reference to the boxed value of 'y'.
' Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
' Lastly, EmitWriteLine can also output the value of a field
' using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:")
writeStrIL.EmitWriteLine(xField)
writeStrIL.EmitWriteLine("The value of 'y' is:")
writeStrIL.EmitWriteLine(yField)
' Since we return no value (void), the ret opcode will not
' return the top stack value.
writeStrIL.Emit(OpCodes.Ret)
Return pointTypeBld.CreateType()
End Function 'CreateDynamicType
Public Shared Sub Main()
Dim ctorParams(1) As Object
Console.Write("Enter a integer value for X: ")
Dim myX As String = Console.ReadLine()
Console.Write("Enter a integer value for Y: ")
Dim myY As String = Console.ReadLine()
Console.WriteLine("---")
ctorParams(0) = Convert.ToInt32(myX)
ctorParams(1) = Convert.ToInt32(myY)
Dim ptType As Type = CreateDynamicType()
Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)
ptType.InvokeMember("WritePoint", _
BindingFlags.InvokeMethod, _
Nothing, ptInstance, Nothing)
End Sub
End Class
Remarques
Pour obtenir une description détaillée des opcodes membres, consultez la documentation cli (Common Language Infrastructure), 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
Add |
Ajoute deux valeurs et exécute un push du résultat dans la pile d'évaluation. |
Add_Ovf |
Ajoute deux entiers, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
Add_Ovf_Un |
Ajoute deux valeurs entières non signées, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
And |
Calcule l'opération de bits AND de deux valeurs et exécute un push du résultat dans 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 les deux valeurs sont égales. |
Beq_S |
Transfère le contrôle à une instruction cible (forme abrégée) si les 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. |
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. |
Bge_Un |
Transfère le contrôle à une instruction cible si la première valeur est supérieure à la deuxième 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 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. |
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. |
Bgt_Un |
Transfère le contrôle à une instruction cible si la première valeur est supérieure à la deuxième 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 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. |
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. |
Ble_Un |
Transfère le contrôle à une instruction cible si la première valeur est inférieure ou égale à la deuxième 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 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. |
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. |
Blt_Un |
Transfère le contrôle à une instruction cible si la première valeur est inférieure à la deuxième 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 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 valeurs float non ordonnées ne sont pas égales. |
Bne_Un_S |
Transfère le contrôle à une instruction cible lorsque deux valeurs entières non signées ou valeurs float non ordonnées ne sont pas égales. |
Box |
Convertit un type valeur en référence d'objet (type |
Br |
Transfère le contrôle à une instruction cible de manière non conditionnelle. |
Br_S |
Transfère le contrôle à une instruction cible de manière non conditionnelle (forme abrégée). |
Break |
Active l'infrastructure CLI de façon à informer le débogueur qu'un point d'arrêt a été dépassé. |
Brfalse |
Transfère le contrôle à une instruction cible si |
Brfalse_S |
Transfère le contrôle à une instruction cible si |
Brtrue |
Transfère le contrôle à une instruction cible si |
Brtrue_S |
Transfère le contrôle à une instruction cible (forme abrégée) si |
Call |
Appelle la méthode indiquée par le descripteur de méthode passé. |
Calli |
Appelle la méthode indiquée dans la pile d'évaluation (sous la forme d'un pointeur vers un point d'entrée) avec les arguments décrits par une convention d'appel. |
Callvirt |
Appelle une méthode à liaison tardive sur un objet, en exécutant un push de la valeur de retour dans la pile d'évaluation. |
Castclass |
Tente d'effectuer un cast d'un objet passé par référence en classe spécifiée. |
Ceq |
Compare deux valeurs. Si elles sont égales, la valeur entière 1 ( |
Cgt |
Compare deux valeurs. Si la première valeur est supérieure à la deuxième, 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 deuxième, 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 deuxième, la valeur entière 1 ( |
Clt_Un |
Compare les valeurs non signées ou non ordonnées |
Constrained |
Contraint le type sur lequel un appel à une méthode virtuelle est effectué. |
Conv_I |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_I1 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_I2 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_I4 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_I8 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_Ovf_I |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_I_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_I1 |
Convertit la valeur signée située en haut de la pile d’évaluation en |
Conv_Ovf_I1_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_I2 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_I2_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_I4 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_I4_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_I8 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_I8_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_U |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_U_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_U1 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_U1_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_U2 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_U2_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_U4 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_U4_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_Ovf_U8 |
Convertit la valeur signée située en haut de la pile d'évaluation en |
Conv_Ovf_U8_Un |
Convertit la valeur non signée située en haut de la pile d'évaluation en |
Conv_R_Un |
Convertit la valeur entière non signée située en haut de la pile d'évaluation en |
Conv_R4 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_R8 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_U |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_U1 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_U2 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_U4 |
Convertit la valeur située en haut de la pile d'évaluation en |
Conv_U8 |
Convertit la valeur située en haut de la pile d'évaluation en |
Cpblk |
Copie un nombre d'octets spécifié d'une adresse source vers une adresse de destination. |
Cpobj |
Copie le type de valeur situé à l’adresse d’un objet (type , ou ) vers l’adresse de l’objet de destination (type |
Div |
Divise une valeur par une autre et exécute un push du résultat en tant que valeur à virgule flottante (type |
Div_Un |
Divise une valeur entière non signée par une autre et exécute un push du résultat ( |
Dup |
Copie la valeur actuelle la plus haute dans la pile d'évaluation et exécute un push de la copie dans la pile d'évaluation. |
Endfilter |
Transfère à nouveau le contrôle de la clause |
Endfinally |
Transfère à nouveau le contrôle de la clause |
Initblk |
Initialise un bloc de mémoire spécifié situé à une adresse spécifique en utilisant une taille et une valeur initiale données. |
Initobj |
Initialise tous les champs du type de valeur figurant à l'adresse spécifiée en utilisant la référence null ou la valeur 0 du type primitif qui convient. |
Isinst |
Vérifie 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) dans 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 sous la forme abrégée) dans la pile d’évaluation. |
Ldarga |
Charge une adresse d'argument dans la pile d'évaluation. |
Ldarga_S |
Charge une adresse d’argument, sous la forme abrégée, dans la pile d’évaluation. |
Ldc_I4 |
Exécute un push d'une valeur fournie de type |
Ldc_I4_0 |
Exécute un push de la valeur entière 0 dans la pile d'évaluation en tant que |
Ldc_I4_1 |
Exécute un envoi (push) de la valeur entière 1 dans la pile d’évaluation en tant que |
Ldc_I4_2 |
Exécute un envoi (push) de la valeur entière 2 dans la pile d’évaluation en tant que |
Ldc_I4_3 |
Exécute un envoi (push) de la valeur entière 3 dans la pile d’évaluation en tant que |
Ldc_I4_4 |
Exécute un envoi (push) de la valeur entière 4 dans la pile d’évaluation en tant que |
Ldc_I4_5 |
Exécute un envoi (push) de la valeur entière 5 dans la pile d’évaluation en tant que |
Ldc_I4_6 |
Exécute un envoi (push) de la valeur entière 6 dans la pile d’évaluation en tant que |
Ldc_I4_7 |
Exécute un envoi (push) de la valeur entière 7 dans la pile d’évaluation en tant que |
Ldc_I4_8 |
Exécute un envoi (push) de la valeur entière 8 dans la pile d’évaluation en tant que |
Ldc_I4_M1 |
Exécute un envoi (push) de la valeur entière -1 dans la pile d’évaluation en tant que |
Ldc_I4_S |
Exécute un push de la valeur fournie |
Ldc_I8 |
Exécute un push d'une valeur fournie de type |
Ldc_R4 |
Exécute un push d'une valeur fournie de type |
Ldc_R8 |
Exécute un push d'une valeur fournie de type |
Ldelem |
Charge l'élément à un index de tableau spécifié en haut de la pile d'évaluation en tant que type spécifié par l'instruction. |
Ldelem_I |
Charge l'élément avec le type |
Ldelem_I1 |
Charge l'élément avec le type |
Ldelem_I2 |
Charge l'élément avec le type |
Ldelem_I4 |
Charge l'élément avec le type |
Ldelem_I8 |
Charge l'élément avec le type |
Ldelem_R4 |
Charge l'élément avec le type |
Ldelem_R8 |
Charge l'élément avec le 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 le type |
Ldelem_U2 |
Charge l'élément avec le type |
Ldelem_U4 |
Charge l'élément avec le type |
Ldelema |
Charge l'adresse de l'élément de tableau situé à 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 est actuellement située dans la pile d'évaluation. |
Ldflda |
Recherche l'adresse d'un champ dans l'objet dont la référence est actuellement située dans la pile d'évaluation. |
Ldftn |
Exécute un push d'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 |
Exécute un push du nombre d'éléments d'un tableau unidimensionnel de base zéro dans 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 dans la pile d'évaluation (forme abrégée). |
Ldloca |
Charge l'adresse de la variable locale à un index spécifique dans la pile d'évaluation. |
Ldloca_S |
Charge l'adresse de la variable locale à un index spécifique dans la pile d'évaluation (forme abrégée). |
Ldnull |
Exécute un push d'une référence null (type |
Ldobj |
Copie l'objet de type de valeur sur lequel pointe une adresse en haut de la pile d'évaluation. |
Ldsfld |
Exécute un push de la valeur d’un champ static dans la pile d’évaluation. |
Ldsflda |
Exécute un push de l’adresse d’un champ static dans la pile d’évaluation. |
Ldstr |
Exécute un push d'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 runtime et exécute un push de cette représentation dans la pile d'évaluation. |
Ldvirtftn |
Exécute un push d'un pointeur non managé (type |
Leave |
Quitte une région de code protégée, en transférant le contrôle à une instruction cible spécifique de manière non conditionnelle. |
Leave_S |
Quitte une région de code protégée, en transférant le contrôle à une instruction cible (forme abrégée) de manière non conditionnelle. |
Localloc |
Alloue un certain nombre d'octets à partir du pool de mémoires dynamique local et exécute un push de l'adresse (pointeur transitoire, type |
Mkrefany |
Exécute un push d'une référence typée à une instance d'un type spécifique dans la pile d'évaluation. |
Mul |
Multiplie deux valeurs et exécute un push du résultat dans la pile d'évaluation. |
Mul_Ovf |
Multiplie deux valeurs entières, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
Mul_Ovf_Un |
Multiplie deux valeurs entières non signées, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
Neg |
Met en négatif une valeur et exécute un push du résultat dans la pile d'évaluation. |
Newarr |
Exécute un push dans la pile d'évaluation sur une référence d'objet à un nouveau tableau unidimensionnel de base zéro dont les éléments sont d'un type spécifique. |
Newobj |
Crée un nouvel objet ou une nouvelle instance d'un type valeur, en exécutant un push d'une référence d'objet (type |
Nop |
Remplit l’espace si les opcodes sont corrigés. Aucune opération significative n'est exécutée bien qu'un cycle de traitement puisse être utilisé. |
Not |
Calcule le complément de bits de la valeur entière située en haut de la pile et exécute un push du résultat dans la pile d'évaluation en tant que type identique. |
Or |
Calcule le complément de bits de deux valeurs entières situées en haut de la pile et exécute un push du résultat dans la pile d'évaluation. |
Pop |
Supprime la valeur actuellement située en haut de la pile. |
Prefix1 |
Cette instruction est réservée. |
Prefix2 |
Cette instruction est réservée. |
Prefix3 |
Cette instruction est réservée. |
Prefix4 |
Cette instruction est réservée. |
Prefix5 |
Cette instruction est réservée. |
Prefix6 |
Cette instruction est réservée. |
Prefix7 |
Cette instruction est réservée. |
Prefixref |
Cette instruction est réservée. |
Readonly |
Spécifie que l'opération d'adresse de tableau suivante n'exécute aucun contrôle de type au moment de l'exécution et qu'il 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 une valeur par une autre et exécute un push du reste dans la pile d'évaluation. |
Rem_Un |
Divise une valeur non signée par une autre et exécute un push du reste dans la pile d'évaluation. |
Ret |
Effectue un retour à partir de la méthode actuelle en exécutant un push d'une valeur de retour (si elle existe) à partir de la pile d'évaluation de l'appelé dans celle de l'appelant. |
Rethrow |
Lève de nouveau l'exception actuelle. |
Shl |
Déplace une valeur entière vers la gauche (décalage des zéros) d'un nombre de bits spécifié, en exécutant un push du résultat dans la pile d'évaluation. |
Shr |
Déplace une valeur entière (dans le signe) vers la droite d'un nombre de bits spécifié, en exécutant un push du résultat dans la pile d'évaluation. |
Shr_Un |
Déplace une valeur entière non signée (décalage des zéros) vers la droite d'un nombre de bits spécifié, en exécutant un push du résultat dans la pile d'évaluation. |
Sizeof |
Exécute un push de la taille (en octets) d'un type de valeur fourni dans la pile d'évaluation. |
Starg |
Stocke la valeur en haut de la pile d’évaluation à l’emplacement d’argument situé à un index spécifié. |
Starg_S |
Stocke la valeur en haut de la pile d’évaluation à l’emplacement d’argument situé à un index spécifié (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 situé à un index donné par la valeur |
Stelem_I1 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_I2 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_I4 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_I8 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_R4 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_R8 |
Remplace l'élément de tableau situé à un index donné par la valeur |
Stelem_Ref |
Remplace l'élément de tableau situé à un index donné par la valeur de référence d'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 sous |
Stobj |
Copie une valeur d'un type spécifié de la pile d'évaluation vers une adresse mémoire fournie. |
Stsfld |
Remplace la valeur d’un champ static par une valeur de la pile d’évaluation. |
Sub |
Soustrait une valeur d'une autre et exécute un push du résultat dans la pile d'évaluation. |
Sub_Ovf |
Soustrait une valeur entière d'une autre, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
Sub_Ovf_Un |
Soustrait une valeur entière non signée d'une autre, effectue un contrôle de dépassement de capacité et exécute un push du résultat dans la pile d'évaluation. |
Switch |
Implémente un tableau de saut. |
Tailcall |
Exécute une instruction d'appel de méthode suffixée afin que le frame de pile de la méthode actuelle soit supprimé avant cette exécution. |
Throw |
Lève l'objet exception actuellement situé dans la pile d'évaluation. |
Unaligned |
Indique qu'une adresse actuellement située en haut de la pile d'évaluation peut ne pas être alignée avec la taille naturelle de l'instruction |
Unbox |
Convertit la représentation boxed d'un type de valeur dans sa forme unboxed. |
Unbox_Any |
Convertit la représentation boxed d'un type spécifié dans l'instruction en forme unboxed. |
Volatile |
Spécifie qu'une adresse actuellement située 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 situés à cet emplacement ne peuvent pas être supprimés. |
Xor |
Calcule l'opération de bits XOR des deux premières valeurs de la pile d'évaluation en exécutant un push du résultat dans la pile d'évaluation. |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
TakesSingleByteArgument(OpCode) |
Retourne true ou false si l’opcode fourni utilise un argument à octet unique. |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |