OpCodes Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A ILGenerator osztálytagok (például Emit(OpCode)) által kibocsátott Microsoft középszintű nyelv (MSIL) mezőábrázolásait tartalmazza.
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
- Öröklődés
-
OpCodes
- Attribútumok
Példák
Az alábbi példa egy dinamikus módszer ILGeneratorOpCodesMethodBuilderfelépítését mutatja be egy .
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
Megjegyzések
A tag opcode-jainak részletes leírását a Common Language Infrastructure (CLI) dokumentációjában találja, különös tekintettel a "Partition III: CIL Utasításkészlet" és a "Partition II: Metadata Definition and Semantics" (Partition II: Metadata Definition and Semantics) című dokumentációra. További információ: ECMA 335 Common Language Infrastructure (CLI).
Mezők
| Name | Description |
|---|---|
| Add |
Két értéket ad hozzá, és leküldi az eredményt a kiértékelési verembe. |
| Add_Ovf |
Két egész számot ad hozzá, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe. |
| Add_Ovf_Un |
Két nem aláírt egész számértéket ad hozzá, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe. |
| And |
Kiszámítja a bitenkénti ÉS két értéket, és leküldi az eredményt a kiértékelési verembe. |
| Arglist |
Nem felügyelt mutatót ad vissza az aktuális metódus argumentumlistájához. |
| Beq |
Átviszi a vezérlőt egy célutasításba, ha két érték egyenlő. |
| Beq_S |
A vezérlőt egy célutasításra (rövid űrlapra) továbbítja, ha két érték egyenlő. |
| Bge |
Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb vagy egyenlő a második értéknél. |
| Bge_S |
Átviszi a vezérlést egy célutasításba (rövid űrlap), ha az első érték nagyobb vagy egyenlő a második értéknél. |
| Bge_Un |
Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Bge_Un_S |
Ha az első érték nagyobb, mint a második érték, átviszi a vezérlést egy célutasításba (rövid űrlap), ha az előjel nélküli egész számértékeket vagy a rendezetlen lebegőpontos értékeket hasonlítja össze. |
| Bgt |
Átviszi a vezérlőt egy célutasításba, ha az első érték nagyobb, mint a második érték. |
| Bgt_S |
Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték nagyobb, mint a második érték. |
| Bgt_Un |
Átviszi a vezérlést egy célutasításba, ha az első érték nagyobb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Bgt_Un_S |
Ha az első érték nagyobb, mint a második érték, átviszi a vezérlést egy célutasításba (rövid űrlap), ha az előjel nélküli egész számértékeket vagy a rendezetlen lebegőpontos értékeket hasonlítja össze. |
| Ble |
Átviszi a vezérlőt egy célutasításba, ha az első érték kisebb vagy egyenlő a második értékkel. |
| Ble_S |
Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték kisebb vagy egyenlő a második értéknél. |
| Ble_Un |
Átviszi a vezérlést egy célutasításba, ha az első érték kisebb vagy egyenlő a második értéknél, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Ble_Un_S |
Átviszi az irányítást egy célutasításba (rövid űrlap), ha az első érték kisebb vagy egyenlő a második értéknél, az aláíratlan egész számok vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Blt |
Átviszi a vezérlőt egy célutasításba, ha az első érték kisebb, mint a második érték. |
| Blt_S |
Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha az első érték kisebb, mint a második érték. |
| Blt_Un |
Átviszi a vezérlést egy célutasításba, ha az első érték kisebb, mint a második érték, az aláíratlan egész számok vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Blt_Un_S |
Átviszi a vezérlést egy célutasításba (rövid űrlap), ha az első érték kisebb, mint a második érték, az aláíratlan egész számértékek vagy a rendezetlen lebegőpontos értékek összehasonlításakor. |
| Bne_Un |
Átviszi a vezérlést egy célutasításba, ha két nem aláírt egész számérték vagy rendezetlen lebegőpontos érték nem egyenlő. |
| Bne_Un_S |
Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha két előjel nélküli egész szám vagy rendezetlen lebegőpontos érték nem egyenlő. |
| Box |
Egy értéktípust objektumhivatkozássá alakít át (típus |
| Br |
Feltétel nélkül átviszi az irányítást egy célutasításba. |
| Br_S |
Feltétel nélkül átviszi az irányítást egy célutasításba (rövid űrlap). |
| Break |
Jelzi a Common Language Infrastructure (CLI) számára, hogy tájékoztassa a hibakeresőt arról, hogy egy töréspont megbotlott. |
| Brfalse |
Átviszi az irányítást egy célutasításba, ha |
| Brfalse_S |
A vezérlőt átviszi egy célutasításba, ha |
| Brtrue |
Átviszi a vezérlőt egy célutasításba, ha |
| Brtrue_S |
Átviszi a vezérlőt egy célutasításba (rövid űrlap), ha |
| Call |
Meghívja az átadott metódusleíró által jelzett metódust. |
| Calli |
Meghívja a kiértékelési veremen feltüntetett metódust (belépési pontra mutató mutatóként) a hívási konvenciók által leírt argumentumokkal. |
| Callvirt |
Egy objektum késői kötésű metódusát hívja meg, amely a visszatérési értéket a kiértékelési verembe küldi. |
| Castclass |
A megadott osztályra mutató hivatkozással átadott objektumot próbál meg leadni. |
| Ceq |
Két értéket hasonlít össze. Ha egyenlőek, a rendszer az 1 |
| Cgt |
Két értéket hasonlít össze. Ha az első érték nagyobb, mint a második, a rendszer az 1 |
| Cgt_Un |
Két nem aláírt vagy rendezetlen értéket hasonlít össze. Ha az első érték nagyobb, mint a második, a rendszer az 1 |
| Ckfinite |
Dob, ArithmeticException ha az érték nem véges szám. |
| Clt |
Két értéket hasonlít össze. Ha az első érték kisebb, mint a második, a rendszer az 1 |
| Clt_Un |
Összehasonlítja a nem aláírt vagy rendezetlen értékeket |
| Constrained |
Korlátozza a virtuális metódus hívásának típusát. |
| Conv_I |
A kiértékelési verem tetején lévő értéket átalakítja a következőre |
| Conv_I1 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_I2 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_I4 |
A kiértékelési verem tetején lévő értéket átalakítja a következőre |
| Conv_I8 |
A kiértékelési verem tetején lévő értéket átalakítja a következőre |
| Conv_Ovf_I |
A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá |
| Conv_Ovf_I_Un |
A kiértékelési verem tetején lévő aláíratlan értéket aláírt |
| Conv_Ovf_I1 |
A kiértékelési verem tetején lévő aláírt értéket aláírtsá |
| Conv_Ovf_I1_Un |
A kiértékelési verem tetején lévő aláíratlan értéket aláírtsá |
| Conv_Ovf_I2 |
A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá |
| Conv_Ovf_I2_Un |
A kiértékelési verem tetején lévő aláíratlan értéket aláírtsá |
| Conv_Ovf_I4 |
A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá |
| Conv_Ovf_I4_Un |
A kiértékelési verem tetején lévő aláíratlan értéket aláírt |
| Conv_Ovf_I8 |
A kiértékelési verem tetején lévő aláírt értéket átalakítja aláírtsá |
| Conv_Ovf_I8_Un |
A kiértékelési verem tetején lévő aláíratlan értéket aláírt |
| Conv_Ovf_U |
A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó |
| Conv_Ovf_U_Un |
A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó |
| Conv_Ovf_U1 |
Átalakítja a kiértékelési verem tetején lévő aláírt értéket a túlcsordulásra dobott |
| Conv_Ovf_U1_Un |
Átalakítja a kiértékelési verem tetején lévő aláíratlan értéket a túlcsordulást jelző |
| Conv_Ovf_U2 |
Átalakítja a kiértékelési verem tetején lévő aláírt értéket a túlcsordulásra dobott |
| Conv_Ovf_U2_Un |
Átalakítja a kiértékelési verem tetején lévő aláíratlan értéket a túlcsordulást jelző |
| Conv_Ovf_U4 |
A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó |
| Conv_Ovf_U4_Un |
A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó |
| Conv_Ovf_U8 |
A kiértékelési verem tetején lévő aláírt értéket átalakítja túlcsordulásra dobó |
| Conv_Ovf_U8_Un |
A kiértékelési verem tetején lévő aláíratlan értéket átalakítja túlcsordulásra dobó |
| Conv_R_Un |
A kiértékelési verem tetején lévő aláíratlan egész szám értékét átalakítja a következőre |
| Conv_R4 |
A kiértékelési verem tetején lévő értéket átalakítja a következőre |
| Conv_R8 |
A kiértékelési verem tetején lévő értéket átalakítja a következőre |
| Conv_U |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_U1 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_U2 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_U4 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Conv_U8 |
A kiértékelési verem tetején lévő értéket átalakítja a kiértékelési veremre |
| Cpblk |
Egy megadott számú bájtot másol egy forráscímről egy célcímre. |
| Cpobj |
Másolja az objektum címében található értéktípust (típus |
| Div |
Két értéket oszt el, és az eredményt lebegőpontos (típus |
| Div_Un |
Két aláíratlan egész számot oszt el, és leküldi az eredményt ( |
| Dup |
Másolja át az aktuális legfelső értéket a kiértékelési veremen, majd leküldi a másolatot a kiértékelési verembe. |
| Endfilter |
A kivétel záradékából visszaviszi az |
| Endfinally |
A kivételblokk vagy |
| Initblk |
Inicializál egy megadott memóriablokkot egy adott címen egy adott méretre és kezdeti értékre. |
| Initobj |
Inicializálja az értéktípus minden mezőjét egy megadott címen null hivatkozásra vagy a megfelelő primitív típus 0 értékére. |
| Isinst |
Ellenőrzi, hogy egy objektumhivatkozás (típus |
| Jmp |
Kilép az aktuális metódusból, és a megadott metódusra ugrik. |
| Ldarg |
Betölt egy argumentumot (egy megadott indexértékre hivatkozva) a verembe. |
| Ldarg_0 |
Betölti az argumentumot a 0 indexnél a kiértékelési verembe. |
| Ldarg_1 |
Betölti az argumentumot az 1. indexben a kiértékelési verembe. |
| Ldarg_2 |
Betölti a 2. index argumentumát a kiértékelési verembe. |
| Ldarg_3 |
Betölti a 3. index argumentumát a kiértékelési verembe. |
| Ldarg_S |
Betölti az argumentumot (egy adott rövid űrlapindex hivatkozik rá) a kiértékelési verembe. |
| Ldarga |
Betölt egy argumentumcímet a kiértékelési verembe. |
| Ldarga_S |
Töltsön be egy argumentumcímet rövid formában a kiértékelési verembe. |
| Ldc_I4 |
A megadott típusú |
| Ldc_I4_0 |
A 0 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_1 |
Az 1 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_2 |
A 2 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_3 |
A 3 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_4 |
A 4 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_5 |
Az 5 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_6 |
A 6 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_7 |
A 7 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_8 |
A 8 egész szám értékét leküldi a kiértékelési verembe |
| Ldc_I4_M1 |
Leküldi a -1 egész értékét a kiértékelési verembe |
| Ldc_I4_S |
Leküldi a megadott |
| Ldc_I8 |
A megadott típusú |
| Ldc_R4 |
Egy megadott típusértéket |
| Ldc_R8 |
Egy megadott típusértéket |
| Ldelem |
Betölti az elemet egy adott tömbindexen a kiértékelési verem tetejére az utasításban megadott típusként. |
| Ldelem_I |
Betölti az elemet egy adott tömbindex típusával |
| Ldelem_I1 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_I2 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_I4 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_I8 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_R4 |
Betölti a típussal rendelkező |
| Ldelem_R8 |
Betölti a típussal rendelkező |
| Ldelem_Ref |
Betölti egy adott tömbindex objektumhivatkozását tartalmazó elemet a kiértékelési verem tetejére típusként |
| Ldelem_U1 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_U2 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelem_U4 |
Betölti az elemet egy megadott tömbindex típusával |
| Ldelema |
Betölti a tömbelem címét egy adott tömbindexen a kiértékelési verem tetejére típusként |
| Ldfld |
Megkeresi annak az objektumnak a mezőjét, amelynek hivatkozása jelenleg a kiértékelési veremen található. |
| Ldflda |
Megkeresi annak az objektumnak a címét, amelynek hivatkozása jelenleg a kiértékelési veremen található. |
| Ldftn |
Nem felügyelt mutatót (típust |
| Ldind_I |
Egy típus |
| Ldind_I1 |
Egy típus |
| Ldind_I2 |
Egy típus |
| Ldind_I4 |
Egy típus |
| Ldind_I8 |
Egy típus |
| Ldind_R4 |
Egy típus |
| Ldind_R8 |
Egy típus |
| Ldind_Ref |
Egy objektumhivatkozást típusként |
| Ldind_U1 |
Egy típus |
| Ldind_U2 |
Egy típus |
| Ldind_U4 |
Egy típus |
| Ldlen |
Egy nulla alapú, egydimenziós tömb elemeinek számát leküldi a kiértékelési verembe. |
| Ldloc |
Betölti a helyi változót egy adott indexen a kiértékelési verembe. |
| Ldloc_0 |
Betölti a helyi változót a 0 indexnél a kiértékelési verembe. |
| Ldloc_1 |
Betölti a helyi változót az 1. indexnél a kiértékelési verembe. |
| Ldloc_2 |
Betölti a helyi változót a 2. indexnél a kiértékelési verembe. |
| Ldloc_3 |
Betölti a helyi változót a 3. indexben a kiértékelési verembe. |
| Ldloc_S |
Betölti a helyi változót egy adott indexen a kiértékelési verembe, rövid formában. |
| Ldloca |
Betölti a helyi változó címét egy adott indexben a kiértékelési verembe. |
| Ldloca_S |
Betölti a helyi változó címét egy adott indexben a kiértékelési verembe, rövid formában. |
| Ldnull |
Null referenciát (típust |
| Ldobj |
Másolja a kiértékelési verem tetejére egy cím által mutatott értéktípus-objektumot. |
| Ldsfld |
Egy statikus mező értékét leküldi a kiértékelési verembe. |
| Ldsflda |
Leküldi egy statikus mező címét a kiértékelési verembe. |
| Ldstr |
Új objektumhivatkozás leküldése a metaadatokban tárolt sztringkonstansra. |
| Ldtoken |
A metaadat-jogkivonatot futtatókörnyezeti ábrázolássá alakítja át, és a kiértékelési verembe küldi. |
| Ldvirtftn |
Nem felügyelt mutatót (típust |
| Leave |
Kilép egy kód védett régiójából, és feltétel nélkül átadja a vezérlést egy adott célutasításnak. |
| Leave_S |
Kilép a kód védett régiójából, és feltétel nélkül átadja a vezérlőt egy célutasításnak (rövid űrlap). |
| Localloc |
Bizonyos számú bájtot foglal le a helyi dinamikus memóriakészletből, és leküldi az első lefoglalt bájt címét (átmeneti mutató, típus |
| Mkrefany |
Egy adott típusú példányra mutató beírt hivatkozást küld a kiértékelési verembe. |
| Mul |
Két értéket szoroz meg, és leküldi az eredményt a kiértékelési verembe. |
| Mul_Ovf |
Két egész szám megszorzása, túlcsordulás ellenőrzése, és az eredmény leküldése a kiértékelési verembe. |
| Mul_Ovf_Un |
Két aláíratlan egész szám értékét szorozza meg, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe. |
| Neg |
Érvénytelenít egy értéket, és leküldi az eredményt a kiértékelési verembe. |
| Newarr |
Egy objektumhivatkozást küld egy új, nulla alapú, egydimenziós tömbbe, amelynek elemei egy adott típusúak a kiértékelési verembe. |
| Newobj |
Létrehoz egy új objektumot vagy egy értéktípus új példányát, és egy objektumhivatkozást (típust |
| Nop |
Kitölti a helyet, ha az opcode-k javításra kerülnek. Nincs értelmes művelet, bár a feldolgozási ciklus felhasználható. |
| Not |
Kiszámítja az egész szám bitenkénti kiegészítését a verem tetején, és az eredményt a kiértékelési verembe küldi, ugyanazzal a típussal. |
| Or |
Számítsa ki a verem tetején lévő két egész szám bitenkénti kiegészítését, és küldje el az eredményt a kiértékelési verembe. |
| Pop |
Eltávolítja a kiértékelési verem tetején található értéket. |
| Prefix1 |
Ez egy fenntartott utasítás. |
| Prefix2 |
Ez egy fenntartott utasítás. |
| Prefix3 |
Ez egy fenntartott utasítás. |
| Prefix4 |
Ez egy fenntartott utasítás. |
| Prefix5 |
Ez egy fenntartott utasítás. |
| Prefix6 |
Ez egy fenntartott utasítás. |
| Prefix7 |
Ez egy fenntartott utasítás. |
| Prefixref |
Ez egy fenntartott utasítás. |
| Readonly |
Megadja, hogy az ezt követő tömbcímművelet futásidőben nem végez típusellenőrzést, és egy olyan felügyelt mutatót ad vissza, amelynek a módosíthatósága korlátozott. |
| Refanytype |
Beolvassa a gépelt hivatkozásba beágyazott típus jogkivonatot. |
| Refanyval |
Beolvassa a gépelt hivatkozásba beágyazott címet (típust |
| Rem |
Két értéket oszt el, és a fennmaradó részt a kiértékelési verembe küldi. |
| Rem_Un |
Két aláíratlan értéket oszt el, és a fennmaradó részt a kiértékelési verembe osztja. |
| Ret |
Az aktuális metódusból ad vissza egy visszatérési értéket (ha van) a hívó kiértékelési vereméből a hívó kiértékelési veremébe. |
| Rethrow |
Az aktuális kivétel újrafedése. |
| Shl |
Egy egész számot balra (nullákban) helyez el megadott számú bit használatával, és az eredményt a kiértékelési verembe helyezzük. |
| Shr |
Egy egész számot (előjelben) jobbra tol egy megadott számú bit segítségével, és az eredményt a kiértékelési verembe küldi. |
| Shr_Un |
Egy előjel nélküli egész számot (nullákban) jobbra tol egy megadott számú bit segítségével, és az eredményt a kiértékelési verembe küldi. |
| Sizeof |
Bájtban leküldi a megadott értéktípus méretét a kiértékelési verembe. |
| Starg |
A kiértékelési verem tetején lévő értéket egy adott index argumentumhelyén tárolja. |
| Starg_S |
A kiértékelési verem tetején lévő értéket egy megadott indexben, rövid formában tárolja az argumentumhelyen. |
| Stelem |
Egy adott index tömbelemét lecseréli a kiértékelési verem értékére, amelynek típusa az utasításban van megadva. |
| Stelem_I |
Egy adott index tömbelemét lecseréli a |
| Stelem_I1 |
Egy adott index tömbelemét lecseréli a |
| Stelem_I2 |
Egy adott index tömbelemét lecseréli a |
| Stelem_I4 |
Egy adott index tömbelemét lecseréli a |
| Stelem_I8 |
Egy adott index tömbelemét lecseréli a |
| Stelem_R4 |
Egy adott index tömbelemét lecseréli a |
| Stelem_R8 |
Egy adott index tömbelemét lecseréli a |
| Stelem_Ref |
Egy adott index tömbelemét lecseréli a kiértékelési verem objektum-újrafértékére (típusára |
| Stfld |
Egy objektumhivatkozás vagy mutató mezőjében tárolt értéket lecseréli egy új értékre. |
| Stind_I |
Egy megadott címen tárol egy típusértéket |
| Stind_I1 |
Egy megadott címen tárol egy típusértéket |
| Stind_I2 |
Egy megadott címen tárol egy típusértéket |
| Stind_I4 |
Egy megadott címen tárol egy típusértéket |
| Stind_I8 |
Egy megadott címen tárol egy típusértéket |
| Stind_R4 |
Egy megadott címen tárol egy típusértéket |
| Stind_R8 |
Egy megadott címen tárol egy típusértéket |
| Stind_Ref |
Objektum-referenciaértéket tárol egy megadott címen. |
| Stloc |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és egy adott index helyi változólistájában tárolja. |
| Stloc_0 |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában, a 0. indexben tárolja. |
| Stloc_1 |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és az 1. index helyi változólistájában tárolja. |
| Stloc_2 |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában, a 2. indexben tárolja. |
| Stloc_3 |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a 3. index helyi változólistájában tárolja. |
| Stloc_S |
Az aktuális érték a kiértékelési verem tetejéről jelenik meg, és a helyi változólistában |
| Stobj |
Egy megadott típusú értéket másol a kiértékelési veremből egy megadott memóriacímbe. |
| Stsfld |
Egy statikus mező értékét lecseréli a kiértékelési verem értékére. |
| Sub |
Kivon egy értéket a másikból, és leküldi az eredményt a kiértékelési verembe. |
| Sub_Ovf |
Kivon egy egész számot egy másikból, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe. |
| Sub_Ovf_Un |
Kivon egy előjel nélküli egész számot egy másikból, túlcsordulás-ellenőrzést végez, és leküldi az eredményt a kiértékelési verembe. |
| Switch |
Ugrótáblát implementál. |
| Tailcall |
Postfixed metódushívási utasítást hajt végre, hogy az aktuális metódus veremkerete el legyen távolítva a tényleges hívásutasítás végrehajtása előtt. |
| Throw |
A kiértékelési veremen jelenleg a kivételobjektumot dobja. |
| Unaligned |
Azt jelzi, hogy a kiértékelési verem tetején található cím nem feltétlenül igazodik a közvetlenül következő |
| Unbox |
Átalakítja egy értéktípus dobozos ábrázolását a nem beérkezett űrlapra. |
| Unbox_Any |
Átalakítja az utasításban megadott típus dobozos ábrázolását a nem beérkezett űrlapra. |
| Volatile |
Azt határozza meg, hogy a kiértékelési verem tetején található cím változékony lehet, és a hely olvasásának eredményei nem gyorsítótárazhatók, vagy hogy az adott helyen található több tároló nem tiltható le. |
| Xor |
Kiszámítja a kiértékelési verem első két értékének bitenkénti XOR-értékét, és az eredményt a kiértékelési verembe küldi. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| TakesSingleByteArgument(OpCode) |
Igaz vagy hamis értéket ad vissza, ha a megadott opcode egyetlen bájt argumentumot használ. |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |