OpCodes Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt veldweergaven van de Microsoft MSIL-instructies (Intermediate Language) voor emissie door de ILGenerator klasseleden (zoals 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
- Overname
-
OpCodes
- Kenmerken
Voorbeelden
In het volgende voorbeeld ziet u de constructie van een dynamische methode die wordt gebruikt ILGenerator om in OpCodes een 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
Opmerkingen
Zie de DOCUMENTATIE van Common Language Infrastructure (CLI) voor een gedetailleerde beschrijving van de lid-opcodes, met name Partition III: CIL Instruction Set en Partition II: Metadata Definition and Semantics. Zie ECMA 335 Common Language Infrastructure (CLI) voor meer informatie.
Velden
| Name | Description |
|---|---|
| Add |
Voegt twee waarden toe en pusht het resultaat naar de evaluatiestack. |
| Add_Ovf |
Voegt twee gehele getallen toe, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| Add_Ovf_Un |
Voegt twee niet-ondertekende gehele getallen toe, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| And |
Berekent de bitsgewijze EN van twee waarden en pusht het resultaat naar de evaluatiestack. |
| Arglist |
Retourneert een onbeheerde aanwijzer naar de argumentenlijst van de huidige methode. |
| Beq |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als twee waarden gelijk zijn. |
| Beq_S |
Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als twee waarden gelijk zijn. |
| Bge |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan of gelijk is aan de tweede waarde. |
| Bge_S |
Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde groter is dan of gelijk is aan de tweede waarde. |
| Bge_Un |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Bge_Un_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Bgt |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde. |
| Bgt_S |
Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde. |
| Bgt_Un |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Bgt_Un_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde groter is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Ble |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde. |
| Ble_S |
Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde. |
| Ble_Un |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Ble_Un_S |
Hiermee wordt het besturingselement overgedragen aan een doelinstructie (korte vorm) als de eerste waarde kleiner is dan of gelijk is aan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Blt |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan de tweede waarde. |
| Blt_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde kleiner is dan de tweede waarde. |
| Blt_Un |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als de eerste waarde kleiner is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Blt_Un_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als de eerste waarde kleiner is dan de tweede waarde, bij het vergelijken van niet-ondertekende gehele getallen of niet-geordende floatwaarden. |
| Bne_Un |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie wanneer twee niet-ondertekende gehele getallen of niet-geordende floatwaarden niet gelijk zijn. |
| Bne_Un_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) wanneer twee niet-ondertekende gehele getallen of niet-geordende floatwaarden niet gelijk zijn. |
| Box |
Converteert een waardetype naar een objectverwijzing (type |
| Br |
Voorwaardelijke overdracht van controle naar een doelinstructie. |
| Br_S |
Voorwaardelijke overdracht van controle naar een doelinstructie (korte vorm). |
| Break |
Geeft de CLI (Common Language Infrastructure) aan om het foutopsporingsprogramma te informeren dat er een onderbrekingspunt is verschoven. |
| Brfalse |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als |
| Brfalse_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie, indien |
| Brtrue |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie als |
| Brtrue_S |
Hiermee wordt het besturingselement overgedragen naar een doelinstructie (korte vorm) als |
| Call |
Roept de methode aan die wordt aangegeven door de doorgegeven methodedescriptor. |
| Calli |
Roept de methode aan die is aangegeven op de evaluatiestack (als een aanwijzer naar een toegangspunt) met argumenten die worden beschreven door een aanroepende conventie. |
| Callvirt |
Roept een late gebonden methode aan voor een object, waardoor de retourwaarde naar de evaluatiestack wordt gepusht. |
| Castclass |
Pogingen om een object te casten dat wordt doorgegeven door verwijzing naar de opgegeven klasse. |
| Ceq |
Vergelijkt twee waarden. Als ze gelijk zijn, wordt de gehele waarde 1 |
| Cgt |
Vergelijkt twee waarden. Als de eerste waarde groter is dan de tweede, wordt de gehele waarde 1 |
| Cgt_Un |
Vergelijkt twee niet-ondertekende of niet-geordende waarden. Als de eerste waarde groter is dan de tweede, wordt de gehele waarde 1 |
| Ckfinite |
ArithmeticException Genereert als waarde geen eindig getal is. |
| Clt |
Vergelijkt twee waarden. Als de eerste waarde kleiner is dan de tweede, wordt de gehele waarde 1 |
| Clt_Un |
Vergelijkt de niet-ondertekende of niet-geordende waarden |
| Constrained |
Hiermee beperkt u het type waarop een aanroep van een virtuele methode wordt uitgevoerd. |
| Conv_I |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_I1 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_I2 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_I4 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_I8 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_Ovf_I |
Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, |
| Conv_Ovf_I_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_I1 |
Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_I1_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_I2 |
Hiermee wordt de ondertekende waarde boven op de evaluatiestack geconverteerd naar ondertekend |
| Conv_Ovf_I2_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_I4 |
Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, |
| Conv_Ovf_I4_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_I8 |
Converteert de ondertekende waarde boven op de evaluatiestack naar ondertekende, |
| Conv_Ovf_I8_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar ondertekend |
| Conv_Ovf_U |
Converteert de ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U1 |
Converteert de ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U1_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U2 |
Converteert de ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U2_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U4 |
Converteert de ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U4_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U8 |
Converteert de ondertekende waarde boven op de evaluatiestack naar |
| Conv_Ovf_U8_Un |
Converteert de niet-ondertekende waarde boven op de evaluatiestack naar |
| Conv_R_Un |
Converteert de waarde van het niet-ondertekende gehele getal boven op de evaluatiestack naar |
| Conv_R4 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_R8 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_U |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_U1 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_U2 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_U4 |
Converteert de waarde boven op de evaluatiestack naar |
| Conv_U8 |
Converteert de waarde boven op de evaluatiestack naar |
| Cpblk |
Hiermee kopieert u een opgegeven aantal bytes van een bronadres naar een doeladres. |
| Cpobj |
Kopieert het waardetype dat zich bevindt op het adres van een object (type |
| Div |
Verdeelt twee waarden en pusht het resultaat als een drijvende komma (type |
| Div_Un |
Verdeelt twee niet-ondertekende gehele getallen en pusht het resultaat ( |
| Dup |
Kopieert de huidige bovenste waarde op de evaluatiestack en pusht de kopie vervolgens naar de evaluatiestack. |
| Endfilter |
Hiermee wordt het beheer van de |
| Endfinally |
Hiermee wordt het besturingselement van de |
| Initblk |
Initialiseert een opgegeven geheugenblok op een specifiek adres voor een bepaalde grootte en initiële waarde. |
| Initobj |
Initialiseert elk veld van het waardetype op een opgegeven adres naar een null-verwijzing of een 0 van het juiste primitieve type. |
| Isinst |
Test of een objectverwijzing (type |
| Jmp |
Sluit de huidige methode af en springt naar de opgegeven methode. |
| Ldarg |
Hiermee wordt een argument (waarnaar wordt verwezen door een opgegeven indexwaarde) op de stack geladen. |
| Ldarg_0 |
Laadt het argument bij index 0 op de evaluatiestack. |
| Ldarg_1 |
Laadt het argument bij index 1 op de evaluatiestack. |
| Ldarg_2 |
Laadt het argument bij index 2 op de evaluatiestack. |
| Ldarg_3 |
Laadt het argument bij index 3 op de evaluatiestack. |
| Ldarg_S |
Laadt het argument (waarnaar wordt verwezen door een opgegeven korte formulierindex) op de evaluatiestack. |
| Ldarga |
Laad een argumentadres op de evaluatiestack. |
| Ldarga_S |
Laad een argumentadres in korte vorm op de evaluatiestack. |
| Ldc_I4 |
Hiermee wordt een opgegeven waarde van het type |
| Ldc_I4_0 |
Hiermee wordt de waarde van het gehele getal van 0 naar de evaluatiestack gepusht als een |
| Ldc_I4_1 |
Hiermee wordt de waarde van het gehele getal 1 naar de evaluatiestack gepusht als een |
| Ldc_I4_2 |
Hiermee wordt de waarde van het gehele getal van 2 naar de evaluatiestack gepusht als een |
| Ldc_I4_3 |
Hiermee wordt de waarde van het gehele getal van 3 naar de evaluatiestack gepusht als een |
| Ldc_I4_4 |
Hiermee wordt de waarde van het gehele getal van 4 naar de evaluatiestack gepusht als een |
| Ldc_I4_5 |
Hiermee wordt de waarde van het gehele getal van 5 naar de evaluatiestack gepusht als een |
| Ldc_I4_6 |
Hiermee wordt de waarde van het gehele getal van 6 naar de evaluatiestack gepusht als een |
| Ldc_I4_7 |
Hiermee wordt de waarde van het gehele getal van 7 naar de evaluatiestack gepusht als een |
| Ldc_I4_8 |
Hiermee wordt de waarde van het gehele getal van 8 naar de evaluatiestack gepusht als een |
| Ldc_I4_M1 |
Pusht de gehele waarde van -1 naar de evaluatiestack als een |
| Ldc_I4_S |
Hiermee wordt de opgegeven |
| Ldc_I8 |
Hiermee wordt een opgegeven waarde van het type |
| Ldc_R4 |
Hiermee wordt een opgegeven waarde van het type |
| Ldc_R8 |
Hiermee wordt een opgegeven waarde van het type |
| Ldelem |
Laadt het element op een opgegeven matrixindex boven aan de evaluatiestack als het type dat in de instructie is opgegeven. |
| Ldelem_I |
Laadt het element met het type |
| Ldelem_I1 |
Laadt het element met het type |
| Ldelem_I2 |
Laadt het element met het type |
| Ldelem_I4 |
Laadt het element met het type |
| Ldelem_I8 |
Laadt het element met het type |
| Ldelem_R4 |
Laadt het element met het type |
| Ldelem_R8 |
Laadt het element met het type |
| Ldelem_Ref |
Laadt het element met een objectverwijzing op een opgegeven matrixindex boven aan de evaluatiestack als type |
| Ldelem_U1 |
Laadt het element met het type |
| Ldelem_U2 |
Laadt het element met het type |
| Ldelem_U4 |
Laadt het element met het type |
| Ldelema |
Laadt het adres van het matrixelement op een opgegeven matrixindex boven aan de evaluatiestack als type |
| Ldfld |
Hiermee zoekt u de waarde van een veld in het object waarvan de verwijzing zich momenteel op de evaluatiestack bevindt. |
| Ldflda |
Hiermee zoekt u het adres van een veld in het object waarvan de verwijzing zich momenteel op de evaluatiestack bevindt. |
| Ldftn |
Pusht een onbeheerde aanwijzer (type |
| Ldind_I |
Hiermee wordt een waarde van het type |
| Ldind_I1 |
Laadt indirect een waarde van het type |
| Ldind_I2 |
Laadt indirect een waarde van het type |
| Ldind_I4 |
Laadt indirect een waarde van het type |
| Ldind_I8 |
Laadt indirect een waarde van het type |
| Ldind_R4 |
Laadt een waarde van het type |
| Ldind_R8 |
Laadt een waarde van het type |
| Ldind_Ref |
Laadt indirect een objectverwijzing als een type |
| Ldind_U1 |
Laadt indirect een waarde van het type |
| Ldind_U2 |
Laadt indirect een waarde van het type |
| Ldind_U4 |
Laadt indirect een waarde van het type |
| Ldlen |
Hiermee wordt het aantal elementen van een op nul gebaseerde, eendimensionale matrix naar de evaluatiestack gepusht. |
| Ldloc |
Laadt de lokale variabele bij een specifieke index op de evaluatiestack. |
| Ldloc_0 |
Laadt de lokale variabele op index 0 op de evaluatiestack. |
| Ldloc_1 |
Laadt de lokale variabele op index 1 op de evaluatiestack. |
| Ldloc_2 |
Laadt de lokale variabele bij index 2 op de evaluatiestack. |
| Ldloc_3 |
Laadt de lokale variabele bij index 3 op de evaluatiestack. |
| Ldloc_S |
Laadt de lokale variabele op een specifieke index op de evaluatiestack, korte vorm. |
| Ldloca |
Laadt het adres van de lokale variabele bij een specifieke index op de evaluatiestack. |
| Ldloca_S |
Laadt het adres van de lokale variabele op een specifieke index op de evaluatiestack, korte vorm. |
| Ldnull |
Hiermee wordt een null-verwijzing (type |
| Ldobj |
Kopieert het waardetypeobject waarnaar wordt verwezen door een adres boven aan de evaluatiestack. |
| Ldsfld |
Hiermee wordt de waarde van een statisch veld naar de evaluatiestack gepusht. |
| Ldsflda |
Hiermee wordt het adres van een statisch veld naar de evaluatiestack gepusht. |
| Ldstr |
Pusht een nieuwe objectverwijzing naar een letterlijke tekenreeks die is opgeslagen in de metagegevens. |
| Ldtoken |
Converteert een metagegevenstoken naar de runtimeweergave en pusht het naar de evaluatiestack. |
| Ldvirtftn |
Pusht een onbeheerde aanwijzer (type |
| Leave |
Sluit een beveiligd codegebied af, waarbij de controle onvoorwaardelijke wordt overgedragen naar een specifieke doelinstructie. |
| Leave_S |
Sluit een beveiligd codegebied af, waarbij de besturing onvoorwaardelijke wordt overgedragen naar een doelinstructie (korte vorm). |
| Localloc |
Wijst een bepaald aantal bytes toe uit de lokale dynamische geheugengroep en pusht het adres (een tijdelijke aanwijzer, type |
| Mkrefany |
Hiermee wordt een getypte verwijzing naar een exemplaar van een specifiek type naar de evaluatiestack gepusht. |
| Mul |
Vermenigvuldigt twee waarden en pusht het resultaat op de evaluatiestack. |
| Mul_Ovf |
Vermenigvuldigt twee gehele getallen, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| Mul_Ovf_Un |
Vermenigvuldigt twee niet-ondertekende gehele getallen, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| Neg |
Hiermee wordt een waarde ontkend en wordt het resultaat naar de evaluatiestack gepusht. |
| Newarr |
Pusht een objectverwijzing naar een nieuwe op nul gebaseerde, eendimensionale matrix waarvan de elementen van een specifiek type zijn op de evaluatiestack. |
| Newobj |
Hiermee maakt u een nieuw object of een nieuw exemplaar van een waardetype, waarbij een objectverwijzing (type |
| Nop |
Vult ruimte als opcodes zijn gepatcht. Er wordt geen zinvolle bewerking uitgevoerd, hoewel een verwerkingscyclus kan worden gebruikt. |
| Not |
Berekent het bitsgewijze complement van de gehele waarde boven op de stack en pusht het resultaat naar de evaluatiestack als hetzelfde type. |
| Or |
Bereken het bitsgewijze complement van de twee gehele getallen boven op de stack en pusht het resultaat naar de evaluatiestack. |
| Pop |
Hiermee verwijdert u de waarde die zich momenteel boven op de evaluatiestack bevindt. |
| Prefix1 |
Dit is een gereserveerde instructie. |
| Prefix2 |
Dit is een gereserveerde instructie. |
| Prefix3 |
Dit is een gereserveerde instructie. |
| Prefix4 |
Dit is een gereserveerde instructie. |
| Prefix5 |
Dit is een gereserveerde instructie. |
| Prefix6 |
Dit is een gereserveerde instructie. |
| Prefix7 |
Dit is een gereserveerde instructie. |
| Prefixref |
Dit is een gereserveerde instructie. |
| Readonly |
Hiermee geeft u op dat de volgende matrixadresbewerking geen typecontrole uitvoert tijdens runtime en dat deze een beheerde aanwijzer retourneert waarvan de mutabiliteit is beperkt. |
| Refanytype |
Hiermee wordt het typetoken opgehaald dat is ingesloten in een getypte verwijzing. |
| Refanyval |
Haalt het adres (type |
| Rem |
Verdeelt twee waarden en pusht de rest naar de evaluatiestack. |
| Rem_Un |
Verdeelt twee niet-ondertekende waarden en pusht de rest naar de evaluatiestack. |
| Ret |
Retourneert van de huidige methode en pusht een retourwaarde (indien aanwezig) van de evaluatiestack van de aanroeper naar de evaluatiestack van de aanroeper. |
| Rethrow |
Hiermee wordt de huidige uitzondering opnieuw geworpen. |
| Shl |
Hiermee verschuift u een geheel getal naar links (in nullen) door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht. |
| Shr |
Hiermee verschuift u een geheel getal (in teken) naar rechts door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht. |
| Shr_Un |
Hiermee wordt een niet-ondertekende geheel getalwaarde (in nullen) naar rechts verplaatst door een opgegeven aantal bits, waardoor het resultaat naar de evaluatiestack wordt gepusht. |
| Sizeof |
Hiermee wordt de grootte, in bytes, van een opgegeven waardetype naar de evaluatiestack gepusht. |
| Starg |
Slaat de waarde op boven op de evaluatiestack in de argumentsite op een opgegeven index. |
| Starg_S |
Slaat de waarde op boven op de evaluatiestack in de argumentsite op een opgegeven index, korte vorm. |
| Stelem |
Vervangt het matrixelement in een bepaalde index door de waarde op de evaluatiestack, waarvan het type is opgegeven in de instructie. |
| Stelem_I |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_I1 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_I2 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_I4 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_I8 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_R4 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_R8 |
Vervangt het matrixelement in een bepaalde index door de |
| Stelem_Ref |
Vervangt het matrixelement in een bepaalde index door de objectverwwaarde (type |
| Stfld |
Vervangt de waarde die is opgeslagen in het veld van een objectverwijzing of aanwijzer door een nieuwe waarde. |
| Stind_I |
Hiermee wordt een waarde van het type |
| Stind_I1 |
Hiermee wordt een waarde van het type |
| Stind_I2 |
Hiermee wordt een waarde van het type |
| Stind_I4 |
Hiermee wordt een waarde van het type |
| Stind_I8 |
Hiermee wordt een waarde van het type |
| Stind_R4 |
Hiermee wordt een waarde van het type |
| Stind_R8 |
Hiermee wordt een waarde van het type |
| Stind_Ref |
Slaat een objectverwijzingswaarde op een opgegeven adres op. |
| Stloc |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen op een opgegeven index. |
| Stloc_0 |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen op index 0. |
| Stloc_1 |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen bij index 1. |
| Stloc_2 |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen bij index 2. |
| Stloc_3 |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lijst met lokale variabelen bij index 3. |
| Stloc_S |
Hiermee wordt de huidige waarde boven aan de evaluatiestack weergegeven en opgeslagen in de lokale lijst met variabelen op |
| Stobj |
Kopieert een waarde van een opgegeven type van de evaluatiestack naar een opgegeven geheugenadres. |
| Stsfld |
Hiermee vervangt u de waarde van een statisch veld door een waarde uit de evaluatiestack. |
| Sub |
Trekt de ene waarde af van de andere en pusht het resultaat naar de evaluatiestack. |
| Sub_Ovf |
Trekt één geheel getal af van een andere, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| Sub_Ovf_Un |
Trekt één niet-ondertekende gehele waarde af van een andere, voert een overloopcontrole uit en pusht het resultaat naar de evaluatiestack. |
| Switch |
Hiermee wordt een jump table geïmplementeerd. |
| Tailcall |
Voert een aanroepinstructie voor een nafixed methode uit, zodat het stackframe van de huidige methode wordt verwijderd voordat de werkelijke aanroepinstructie wordt uitgevoerd. |
| Throw |
Hiermee wordt het uitzonderingsobject op dit moment op de evaluatiestack gegenereerd. |
| Unaligned |
Hiermee wordt aangegeven dat een adres dat zich momenteel boven op de evaluatiestack bevindt, mogelijk niet is afgestemd op de natuurlijke grootte van de volgende |
| Unbox |
Converteert de vakkenweergave van een waardetype naar het niet-geplaatste formulier. |
| Unbox_Any |
Converteert de vakkenweergave van een type dat is opgegeven in de instructie naar het niet-ingepakte formulier. |
| Volatile |
Hiermee geeft u op dat een adres boven op de evaluatiestack kan vluchtig zijn en de resultaten van het lezen van die locatie niet in de cache kunnen worden opgeslagen of dat meerdere winkels naar die locatie niet kunnen worden onderdrukt. |
| Xor |
Berekent de bitsgewijze XOR van de bovenste twee waarden op de evaluatiestack, waardoor het resultaat naar de evaluatiestack wordt gepusht. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| TakesSingleByteArgument(OpCode) |
Retourneert waar of onwaar als de opgegeven opcode één byteargument gebruikt. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |