OpCodes Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan representasi bidang dari instruksi Microsoft Intermediate Language (MSIL) untuk emisi oleh ILGenerator anggota kelas (seperti 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
- Warisan
-
OpCodes
- Atribut
Contoh
Contoh berikut menunjukkan konstruksi metode dinamis menggunakan ILGenerator untuk memancarkan OpCodes
MethodBuilderke dalam .
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
Type^ CreateDynamicType()
{
array<Type^>^ctorParams = {int::typeid,int::typeid};
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyDynamicAssembly";
AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess::Run );
ModuleBuilder^ pointModule = myAsmBuilder->DefineDynamicModule( "PointModule", "Point.dll" );
TypeBuilder^ pointTypeBld = pointModule->DefineType( "Point", TypeAttributes::Public );
FieldBuilder^ xField = pointTypeBld->DefineField( "x", int::typeid, FieldAttributes::Public );
FieldBuilder^ yField = pointTypeBld->DefineField( "y", int::typeid, FieldAttributes::Public );
Type^ objType = Type::GetType( "System.Object" );
ConstructorInfo^ objCtor = objType->GetConstructor( gcnew array<Type^>(0) );
ConstructorBuilder^ pointCtor = pointTypeBld->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, ctorParams );
ILGenerator^ ctorIL = pointCtor->GetILGenerator();
// First, you build the constructor.
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Call, objCtor );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_1 );
ctorIL->Emit( OpCodes::Stfld, xField );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_2 );
ctorIL->Emit( OpCodes::Stfld, yField );
ctorIL->Emit( OpCodes::Ret );
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder^ writeStrMthd = pointTypeBld->DefineMethod( "WritePoint", MethodAttributes::Public, void::typeid, nullptr );
ILGenerator^ writeStrIL = writeStrMthd->GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// String* output through STDIN.
// ILGenerator::EmitWriteLine(String*) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL->EmitWriteLine( "The value of this current instance is:" );
// Here, you will do the hard work yourself. First, you need to create
// the String* we will be passing and obtain the correct WriteLine overload
// for said String*. In the below case, you are substituting in two values,
// so the chosen overload is Console::WriteLine(String*, Object*, Object*).
String^ inStr = "( {0}, {1})";
array<Type^>^wlParams = {String::typeid,Object::typeid,Object::typeid};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo^ writeLineMI = Console::typeid->GetMethod( "WriteLine", wlParams );
// Push the String* with the substitutions onto the stack.
// This is the first argument for WriteLine - the String* one.
writeStrIL->Emit( OpCodes::Ldstr, inStr );
// Since the second argument is an Object*, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an Object*. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, xField );
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an Object*.
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Atop the stack, you'll find our String* inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, yField );
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Now, you have all of the arguments for your call to
// Console::WriteLine(String*, Object*, Object*) atop the stack:
// the String* InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console::WriteLine(String*, Object*, Object*) with EmitCall.
writeStrIL->EmitCall( OpCodes::Call, writeLineMI, nullptr );
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL->EmitWriteLine( "The value of 'x' is:" );
writeStrIL->EmitWriteLine( xField );
writeStrIL->EmitWriteLine( "The value of 'y' is:" );
writeStrIL->EmitWriteLine( yField );
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL->Emit( OpCodes::Ret );
return pointTypeBld->CreateType();
}
int main()
{
array<Object^>^ctorParams = gcnew array<Object^>(2);
Console::Write( "Enter a integer value for X: " );
String^ myX = Console::ReadLine();
Console::Write( "Enter a integer value for Y: " );
String^ myY = Console::ReadLine();
Console::WriteLine( "---" );
ctorParams[ 0 ] = Convert::ToInt32( myX );
ctorParams[ 1 ] = Convert::ToInt32( myY );
Type^ ptType = CreateDynamicType();
Object^ ptInstance = Activator::CreateInstance( ptType, ctorParams );
ptType->InvokeMember( "WritePoint", BindingFlags::InvokeMethod, nullptr, ptInstance, gcnew array<Object^>(0) );
}
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
class EmitWriteLineDemo {
public static Type CreateDynamicType() {
Type[] ctorParams = new Type[] {typeof(int),
typeof(int)};
AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly";
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
"Point.dll");
TypeBuilder pointTypeBld = pointModule.DefineType("Point",
TypeAttributes.Public);
FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
FieldAttributes.Public);
FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
FieldAttributes.Public);
Type objType = Type.GetType("System.Object");
ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);
ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
MethodAttributes.Public,
CallingConventions.Standard,
ctorParams);
ILGenerator ctorIL = pointCtor.GetILGenerator();
// First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Call, objCtor);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Stfld, xField);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_2);
ctorIL.Emit(OpCodes.Stfld, yField);
ctorIL.Emit(OpCodes.Ret);
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
"WritePoint",
MethodAttributes.Public,
typeof(void),
null);
ILGenerator writeStrIL = writeStrMthd.GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// string output through STDIN.
// ILGenerator.EmitWriteLine(string) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:");
// Here, you will do the hard work yourself. First, you need to create
// the string we will be passing and obtain the correct WriteLine overload
// for said string. In the below case, you are substituting in two values,
// so the chosen overload is Console.WriteLine(string, object, object).
String inStr = "({0}, {1})";
Type[] wlParams = new Type[] {typeof(string),
typeof(object),
typeof(object)};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo writeLineMI = typeof(Console).GetMethod(
"WriteLine",
wlParams);
// Push the string with the substitutions onto the stack.
// This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr);
// Since the second argument is an object, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an object. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, xField);
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Atop the stack, you'll find our string inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, yField);
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Now, you have all of the arguments for your call to
// Console.WriteLine(string, object, object) atop the stack:
// the string InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:");
writeStrIL.EmitWriteLine(xField);
writeStrIL.EmitWriteLine("The value of 'y' is:");
writeStrIL.EmitWriteLine(yField);
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL.Emit(OpCodes.Ret);
return pointTypeBld.CreateType();
}
public static void Main() {
object[] ctorParams = new object[2];
Console.Write("Enter a integer value for X: ");
string myX = Console.ReadLine();
Console.Write("Enter a integer value for Y: ");
string myY = Console.ReadLine();
Console.WriteLine("---");
ctorParams[0] = Convert.ToInt32(myX);
ctorParams[1] = Convert.ToInt32(myY);
Type ptType = CreateDynamicType();
object ptInstance = Activator.CreateInstance(ptType, ctorParams);
ptType.InvokeMember("WritePoint",
BindingFlags.InvokeMethod,
null,
ptInstance,
new object[0]);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class EmitWriteLineDemo
Public Shared Function CreateDynamicType() As Type
Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
TypeAttributes.Public)
Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
GetType(Integer), _
FieldAttributes.Public)
Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
GetType(Integer), _
FieldAttributes.Public)
Dim objType As Type = Type.GetType("System.Object")
Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
MethodAttributes.Public, _
CallingConventions.Standard, _
ctorParams)
Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
' First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Call, objCtor)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_1)
ctorIL.Emit(OpCodes.Stfld, xField)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_2)
ctorIL.Emit(OpCodes.Stfld, yField)
ctorIL.Emit(OpCodes.Ret)
' Now, you'll build a method to output some information on the
' inside your dynamic class. This method will have the following
' definition in C#:
' Public Sub WritePoint()
Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
MethodAttributes.Public, _
Nothing, Nothing)
Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
' The below ILGenerator created demonstrates a few ways to create
' string output through STDIN.
' ILGenerator.EmitWriteLine(string) will generate a ldstr and a
' call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:")
' Here, you will do the hard work yourself. First, you need to create
' the string we will be passing and obtain the correct WriteLine overload
' for said string. In the below case, you are substituting in two values,
' so the chosen overload is Console.WriteLine(string, object, object).
Dim inStr As [String] = "({0}, {1})"
Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
' We need the MethodInfo to pass into EmitCall later.
Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
' Push the string with the substitutions onto the stack.
' This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr)
' Since the second argument is an object, and it corresponds to
' to the substitution for the value of our integer field, you
' need to box that field to an object. First, push a reference
' to the current instance, and then push the value stored in
' field 'x'. We need the reference to the current instance (stored
' in local argument index 0) so Ldfld can load from the correct
' instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, xField)
' Now, we execute the box opcode, which pops the value of field 'x',
' returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Atop the stack, you'll find our string inStr, followed by a reference
' to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, yField)
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Now, you have all of the arguments for your call to
' Console.WriteLine(string, object, object) atop the stack:
' the string InStr, a reference to the boxed value of 'x', and
' a reference to the boxed value of 'y'.
' Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
' Lastly, EmitWriteLine can also output the value of a field
' using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:")
writeStrIL.EmitWriteLine(xField)
writeStrIL.EmitWriteLine("The value of 'y' is:")
writeStrIL.EmitWriteLine(yField)
' Since we return no value (void), the ret opcode will not
' return the top stack value.
writeStrIL.Emit(OpCodes.Ret)
Return pointTypeBld.CreateType()
End Function 'CreateDynamicType
Public Shared Sub Main()
Dim ctorParams(1) As Object
Console.Write("Enter a integer value for X: ")
Dim myX As String = Console.ReadLine()
Console.Write("Enter a integer value for Y: ")
Dim myY As String = Console.ReadLine()
Console.WriteLine("---")
ctorParams(0) = Convert.ToInt32(myX)
ctorParams(1) = Convert.ToInt32(myY)
Dim ptType As Type = CreateDynamicType()
Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)
ptType.InvokeMember("WritePoint", _
BindingFlags.InvokeMethod, _
Nothing, ptInstance, Nothing)
End Sub
End Class
Keterangan
Untuk deskripsi terperinci tentang opcode anggota, lihat dokumentasi Common Language Infrastructure (CLI), terutama "Partisi III: Set Instruksi CIL" dan "Partisi II: Definisi metadata dan Semantik". Untuk informasi selengkapnya, lihat INFRASTRUKTUR Bahasa Umum (CLI) ECMA 335.
Bidang
Add |
Menambahkan dua nilai dan mendorong hasilnya ke tumpukan evaluasi. |
Add_Ovf |
Menambahkan dua bilangan bulat, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
Add_Ovf_Un |
Menambahkan dua nilai bilangan bulat yang tidak ditandatangani, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
And |
Menghitung bitwise AND dari dua nilai dan mendorong hasilnya ke tumpukan evaluasi. |
Arglist |
Mengembalikan penunjuk tidak terkelola ke daftar argumen metode saat ini. |
Beq |
Mentransfer kontrol ke instruksi target jika dua nilai sama. |
Beq_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika dua nilai sama. |
Bge |
Mentransfer kontrol ke instruksi target jika nilai pertama lebih besar dari atau sama dengan nilai kedua. |
Bge_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama lebih besar dari atau sama dengan nilai kedua. |
Bge_Un |
Mentransfer kontrol ke instruksi target jika nilai pertama lebih besar dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Bge_Un_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama lebih besar dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Bgt |
Mentransfer kontrol ke instruksi target jika nilai pertama lebih besar dari nilai kedua. |
Bgt_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama lebih besar dari nilai kedua. |
Bgt_Un |
Mentransfer kontrol ke instruksi target jika nilai pertama lebih besar dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Bgt_Un_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama lebih besar dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Ble |
Mentransfer kontrol ke instruksi target jika nilai pertama kurang dari atau sama dengan nilai kedua. |
Ble_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama kurang dari atau sama dengan nilai kedua. |
Ble_Un |
Mentransfer kontrol ke instruksi target jika nilai pertama kurang dari atau sama dengan nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Ble_Un_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama kurang dari atau sama dengan nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Blt |
Mentransfer kontrol ke instruksi target jika nilai pertama kurang dari nilai kedua. |
Blt_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama kurang dari nilai kedua. |
Blt_Un |
Mentransfer kontrol ke instruksi target jika nilai pertama kurang dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Blt_Un_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika nilai pertama kurang dari nilai kedua, saat membandingkan nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan. |
Bne_Un |
Mentransfer kontrol ke instruksi target ketika dua nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan tidak sama. |
Bne_Un_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) ketika dua nilai bilangan bulat yang tidak ditandatangani atau nilai float yang tidak diurutkan tidak sama. |
Box |
Mengonversi jenis nilai menjadi referensi objek (jenis |
Br |
Secara tanpa syarat mentransfer kontrol ke instruksi target. |
Br_S |
Secara tanpa syarat mentransfer kontrol ke instruksi target (bentuk pendek). |
Break |
Memberi sinyal Common Language Infrastructure (CLI) untuk memberi tahu debugger bahwa titik henti telah tersandung. |
Brfalse |
Mentransfer kontrol ke instruksi target jika |
Brfalse_S |
Mentransfer kontrol ke instruksi target jika |
Brtrue |
Mentransfer kontrol ke instruksi target jika |
Brtrue_S |
Mentransfer kontrol ke instruksi target (bentuk pendek) jika |
Call |
Memanggil metode yang ditunjukkan oleh deskriptor metode yang diteruskan. |
Calli |
Memanggil metode yang ditunjukkan pada tumpukan evaluasi (sebagai penunjuk ke titik masuk) dengan argumen yang dijelaskan oleh konvensi panggilan. |
Callvirt |
Memanggil metode yang terlambat terikat pada objek, mendorong nilai pengembalian ke tumpukan evaluasi. |
Castclass |
Upaya untuk melemparkan objek yang diteruskan oleh referensi ke kelas yang ditentukan. |
Ceq |
Membandingkan dua nilai. Jika sama, nilai bilangan bulat 1 |
Cgt |
Membandingkan dua nilai. Jika nilai pertama lebih besar dari yang kedua, nilai bilangan bulat 1 |
Cgt_Un |
Membandingkan dua nilai yang tidak ditandatangani atau tidak berurut. Jika nilai pertama lebih besar dari yang kedua, nilai bilangan bulat 1 |
Ckfinite |
ArithmeticException Melemparkan jika nilai bukan angka terbatas. |
Clt |
Membandingkan dua nilai. Jika nilai pertama kurang dari yang kedua, nilai bilangan bulat 1 |
Clt_Un |
Membandingkan nilai |
Constrained |
Membatasi jenis di mana panggilan metode virtual dilakukan. |
Conv_I |
Mengonversi nilai di atas tumpukan evaluasi menjadi |
Conv_I1 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_I2 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_I4 |
Mengonversi nilai di atas tumpukan evaluasi menjadi |
Conv_I8 |
Mengonversi nilai di atas tumpukan evaluasi menjadi |
Conv_Ovf_I |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I1 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi untuk ditandatangani |
Conv_Ovf_I1_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I2 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi untuk ditandatangani |
Conv_Ovf_I2_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I4 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I4_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I8 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_I8_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi menjadi ditandatangani |
Conv_Ovf_U |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi |
Conv_Ovf_U_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U1 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U1_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U2 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U2_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U4 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi |
Conv_Ovf_U4_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi ke |
Conv_Ovf_U8 |
Mengonversi nilai yang ditandatangani di atas tumpukan evaluasi menjadi |
Conv_Ovf_U8_Un |
Mengonversi nilai yang tidak ditandatangani di atas tumpukan evaluasi ke |
Conv_R_Un |
Mengonversi nilai bilangan bulat yang tidak ditandatangani di atas tumpukan evaluasi menjadi |
Conv_R4 |
Mengonversi nilai di atas tumpukan evaluasi menjadi |
Conv_R8 |
Mengonversi nilai di atas tumpukan evaluasi menjadi |
Conv_U |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_U1 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_U2 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_U4 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Conv_U8 |
Mengonversi nilai di atas tumpukan evaluasi ke |
Cpblk |
Menyalin byte angka tertentu dari alamat sumber ke alamat tujuan. |
Cpobj |
Menyalin jenis nilai yang terletak di alamat objek (jenis |
Div |
Membagi dua nilai dan mendorong hasilnya sebagai floating-point (jenis |
Div_Un |
Membagi dua nilai bilangan bulat yang tidak ditandatangani dan mendorong hasil ( |
Dup |
Menyalin nilai teratas saat ini pada tumpukan evaluasi, lalu mendorong salinan ke tumpukan evaluasi. |
Endfilter |
Mentransfer kontrol dari |
Endfinally |
Mentransfer kontrol dari |
Initblk |
Menginisialisasi blok memori tertentu pada alamat tertentu ke ukuran tertentu dan nilai awal. |
Initobj |
Menginisialisasi setiap bidang jenis nilai pada alamat tertentu ke referensi null atau 0 dari jenis primitif yang sesuai. |
Isinst |
Menguji apakah referensi objek (jenis |
Jmp |
Keluar dari metode saat ini dan melompat ke metode yang ditentukan. |
Ldarg |
Memuat argumen (dirujuk oleh nilai indeks tertentu) ke tumpukan. |
Ldarg_0 |
Memuat argumen pada indeks 0 ke tumpukan evaluasi. |
Ldarg_1 |
Memuat argumen pada indeks 1 ke tumpukan evaluasi. |
Ldarg_2 |
Memuat argumen pada indeks 2 ke tumpukan evaluasi. |
Ldarg_3 |
Memuat argumen pada indeks 3 ke tumpukan evaluasi. |
Ldarg_S |
Memuat argumen (dirujuk oleh indeks formulir pendek tertentu) ke tumpukan evaluasi. |
Ldarga |
Muat alamat argumen ke tumpukan evaluasi. |
Ldarga_S |
Muat alamat argumen, dalam bentuk pendek, ke tumpukan evaluasi. |
Ldc_I4 |
Mendorong nilai jenis |
Ldc_I4_0 |
Mendorong nilai bilangan bulat 0 ke tumpukan evaluasi sebagai |
Ldc_I4_1 |
Mendorong nilai bilangan bulat 1 ke tumpukan evaluasi sebagai |
Ldc_I4_2 |
Mendorong nilai bilangan bulat 2 ke tumpukan evaluasi sebagai |
Ldc_I4_3 |
Mendorong nilai bilangan bulat 3 ke tumpukan evaluasi sebagai |
Ldc_I4_4 |
Mendorong nilai bilangan bulat 4 ke tumpukan evaluasi sebagai |
Ldc_I4_5 |
Mendorong nilai bilangan bulat 5 ke tumpukan evaluasi sebagai |
Ldc_I4_6 |
Mendorong nilai bilangan bulat 6 ke tumpukan evaluasi sebagai |
Ldc_I4_7 |
Mendorong nilai bilangan bulat 7 ke tumpukan evaluasi sebagai |
Ldc_I4_8 |
Mendorong nilai bilangan bulat 8 ke tumpukan evaluasi sebagai |
Ldc_I4_M1 |
Mendorong nilai bilangan bulat -1 ke tumpukan evaluasi sebagai |
Ldc_I4_S |
Mendorong nilai yang disediakan |
Ldc_I8 |
Mendorong nilai jenis |
Ldc_R4 |
Mendorong nilai jenis |
Ldc_R8 |
Mendorong nilai jenis |
Ldelem |
Memuat elemen pada indeks array tertentu ke bagian atas tumpukan evaluasi sebagai jenis yang ditentukan dalam instruksi. |
Ldelem_I |
Memuat elemen dengan jenis |
Ldelem_I1 |
Memuat elemen dengan jenis |
Ldelem_I2 |
Memuat elemen dengan jenis |
Ldelem_I4 |
Memuat elemen dengan jenis |
Ldelem_I8 |
Memuat elemen dengan jenis |
Ldelem_R4 |
Memuat elemen dengan jenis |
Ldelem_R8 |
Memuat elemen dengan jenis |
Ldelem_Ref |
Memuat elemen yang berisi referensi objek pada indeks array tertentu ke bagian atas tumpukan evaluasi sebagai jenis |
Ldelem_U1 |
Memuat elemen dengan jenis |
Ldelem_U2 |
Memuat elemen dengan jenis |
Ldelem_U4 |
Memuat elemen dengan jenis |
Ldelema |
Memuat alamat elemen array pada indeks array tertentu ke bagian atas tumpukan evaluasi sebagai jenis |
Ldfld |
Menemukan nilai bidang dalam objek yang referensinya saat ini ada di tumpukan evaluasi. |
Ldflda |
Menemukan alamat bidang dalam objek yang referensinya saat ini ada di tumpukan evaluasi. |
Ldftn |
Mendorong penunjuk yang tidak dikelola (jenis |
Ldind_I |
Memuat nilai jenis |
Ldind_I1 |
Memuat nilai jenis |
Ldind_I2 |
Memuat nilai jenis |
Ldind_I4 |
Memuat nilai jenis |
Ldind_I8 |
Memuat nilai jenis |
Ldind_R4 |
Memuat nilai jenis |
Ldind_R8 |
Memuat nilai jenis |
Ldind_Ref |
Memuat referensi objek sebagai jenis |
Ldind_U1 |
Memuat nilai jenis |
Ldind_U2 |
Memuat nilai jenis |
Ldind_U4 |
Memuat nilai jenis |
Ldlen |
Mendorong jumlah elemen array satu dimensi berbasis nol ke tumpukan evaluasi. |
Ldloc |
Memuat variabel lokal pada indeks tertentu ke tumpukan evaluasi. |
Ldloc_0 |
Memuat variabel lokal pada indeks 0 ke tumpukan evaluasi. |
Ldloc_1 |
Memuat variabel lokal pada indeks 1 ke tumpukan evaluasi. |
Ldloc_2 |
Memuat variabel lokal pada indeks 2 ke tumpukan evaluasi. |
Ldloc_3 |
Memuat variabel lokal pada indeks 3 ke tumpukan evaluasi. |
Ldloc_S |
Memuat variabel lokal pada indeks tertentu ke tumpukan evaluasi, bentuk pendek. |
Ldloca |
Memuat alamat variabel lokal pada indeks tertentu ke tumpukan evaluasi. |
Ldloca_S |
Memuat alamat variabel lokal pada indeks tertentu ke tumpukan evaluasi, bentuk pendek. |
Ldnull |
Mendorong referensi null (jenis |
Ldobj |
Menyalin objek jenis nilai yang ditujukan ke alamat ke bagian atas tumpukan evaluasi. |
Ldsfld |
Mendorong nilai bidang statis ke tumpukan evaluasi. |
Ldsflda |
Mendorong alamat bidang statis ke tumpukan evaluasi. |
Ldstr |
Mendorong referensi objek baru ke string harfiah yang disimpan dalam metadata. |
Ldtoken |
Mengonversi token metadata ke representasi runtime-nya, mendorongnya ke tumpukan evaluasi. |
Ldvirtftn |
Mendorong penunjuk yang tidak dikelola (jenis |
Leave |
Keluar dari wilayah kode yang dilindungi, mentransfer kontrol tanpa syarat ke instruksi target tertentu. |
Leave_S |
Keluar dari wilayah kode yang dilindungi, mentransfer kontrol tanpa syarat ke instruksi target (bentuk pendek). |
Localloc |
Mengalokasikan sejumlah byte tertentu dari kumpulan memori dinamis lokal dan mendorong alamat (penunjuk sementara, jenis |
Mkrefany |
Mendorong referensi yang diketik ke instans jenis tertentu ke tumpukan evaluasi. |
Mul |
Mengalikan dua nilai dan mendorong hasil pada tumpukan evaluasi. |
Mul_Ovf |
Mengalikan dua nilai bilangan bulat, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
Mul_Ovf_Un |
Mengalikan dua nilai bilangan bulat yang tidak ditandatangani, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
Neg |
Meniadakan nilai dan mendorong hasilnya ke tumpukan evaluasi. |
Newarr |
Mendorong referensi objek ke array satu dimensi berbasis nol baru yang elemennya berjenis tertentu ke tumpukan evaluasi. |
Newobj |
Membuat objek baru atau instans baru dari jenis nilai, mendorong referensi objek (jenis |
Nop |
Mengisi ruang jika opcode di-patch. Tidak ada operasi yang bermakna yang dilakukan meskipun siklus pemrosesan dapat dikonsumsi. |
Not |
Menghitung pelengkap bitwise dari nilai bilangan bulat di atas tumpukan dan mendorong hasilnya ke tumpukan evaluasi sebagai jenis yang sama. |
Or |
Komputasi pelengkap bitwise dari dua nilai bilangan bulat di atas tumpukan dan dorong hasilnya ke tumpukan evaluasi. |
Pop |
Menghapus nilai yang saat ini berada di atas tumpukan evaluasi. |
Prefix1 |
Ini adalah instruksi khusus. |
Prefix2 |
Ini adalah instruksi khusus. |
Prefix3 |
Ini adalah instruksi khusus. |
Prefix4 |
Ini adalah instruksi khusus. |
Prefix5 |
Ini adalah instruksi khusus. |
Prefix6 |
Ini adalah instruksi khusus. |
Prefix7 |
Ini adalah instruksi khusus. |
Prefixref |
Ini adalah instruksi khusus. |
Readonly |
Menentukan bahwa operasi alamat array berikutnya tidak melakukan pemeriksaan jenis pada durasi, dan mengembalikan penunjuk terkelola yang mutabilitasnya dibatasi. |
Refanytype |
Mengambil jenis token yang disematkan dalam referensi yang diketik. |
Refanyval |
Mengambil alamat (jenis |
Rem |
Membagi dua nilai dan mendorong sisanya ke tumpukan evaluasi. |
Rem_Un |
Membagi dua nilai yang tidak ditandatangani dan mendorong sisanya ke tumpukan evaluasi. |
Ret |
Mengembalikan dari metode saat ini, mendorong nilai pengembalian (jika ada) dari tumpukan evaluasi penerima panggilan ke tumpukan evaluasi penelepon. |
Rethrow |
Menumbuhkan kembali pengecualian saat ini. |
Shl |
Menggeser nilai bilangan bulat ke kiri (dalam nol) dengan jumlah bit tertentu, mendorong hasil ke tumpukan evaluasi. |
Shr |
Menggeser nilai bilangan bulat (dalam tanda) ke kanan dengan jumlah bit tertentu, mendorong hasil ke tumpukan evaluasi. |
Shr_Un |
Menggeser nilai bilangan bulat yang tidak ditandatangani (dalam nol) ke kanan dengan jumlah bit yang ditentukan, mendorong hasilnya ke tumpukan evaluasi. |
Sizeof |
Mendorong ukuran, dalam byte, dari jenis nilai yang disediakan ke tumpukan evaluasi. |
Starg |
Menyimpan nilai di atas tumpukan evaluasi di slot argumen pada indeks tertentu. |
Starg_S |
Menyimpan nilai di atas tumpukan evaluasi di slot argumen pada indeks tertentu, bentuk pendek. |
Stelem |
Mengganti elemen array pada indeks tertentu dengan nilai pada tumpukan evaluasi, yang jenisnya ditentukan dalam instruksi. |
Stelem_I |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_I1 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_I2 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_I4 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_I8 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_R4 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_R8 |
Mengganti elemen array pada indeks tertentu dengan |
Stelem_Ref |
Mengganti elemen array pada indeks tertentu dengan nilai ref objek (jenis |
Stfld |
Mengganti nilai yang disimpan di bidang referensi objek atau penunjuk dengan nilai baru. |
Stind_I |
Menyimpan nilai jenis |
Stind_I1 |
Menyimpan nilai jenis |
Stind_I2 |
Menyimpan nilai jenis |
Stind_I4 |
Menyimpan nilai jenis |
Stind_I8 |
Menyimpan nilai jenis |
Stind_R4 |
Menyimpan nilai jenis |
Stind_R8 |
Menyimpan nilai jenis |
Stind_Ref |
Menyimpan nilai referensi objek pada alamat yang disediakan. |
Stloc |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya di daftar variabel lokal pada indeks tertentu. |
Stloc_0 |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya dalam daftar variabel lokal pada indeks 0. |
Stloc_1 |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya di daftar variabel lokal pada indeks 1. |
Stloc_2 |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya dalam daftar variabel lokal pada indeks 2. |
Stloc_3 |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya di daftar variabel lokal pada indeks 3. |
Stloc_S |
Memunculkan nilai saat ini dari bagian atas tumpukan evaluasi dan menyimpannya dalam daftar variabel lokal pada |
Stobj |
Menyalin nilai jenis tertentu dari tumpukan evaluasi ke dalam alamat memori yang disediakan. |
Stsfld |
Mengganti nilai bidang statis dengan nilai dari tumpukan evaluasi. |
Sub |
Mengurangi satu nilai dari nilai lain dan mendorong hasilnya ke tumpukan evaluasi. |
Sub_Ovf |
Mengurangi satu nilai bilangan bulat dari yang lain, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
Sub_Ovf_Un |
Mengurangi satu nilai bilangan bulat yang tidak ditandatangani dari yang lain, melakukan pemeriksaan luapan, dan mendorong hasilnya ke tumpukan evaluasi. |
Switch |
Mengimplementasikan jump table. |
Tailcall |
Melakukan instruksi panggilan metode postfixed sehingga bingkai tumpukan metode saat ini dihapus sebelum instruksi panggilan aktual dijalankan. |
Throw |
Melempar objek pengecualian yang saat ini ada di tumpukan evaluasi. |
Unaligned |
Menunjukkan bahwa alamat yang saat ini berada di atas tumpukan evaluasi mungkin tidak selaras dengan ukuran alami instruksi segera setelahnya |
Unbox |
Mengonversi representasi kotak dari jenis nilai ke formulir yang tidak dikotak. |
Unbox_Any |
Mengonversi representasi berkotak tipe yang ditentukan dalam instruksi ke formulir yang tidak dikotak. |
Volatile |
Menentukan bahwa alamat yang saat ini berada di atas tumpukan evaluasi mungkin volatil, dan hasil pembacaan lokasi tersebut tidak dapat di-cache atau bahwa beberapa penyimpanan ke lokasi tersebut tidak dapat ditekan. |
Xor |
Menghitung XOR bitwise dari dua nilai teratas pada tumpukan evaluasi, mendorong hasilnya ke tumpukan evaluasi. |
Metode
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
TakesSingleByteArgument(OpCode) |
Mengembalikan true atau false jika opcode yang disediakan mengambil argumen byte tunggal. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |