OpCodes Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Innehåller fältrepresentationer av msil-instruktionerna (Microsoft Intermediate Language) för utsläpp av klassmedlemmarna ILGenerator (till exempel 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
- Arv
-
OpCodes
- Attribut
Exempel
I följande exempel visas konstruktionen av en dynamisk metod som använder ILGenerator för att generera OpCodes till en MethodBuilder.
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
class EmitWriteLineDemo {
public static Type CreateDynamicType() {
Type[] ctorParams = new Type[] {typeof(int),
typeof(int)};
AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly";
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
"Point.dll");
TypeBuilder pointTypeBld = pointModule.DefineType("Point",
TypeAttributes.Public);
FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
FieldAttributes.Public);
FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
FieldAttributes.Public);
Type objType = Type.GetType("System.Object");
ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);
ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
MethodAttributes.Public,
CallingConventions.Standard,
ctorParams);
ILGenerator ctorIL = pointCtor.GetILGenerator();
// First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Call, objCtor);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Stfld, xField);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_2);
ctorIL.Emit(OpCodes.Stfld, yField);
ctorIL.Emit(OpCodes.Ret);
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
"WritePoint",
MethodAttributes.Public,
typeof(void),
null);
ILGenerator writeStrIL = writeStrMthd.GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// string output through STDIN.
// ILGenerator.EmitWriteLine(string) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:");
// Here, you will do the hard work yourself. First, you need to create
// the string we will be passing and obtain the correct WriteLine overload
// for said string. In the below case, you are substituting in two values,
// so the chosen overload is Console.WriteLine(string, object, object).
String inStr = "({0}, {1})";
Type[] wlParams = new Type[] {typeof(string),
typeof(object),
typeof(object)};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo writeLineMI = typeof(Console).GetMethod(
"WriteLine",
wlParams);
// Push the string with the substitutions onto the stack.
// This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr);
// Since the second argument is an object, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an object. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, xField);
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Atop the stack, you'll find our string inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, yField);
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Now, you have all of the arguments for your call to
// Console.WriteLine(string, object, object) atop the stack:
// the string InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:");
writeStrIL.EmitWriteLine(xField);
writeStrIL.EmitWriteLine("The value of 'y' is:");
writeStrIL.EmitWriteLine(yField);
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL.Emit(OpCodes.Ret);
return pointTypeBld.CreateType();
}
public static void Main() {
object[] ctorParams = new object[2];
Console.Write("Enter a integer value for X: ");
string myX = Console.ReadLine();
Console.Write("Enter a integer value for Y: ");
string myY = Console.ReadLine();
Console.WriteLine("---");
ctorParams[0] = Convert.ToInt32(myX);
ctorParams[1] = Convert.ToInt32(myY);
Type ptType = CreateDynamicType();
object ptInstance = Activator.CreateInstance(ptType, ctorParams);
ptType.InvokeMember("WritePoint",
BindingFlags.InvokeMethod,
null,
ptInstance,
new object[0]);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class EmitWriteLineDemo
Public Shared Function CreateDynamicType() As Type
Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
TypeAttributes.Public)
Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
GetType(Integer), _
FieldAttributes.Public)
Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
GetType(Integer), _
FieldAttributes.Public)
Dim objType As Type = Type.GetType("System.Object")
Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
MethodAttributes.Public, _
CallingConventions.Standard, _
ctorParams)
Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
' First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Call, objCtor)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_1)
ctorIL.Emit(OpCodes.Stfld, xField)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_2)
ctorIL.Emit(OpCodes.Stfld, yField)
ctorIL.Emit(OpCodes.Ret)
' Now, you'll build a method to output some information on the
' inside your dynamic class. This method will have the following
' definition in C#:
' Public Sub WritePoint()
Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
MethodAttributes.Public, _
Nothing, Nothing)
Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
' The below ILGenerator created demonstrates a few ways to create
' string output through STDIN.
' ILGenerator.EmitWriteLine(string) will generate a ldstr and a
' call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:")
' Here, you will do the hard work yourself. First, you need to create
' the string we will be passing and obtain the correct WriteLine overload
' for said string. In the below case, you are substituting in two values,
' so the chosen overload is Console.WriteLine(string, object, object).
Dim inStr As [String] = "({0}, {1})"
Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
' We need the MethodInfo to pass into EmitCall later.
Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
' Push the string with the substitutions onto the stack.
' This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr)
' Since the second argument is an object, and it corresponds to
' to the substitution for the value of our integer field, you
' need to box that field to an object. First, push a reference
' to the current instance, and then push the value stored in
' field 'x'. We need the reference to the current instance (stored
' in local argument index 0) so Ldfld can load from the correct
' instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, xField)
' Now, we execute the box opcode, which pops the value of field 'x',
' returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Atop the stack, you'll find our string inStr, followed by a reference
' to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, yField)
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Now, you have all of the arguments for your call to
' Console.WriteLine(string, object, object) atop the stack:
' the string InStr, a reference to the boxed value of 'x', and
' a reference to the boxed value of 'y'.
' Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
' Lastly, EmitWriteLine can also output the value of a field
' using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:")
writeStrIL.EmitWriteLine(xField)
writeStrIL.EmitWriteLine("The value of 'y' is:")
writeStrIL.EmitWriteLine(yField)
' Since we return no value (void), the ret opcode will not
' return the top stack value.
writeStrIL.Emit(OpCodes.Ret)
Return pointTypeBld.CreateType()
End Function 'CreateDynamicType
Public Shared Sub Main()
Dim ctorParams(1) As Object
Console.Write("Enter a integer value for X: ")
Dim myX As String = Console.ReadLine()
Console.Write("Enter a integer value for Y: ")
Dim myY As String = Console.ReadLine()
Console.WriteLine("---")
ctorParams(0) = Convert.ToInt32(myX)
ctorParams(1) = Convert.ToInt32(myY)
Dim ptType As Type = CreateDynamicType()
Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)
ptType.InvokeMember("WritePoint", _
BindingFlags.InvokeMethod, _
Nothing, ptInstance, Nothing)
End Sub
End Class
Kommentarer
En detaljerad beskrivning av medlems opcodes finns i CLI-dokumentationen (Common Language Infrastructure), särskilt "Partition III: CIL Instruction Set" och "Partition II: Metadata Definition and Semantics". Mer information finns i ECMA 335 Common Language Infrastructure (CLI).
Fält
| Name | Description |
|---|---|
| Add |
Lägger till två värden och push-överför resultatet till utvärderingsstacken. |
| Add_Ovf |
Lägger till två heltal, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| Add_Ovf_Un |
Lägger till två osignerade heltalsvärden, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| And |
Beräknar bitvis OCH för två värden och push-överför resultatet till utvärderingsstacken. |
| Arglist |
Returnerar en ohanterad pekare till argumentlistan för den aktuella metoden. |
| Beq |
Överför kontrollen till en målinstruktion om två värden är lika med. |
| Beq_S |
Överför kontrollen till en målinstruktion (kort formulär) om två värden är lika. |
| Bge |
Överför kontrollen till en målinstruktion om det första värdet är större än eller lika med det andra värdet. |
| Bge_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är större än eller lika med det andra värdet. |
| Bge_Un |
Överför kontrollen till en målinstruktion om det första värdet är större än det andra värdet, när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Bge_Un_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är större än det andra värdet när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Bgt |
Överför kontrollen till en målinstruktion om det första värdet är större än det andra värdet. |
| Bgt_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är större än det andra värdet. |
| Bgt_Un |
Överför kontrollen till en målinstruktion om det första värdet är större än det andra värdet, när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Bgt_Un_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är större än det andra värdet när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Ble |
Överför kontrollen till en målinstruktion om det första värdet är mindre än eller lika med det andra värdet. |
| Ble_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är mindre än eller lika med det andra värdet. |
| Ble_Un |
Överför kontrollen till en målinstruktion om det första värdet är mindre än eller lika med det andra värdet när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Ble_Un_S |
Överför kontrollen till en målinstruktion (kort form) om det första värdet är mindre än eller lika med det andra värdet när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Blt |
Överför kontrollen till en målinstruktion om det första värdet är mindre än det andra värdet. |
| Blt_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är mindre än det andra värdet. |
| Blt_Un |
Överför kontrollen till en målinstruktion om det första värdet är mindre än det andra värdet när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Blt_Un_S |
Överför kontrollen till en målinstruktion (kort formulär) om det första värdet är mindre än det andra värdet, när du jämför osignerade heltalsvärden eller osorterade flyttalsvärden. |
| Bne_Un |
Överför kontrollen till en målinstruktion när två osignerade heltalsvärden eller osorterade flyttalsvärden inte är lika med. |
| Bne_Un_S |
Överför kontrollen till en målinstruktion (kort formulär) när två osignerade heltalsvärden eller osorterade flyttalsvärden inte är lika med. |
| Box |
Konverterar en värdetyp till en objektreferens (typ |
| Br |
Överför ovillkorligt kontrollen till en målinstruktion. |
| Br_S |
Ovillkorligt överför kontrollen till en målinstruktion (kort formulär). |
| Break |
Signalerar common language infrastructure (CLI) för att informera felsökaren om att en brytpunkt har utlösts. |
| Brfalse |
Överför kontrollen till en målinstruktion om |
| Brfalse_S |
Överför kontrollen till en målinstruktion om |
| Brtrue |
Överför kontrollen till en målinstruktion om |
| Brtrue_S |
Överför kontrollen till en målinstruktion (kort formulär) om |
| Call |
Anropar metoden som anges av den angivna metodbeskrivningen. |
| Calli |
Anropar den metod som anges i utvärderingsstacken (som en pekare till en startpunkt) med argument som beskrivs av en anropskonvention. |
| Callvirt |
Anropar en sen bindningsmetod för ett objekt och push-överför returvärdet till utvärderingsstacken. |
| Castclass |
Försöker omvandla ett objekt som skickas med referens till den angivna klassen. |
| Ceq |
Jämför två värden. Om de är lika överförs heltalsvärdet 1 |
| Cgt |
Jämför två värden. Om det första värdet är större än det andra överförs heltalsvärdet 1 |
| Cgt_Un |
Jämför två osignerade eller osorterade värden. Om det första värdet är större än det andra överförs heltalsvärdet 1 |
| Ckfinite |
Genererar ArithmeticException om värdet inte är ett begränsat tal. |
| Clt |
Jämför två värden. Om det första värdet är mindre än det andra överförs heltalsvärdet 1 |
| Clt_Un |
Jämför de osignerade eller osorterade värdena |
| Constrained |
Begränsar vilken typ av anrop av virtuell metod som görs. |
| Conv_I |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_I1 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_I2 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_I4 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_I8 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_I |
Konverterar det signerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I1 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I1_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I2 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I2_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I4 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I4_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I8 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_I8_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till signerat |
| Conv_Ovf_U |
Konverterar det signerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U1 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U1_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U2 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U2_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U4 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U4_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U8 |
Konverterar det signerade värdet ovanpå utvärderingsstacken till |
| Conv_Ovf_U8_Un |
Konverterar det osignerade värdet ovanpå utvärderingsstacken till |
| Conv_R_Un |
Konverterar det osignerade heltalsvärdet ovanpå utvärderingsstacken till |
| Conv_R4 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_R8 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_U |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_U1 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_U2 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_U4 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Conv_U8 |
Konverterar värdet ovanpå utvärderingsstacken till |
| Cpblk |
Kopierar ett angivet antal byte från en källadress till en måladress. |
| Cpobj |
Kopierar värdetypen som finns på adressen för ett objekt (typ |
| Div |
Delar upp två värden och push-överför resultatet som en flyttal (typ |
| Div_Un |
Delar upp två osignerade heltalsvärden och push-överför resultatet ( |
| Dup |
Kopierar det aktuella översta värdet i utvärderingsstacken och skickar sedan kopian till utvärderingsstacken. |
| Endfilter |
Överför kontrollen från -satsen i |
| Endfinally |
Överför kontrollen från |
| Initblk |
Initierar ett angivet minnesblock vid en specifik adress till en viss storlek och ett initialt värde. |
| Initobj |
Initierar varje fält av värdetypen vid en angiven adress till en nullreferens eller 0 av lämplig primitiv typ. |
| Isinst |
Testar om en objektreferens (typ |
| Jmp |
Avslutar den aktuella metoden och hoppar till den angivna metoden. |
| Ldarg |
Läser in ett argument (som refereras av ett angivet indexvärde) till stacken. |
| Ldarg_0 |
Läser in argumentet vid index 0 till utvärderingsstacken. |
| Ldarg_1 |
Läser in argumentet vid index 1 till utvärderingsstacken. |
| Ldarg_2 |
Läser in argumentet vid index 2 till utvärderingsstacken. |
| Ldarg_3 |
Läser in argumentet vid index 3 till utvärderingsstacken. |
| Ldarg_S |
Läser in argumentet (som refereras av ett angivet kort formulärindex) till utvärderingsstacken. |
| Ldarga |
Läs in en argumentadress till utvärderingsstacken. |
| Ldarga_S |
Läs in en argumentadress i kort form till utvärderingsstacken. |
| Ldc_I4 |
Skickar ett angivet värde av typen |
| Ldc_I4_0 |
Push-överför heltalsvärdet 0 till utvärderingsstacken som en |
| Ldc_I4_1 |
Push-överför heltalsvärdet 1 till utvärderingsstacken som en |
| Ldc_I4_2 |
Push-överför heltalsvärdet 2 till utvärderingsstacken som en |
| Ldc_I4_3 |
Push-överför heltalsvärdet 3 till utvärderingsstacken som en |
| Ldc_I4_4 |
Push-överför heltalsvärdet 4 till utvärderingsstacken som en |
| Ldc_I4_5 |
Push-överför heltalsvärdet 5 till utvärderingsstacken som en |
| Ldc_I4_6 |
Push-överför heltalsvärdet 6 till utvärderingsstacken som en |
| Ldc_I4_7 |
Push-överför heltalsvärdet 7 till utvärderingsstacken som en |
| Ldc_I4_8 |
Push-överför heltalsvärdet 8 till utvärderingsstacken som en |
| Ldc_I4_M1 |
Push-överför heltalsvärdet för -1 till utvärderingsstacken som en |
| Ldc_I4_S |
Push-överför det angivna |
| Ldc_I8 |
Skickar ett angivet värde av typen |
| Ldc_R4 |
Skickar ett angivet värde av typen |
| Ldc_R8 |
Skickar ett angivet värde av typen |
| Ldelem |
Läser in elementet vid ett angivet matrisindex överst i utvärderingsstacken som den typ som anges i instruktionen. |
| Ldelem_I |
Läser in elementet med typen |
| Ldelem_I1 |
Läser in elementet med typen |
| Ldelem_I2 |
Läser in elementet med typen |
| Ldelem_I4 |
Läser in elementet med typen |
| Ldelem_I8 |
Läser in elementet med typen |
| Ldelem_R4 |
Läser in elementet med typen |
| Ldelem_R8 |
Läser in elementet med typen |
| Ldelem_Ref |
Läser in elementet som innehåller en objektreferens vid ett angivet matrisindex överst i utvärderingsstacken som typ |
| Ldelem_U1 |
Läser in elementet med typen |
| Ldelem_U2 |
Läser in elementet med typen |
| Ldelem_U4 |
Läser in elementet med typen |
| Ldelema |
Läser in adressen till matriselementet vid ett angivet matrisindex överst i utvärderingsstacken som typ |
| Ldfld |
Hittar värdet för ett fält i objektet vars referens för närvarande finns i utvärderingsstacken. |
| Ldflda |
Hittar adressen till ett fält i objektet vars referens för närvarande finns i utvärderingsstacken. |
| Ldftn |
Skickar en ohanterad pekare (typ |
| Ldind_I |
Läser in ett värde av typen |
| Ldind_I1 |
Läser in ett värde av typen |
| Ldind_I2 |
Läser in ett värde av typen |
| Ldind_I4 |
Läser in ett värde av typen |
| Ldind_I8 |
Läser in ett värde av typen |
| Ldind_R4 |
Läser in ett värde av typen |
| Ldind_R8 |
Läser in ett värde av typen |
| Ldind_Ref |
Läser in en objektreferens som en typ |
| Ldind_U1 |
Läser in ett värde av typen |
| Ldind_U2 |
Läser in ett värde av typen |
| Ldind_U4 |
Läser in ett värde av typen |
| Ldlen |
Push-överför antalet element i en nollbaserad, endimensionell matris till utvärderingsstacken. |
| Ldloc |
Läser in den lokala variabeln vid ett specifikt index till utvärderingsstacken. |
| Ldloc_0 |
Läser in den lokala variabeln vid index 0 till utvärderingsstacken. |
| Ldloc_1 |
Läser in den lokala variabeln vid index 1 till utvärderingsstacken. |
| Ldloc_2 |
Läser in den lokala variabeln vid index 2 till utvärderingsstacken. |
| Ldloc_3 |
Läser in den lokala variabeln vid index 3 på utvärderingsstacken. |
| Ldloc_S |
Läser in den lokala variabeln vid ett specifikt index till utvärderingsstacken, kort formulär. |
| Ldloca |
Läser in adressen för den lokala variabeln vid ett specifikt index till utvärderingsstacken. |
| Ldloca_S |
Läser in adressen för den lokala variabeln vid ett specifikt index till utvärderingsstacken, kort form. |
| Ldnull |
Skickar en null-referens (typ |
| Ldobj |
Kopierar värdetypsobjektet som pekas på av en adress överst i utvärderingsstacken. |
| Ldsfld |
Push-överför värdet för ett statiskt fält till utvärderingsstacken. |
| Ldsflda |
Push-överför adressen för ett statiskt fält till utvärderingsstacken. |
| Ldstr |
Push-överför en ny objektreferens till en strängliteral som lagras i metadata. |
| Ldtoken |
Konverterar en metadatatoken till dess körningsrepresentation och push-överför den till utvärderingsstacken. |
| Ldvirtftn |
Skickar en ohanterad pekare (typ |
| Leave |
Avslutar en skyddad kodregion och överför ovillkorligt kontrollen till en specifik målinstruktion. |
| Leave_S |
Avslutar en skyddad kodregion och överför ovillkorligt kontrollen till en målinstruktion (kort formulär). |
| Localloc |
Allokerar ett visst antal byte från den lokala dynamiska minnespoolen och push-överför adressen (en tillfällig pekare, typ |
| Mkrefany |
Skickar en skriven referens till en instans av en viss typ till utvärderingsstacken. |
| Mul |
Multiplicerar två värden och push-överför resultatet på utvärderingsstacken. |
| Mul_Ovf |
Multiplicerar två heltalsvärden, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| Mul_Ovf_Un |
Multiplicerar två osignerade heltalsvärden, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| Neg |
Negerar ett värde och push-överför resultatet till utvärderingsstacken. |
| Newarr |
Push-överför en objektreferens till en ny nollbaserad, endimensionell matris vars element är av en specifik typ till utvärderingsstacken. |
| Newobj |
Skapar ett nytt objekt eller en ny instans av en värdetyp och push-överför en objektreferens (typ |
| Nop |
Fyller utrymme om opcodes korrigeras. Ingen meningsfull åtgärd utförs även om en bearbetningscykel kan användas. |
| Not |
Beräknar det bitvisa komplementet av heltalsvärdet ovanpå stacken och push-överför resultatet till utvärderingsstacken som samma typ. |
| Or |
Beräkna bitvis komplementet av de två heltalsvärdena ovanpå stacken och push-överför resultatet till utvärderingsstacken. |
| Pop |
Tar bort det värde som för närvarande finns ovanpå utvärderingsstacken. |
| Prefix1 |
Detta är en reserverad instruktion. |
| Prefix2 |
Detta är en reserverad instruktion. |
| Prefix3 |
Detta är en reserverad instruktion. |
| Prefix4 |
Detta är en reserverad instruktion. |
| Prefix5 |
Detta är en reserverad instruktion. |
| Prefix6 |
Detta är en reserverad instruktion. |
| Prefix7 |
Detta är en reserverad instruktion. |
| Prefixref |
Detta är en reserverad instruktion. |
| Readonly |
Anger att den efterföljande matrisadressåtgärden inte utför någon typkontroll vid körning och att den returnerar en hanterad pekare vars föränderlighet är begränsad. |
| Refanytype |
Hämtar typtoken som är inbäddad i en typreferens. |
| Refanyval |
Hämtar adressen (typ |
| Rem |
Delar upp två värden och push-överför resten till utvärderingsstacken. |
| Rem_Un |
Delar upp två osignerade värden och push-överför resten till utvärderingsstacken. |
| Ret |
Returnerar från den aktuella metoden och push-överför ett returvärde (om det finns) från anroparens utvärderingsstack till anroparens utvärderingsstack. |
| Rethrow |
Återväxlar det aktuella undantaget. |
| Shl |
Flyttar ett heltalsvärde till vänster (i nollor) med ett angivet antal bitar och push-överför resultatet till utvärderingsstacken. |
| Shr |
Flyttar ett heltalsvärde (i tecken) till höger med ett angivet antal bitar och push-överför resultatet till utvärderingsstacken. |
| Shr_Un |
Flyttar ett osignerat heltalsvärde (i nollor) till höger med ett angivet antal bitar och push-överför resultatet till utvärderingsstacken. |
| Sizeof |
Push-överför storleken i byte av en angiven värdetyp till utvärderingsstacken. |
| Starg |
Lagrar värdet ovanpå utvärderingsstacken i argumentfacket vid ett angivet index. |
| Starg_S |
Lagrar värdet ovanpå utvärderingsstacken i argumentfacket i ett angivet index, kort formulär. |
| Stelem |
Ersätter matriselementet vid ett angivet index med värdet i utvärderingsstacken, vars typ anges i instruktionen. |
| Stelem_I |
Ersätter matriselementet vid ett angivet index med |
| Stelem_I1 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_I2 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_I4 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_I8 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_R4 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_R8 |
Ersätter matriselementet vid ett angivet index med |
| Stelem_Ref |
Ersätter matriselementet vid ett angivet index med objektets referensvärde (typ |
| Stfld |
Ersätter värdet som lagras i fältet för en objektreferens eller pekare med ett nytt värde. |
| Stind_I |
Lagrar ett värde av typen |
| Stind_I1 |
Lagrar ett värde av typen |
| Stind_I2 |
Lagrar ett värde av typen |
| Stind_I4 |
Lagrar ett värde av typen |
| Stind_I8 |
Lagrar ett värde av typen |
| Stind_R4 |
Lagrar ett värde av typen |
| Stind_R8 |
Lagrar ett värde av typen |
| Stind_Ref |
Lagrar ett objektreferensvärde på en angiven adress. |
| Stloc |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan i ett angivet index. |
| Stloc_0 |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan vid index 0. |
| Stloc_1 |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan vid index 1. |
| Stloc_2 |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan vid index 2. |
| Stloc_3 |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan vid index 3. |
| Stloc_S |
Visar det aktuella värdet överst i utvärderingsstacken och lagrar det i den lokala variabellistan i |
| Stobj |
Kopierar ett värde av en angiven typ från utvärderingsstacken till en angiven minnesadress. |
| Stsfld |
Ersätter värdet för ett statiskt fält med ett värde från utvärderingsstacken. |
| Sub |
Subtraherar ett värde från ett annat och push-överför resultatet till utvärderingsstacken. |
| Sub_Ovf |
Subtraherar ett heltalsvärde från ett annat, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| Sub_Ovf_Un |
Subtraherar ett osignerat heltalsvärde från ett annat, utför en spillkontroll och push-överför resultatet till utvärderingsstacken. |
| Switch |
Implementerar en hopptabell. |
| Tailcall |
Utför en postfixad metodanropsinstruktion så att den aktuella metodens stackram tas bort innan den faktiska anropsinstruktionen körs. |
| Throw |
Genererar undantagsobjektet som för närvarande finns i utvärderingsstacken. |
| Unaligned |
Anger att en adress som för närvarande finns ovanpå utvärderingsstacken kanske inte är justerad till den naturliga storleken på följande |
| Unbox |
Konverterar den boxade representationen av en värdetyp till dess oboxade formulär. |
| Unbox_Any |
Konverterar den boxade representationen av en typ som anges i instruktionen till dess oboxade formulär. |
| Volatile |
Anger att en adress som för närvarande finns ovanpå utvärderingsstacken kan vara instabil och att resultatet av att läsa den platsen inte kan cachelagras eller att flera butiker till den platsen inte kan ignoreras. |
| Xor |
Beräknar bitvis XOR för de två översta värdena i utvärderingsstacken och push-överför resultatet till utvärderingsstacken. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| TakesSingleByteArgument(OpCode) |
Returnerar sant eller falskt om det angivna opcode-värdet tar ett argument med en enda byte. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |