OpCodes クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ILGenerator クラス メンバー (Emit(OpCode) など) による出力に対する MSIL (Microsoft Intermediate Language) 命令のフィールド表現を提供します。
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
- 継承
-
OpCodes
- 属性
例
次の例では、 を使用して ILGenerator に出力 OpCodes
する動的メソッドの構築を MethodBuilder示します。
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
Type^ CreateDynamicType()
{
array<Type^>^ctorParams = {int::typeid,int::typeid};
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyDynamicAssembly";
AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( myAsmName, AssemblyBuilderAccess::Run );
ModuleBuilder^ pointModule = myAsmBuilder->DefineDynamicModule( "PointModule", "Point.dll" );
TypeBuilder^ pointTypeBld = pointModule->DefineType( "Point", TypeAttributes::Public );
FieldBuilder^ xField = pointTypeBld->DefineField( "x", int::typeid, FieldAttributes::Public );
FieldBuilder^ yField = pointTypeBld->DefineField( "y", int::typeid, FieldAttributes::Public );
Type^ objType = Type::GetType( "System.Object" );
ConstructorInfo^ objCtor = objType->GetConstructor( gcnew array<Type^>(0) );
ConstructorBuilder^ pointCtor = pointTypeBld->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, ctorParams );
ILGenerator^ ctorIL = pointCtor->GetILGenerator();
// First, you build the constructor.
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Call, objCtor );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_1 );
ctorIL->Emit( OpCodes::Stfld, xField );
ctorIL->Emit( OpCodes::Ldarg_0 );
ctorIL->Emit( OpCodes::Ldarg_2 );
ctorIL->Emit( OpCodes::Stfld, yField );
ctorIL->Emit( OpCodes::Ret );
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder^ writeStrMthd = pointTypeBld->DefineMethod( "WritePoint", MethodAttributes::Public, void::typeid, nullptr );
ILGenerator^ writeStrIL = writeStrMthd->GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// String* output through STDIN.
// ILGenerator::EmitWriteLine(String*) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL->EmitWriteLine( "The value of this current instance is:" );
// Here, you will do the hard work yourself. First, you need to create
// the String* we will be passing and obtain the correct WriteLine overload
// for said String*. In the below case, you are substituting in two values,
// so the chosen overload is Console::WriteLine(String*, Object*, Object*).
String^ inStr = "( {0}, {1})";
array<Type^>^wlParams = {String::typeid,Object::typeid,Object::typeid};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo^ writeLineMI = Console::typeid->GetMethod( "WriteLine", wlParams );
// Push the String* with the substitutions onto the stack.
// This is the first argument for WriteLine - the String* one.
writeStrIL->Emit( OpCodes::Ldstr, inStr );
// Since the second argument is an Object*, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an Object*. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, xField );
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an Object*.
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Atop the stack, you'll find our String* inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL->Emit( OpCodes::Ldarg_0 );
writeStrIL->Emit( OpCodes::Ldfld, yField );
writeStrIL->Emit( OpCodes::Box, int::typeid );
// Now, you have all of the arguments for your call to
// Console::WriteLine(String*, Object*, Object*) atop the stack:
// the String* InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console::WriteLine(String*, Object*, Object*) with EmitCall.
writeStrIL->EmitCall( OpCodes::Call, writeLineMI, nullptr );
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL->EmitWriteLine( "The value of 'x' is:" );
writeStrIL->EmitWriteLine( xField );
writeStrIL->EmitWriteLine( "The value of 'y' is:" );
writeStrIL->EmitWriteLine( yField );
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL->Emit( OpCodes::Ret );
return pointTypeBld->CreateType();
}
int main()
{
array<Object^>^ctorParams = gcnew array<Object^>(2);
Console::Write( "Enter a integer value for X: " );
String^ myX = Console::ReadLine();
Console::Write( "Enter a integer value for Y: " );
String^ myY = Console::ReadLine();
Console::WriteLine( "---" );
ctorParams[ 0 ] = Convert::ToInt32( myX );
ctorParams[ 1 ] = Convert::ToInt32( myY );
Type^ ptType = CreateDynamicType();
Object^ ptInstance = Activator::CreateInstance( ptType, ctorParams );
ptType->InvokeMember( "WritePoint", BindingFlags::InvokeMethod, nullptr, ptInstance, gcnew array<Object^>(0) );
}
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
class EmitWriteLineDemo {
public static Type CreateDynamicType() {
Type[] ctorParams = new Type[] {typeof(int),
typeof(int)};
AppDomain myDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyDynamicAssembly";
AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
myAsmName,
AssemblyBuilderAccess.Run);
ModuleBuilder pointModule = myAsmBuilder.DefineDynamicModule("PointModule",
"Point.dll");
TypeBuilder pointTypeBld = pointModule.DefineType("Point",
TypeAttributes.Public);
FieldBuilder xField = pointTypeBld.DefineField("x", typeof(int),
FieldAttributes.Public);
FieldBuilder yField = pointTypeBld.DefineField("y", typeof(int),
FieldAttributes.Public);
Type objType = Type.GetType("System.Object");
ConstructorInfo objCtor = objType.GetConstructor(new Type[0]);
ConstructorBuilder pointCtor = pointTypeBld.DefineConstructor(
MethodAttributes.Public,
CallingConventions.Standard,
ctorParams);
ILGenerator ctorIL = pointCtor.GetILGenerator();
// First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Call, objCtor);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_1);
ctorIL.Emit(OpCodes.Stfld, xField);
ctorIL.Emit(OpCodes.Ldarg_0);
ctorIL.Emit(OpCodes.Ldarg_2);
ctorIL.Emit(OpCodes.Stfld, yField);
ctorIL.Emit(OpCodes.Ret);
// Now, you'll build a method to output some information on the
// inside your dynamic class. This method will have the following
// definition in C#:
// public void WritePoint()
MethodBuilder writeStrMthd = pointTypeBld.DefineMethod(
"WritePoint",
MethodAttributes.Public,
typeof(void),
null);
ILGenerator writeStrIL = writeStrMthd.GetILGenerator();
// The below ILGenerator created demonstrates a few ways to create
// string output through STDIN.
// ILGenerator.EmitWriteLine(string) will generate a ldstr and a
// call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:");
// Here, you will do the hard work yourself. First, you need to create
// the string we will be passing and obtain the correct WriteLine overload
// for said string. In the below case, you are substituting in two values,
// so the chosen overload is Console.WriteLine(string, object, object).
String inStr = "({0}, {1})";
Type[] wlParams = new Type[] {typeof(string),
typeof(object),
typeof(object)};
// We need the MethodInfo to pass into EmitCall later.
MethodInfo writeLineMI = typeof(Console).GetMethod(
"WriteLine",
wlParams);
// Push the string with the substitutions onto the stack.
// This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr);
// Since the second argument is an object, and it corresponds to
// to the substitution for the value of our integer field, you
// need to box that field to an object. First, push a reference
// to the current instance, and then push the value stored in
// field 'x'. We need the reference to the current instance (stored
// in local argument index 0) so Ldfld can load from the correct
// instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, xField);
// Now, we execute the box opcode, which pops the value of field 'x',
// returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Atop the stack, you'll find our string inStr, followed by a reference
// to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0);
writeStrIL.Emit(OpCodes.Ldfld, yField);
writeStrIL.Emit(OpCodes.Box, typeof(int));
// Now, you have all of the arguments for your call to
// Console.WriteLine(string, object, object) atop the stack:
// the string InStr, a reference to the boxed value of 'x', and
// a reference to the boxed value of 'y'.
// Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, null);
// Lastly, EmitWriteLine can also output the value of a field
// using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:");
writeStrIL.EmitWriteLine(xField);
writeStrIL.EmitWriteLine("The value of 'y' is:");
writeStrIL.EmitWriteLine(yField);
// Since we return no value (void), the ret opcode will not
// return the top stack value.
writeStrIL.Emit(OpCodes.Ret);
return pointTypeBld.CreateType();
}
public static void Main() {
object[] ctorParams = new object[2];
Console.Write("Enter a integer value for X: ");
string myX = Console.ReadLine();
Console.Write("Enter a integer value for Y: ");
string myY = Console.ReadLine();
Console.WriteLine("---");
ctorParams[0] = Convert.ToInt32(myX);
ctorParams[1] = Convert.ToInt32(myY);
Type ptType = CreateDynamicType();
object ptInstance = Activator.CreateInstance(ptType, ctorParams);
ptType.InvokeMember("WritePoint",
BindingFlags.InvokeMethod,
null,
ptInstance,
new object[0]);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
_
Class EmitWriteLineDemo
Public Shared Function CreateDynamicType() As Type
Dim ctorParams() As Type = {GetType(Integer), GetType(Integer)}
Dim myDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyDynamicAssembly"
Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.RunAndSave)
Dim pointModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("PointModule", "Point.dll")
Dim pointTypeBld As TypeBuilder = pointModule.DefineType("Point", _
TypeAttributes.Public)
Dim xField As FieldBuilder = pointTypeBld.DefineField("x", _
GetType(Integer), _
FieldAttributes.Public)
Dim yField As FieldBuilder = pointTypeBld.DefineField("y", _
GetType(Integer), _
FieldAttributes.Public)
Dim objType As Type = Type.GetType("System.Object")
Dim objCtor As ConstructorInfo = objType.GetConstructor(New Type(){})
Dim pointCtor As ConstructorBuilder = pointTypeBld.DefineConstructor( _
MethodAttributes.Public, _
CallingConventions.Standard, _
ctorParams)
Dim ctorIL As ILGenerator = pointCtor.GetILGenerator()
' First, you build the constructor.
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Call, objCtor)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_1)
ctorIL.Emit(OpCodes.Stfld, xField)
ctorIL.Emit(OpCodes.Ldarg_0)
ctorIL.Emit(OpCodes.Ldarg_2)
ctorIL.Emit(OpCodes.Stfld, yField)
ctorIL.Emit(OpCodes.Ret)
' Now, you'll build a method to output some information on the
' inside your dynamic class. This method will have the following
' definition in C#:
' Public Sub WritePoint()
Dim writeStrMthd As MethodBuilder = pointTypeBld.DefineMethod("WritePoint", _
MethodAttributes.Public, _
Nothing, Nothing)
Dim writeStrIL As ILGenerator = writeStrMthd.GetILGenerator()
' The below ILGenerator created demonstrates a few ways to create
' string output through STDIN.
' ILGenerator.EmitWriteLine(string) will generate a ldstr and a
' call to WriteLine for you.
writeStrIL.EmitWriteLine("The value of this current instance is:")
' Here, you will do the hard work yourself. First, you need to create
' the string we will be passing and obtain the correct WriteLine overload
' for said string. In the below case, you are substituting in two values,
' so the chosen overload is Console.WriteLine(string, object, object).
Dim inStr As [String] = "({0}, {1})"
Dim wlParams() As Type = {GetType(String), GetType(Object), GetType(Object)}
' We need the MethodInfo to pass into EmitCall later.
Dim writeLineMI As MethodInfo = GetType(Console).GetMethod("WriteLine", wlParams)
' Push the string with the substitutions onto the stack.
' This is the first argument for WriteLine - the string one.
writeStrIL.Emit(OpCodes.Ldstr, inStr)
' Since the second argument is an object, and it corresponds to
' to the substitution for the value of our integer field, you
' need to box that field to an object. First, push a reference
' to the current instance, and then push the value stored in
' field 'x'. We need the reference to the current instance (stored
' in local argument index 0) so Ldfld can load from the correct
' instance (this one).
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, xField)
' Now, we execute the box opcode, which pops the value of field 'x',
' returning a reference to the integer value boxed as an object.
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Atop the stack, you'll find our string inStr, followed by a reference
' to the boxed value of 'x'. Now, you need to likewise box field 'y'.
writeStrIL.Emit(OpCodes.Ldarg_0)
writeStrIL.Emit(OpCodes.Ldfld, yField)
writeStrIL.Emit(OpCodes.Box, GetType(Integer))
' Now, you have all of the arguments for your call to
' Console.WriteLine(string, object, object) atop the stack:
' the string InStr, a reference to the boxed value of 'x', and
' a reference to the boxed value of 'y'.
' Call Console.WriteLine(string, object, object) with EmitCall.
writeStrIL.EmitCall(OpCodes.Call, writeLineMI, Nothing)
' Lastly, EmitWriteLine can also output the value of a field
' using the overload EmitWriteLine(FieldInfo).
writeStrIL.EmitWriteLine("The value of 'x' is:")
writeStrIL.EmitWriteLine(xField)
writeStrIL.EmitWriteLine("The value of 'y' is:")
writeStrIL.EmitWriteLine(yField)
' Since we return no value (void), the ret opcode will not
' return the top stack value.
writeStrIL.Emit(OpCodes.Ret)
Return pointTypeBld.CreateType()
End Function 'CreateDynamicType
Public Shared Sub Main()
Dim ctorParams(1) As Object
Console.Write("Enter a integer value for X: ")
Dim myX As String = Console.ReadLine()
Console.Write("Enter a integer value for Y: ")
Dim myY As String = Console.ReadLine()
Console.WriteLine("---")
ctorParams(0) = Convert.ToInt32(myX)
ctorParams(1) = Convert.ToInt32(myY)
Dim ptType As Type = CreateDynamicType()
Dim ptInstance As Object = Activator.CreateInstance(ptType, ctorParams)
ptType.InvokeMember("WritePoint", _
BindingFlags.InvokeMethod, _
Nothing, ptInstance, Nothing)
End Sub
End Class
注釈
メンバーオペコードの詳細については、共通言語インフラストラクチャ (CLI) のドキュメント(特に「Partition III: CIL Instruction Set」および「Partition II: Metadata Definition and Semantics」) を参照してください。 詳細については、「 ECMA 335 共通言語インフラストラクチャ (CLI)」を参照してください。
フィールド
Add |
2 つの値を加算し、結果を評価スタックにプッシュします。 |
Add_Ovf |
2 つの整数値を加算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Add_Ovf_Un |
2 つの符号なし整数値を加算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
And |
2 つの値のビットごとの AND を計算し、結果を評価スタックにプッシュします。 |
Arglist |
現在のメソッドの引数リストへのアンマネージ ポインターを返します。 |
Beq |
2 つの値が等しい場合は、ターゲット命令に制御を転送します。 |
Beq_S |
2 つの値が等しい場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Bge |
最初の値が 2 番目の値以上の場合は、ターゲット命令に制御を転送します。 |
Bge_S |
最初の値が 2 番目の値以上の場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Bge_Un |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値を超える場合は、ターゲット命令に制御を転送します。 |
Bge_Un_S |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値を超える場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Bgt |
最初の値が 2 番目の値を超える場合は、ターゲット命令に制御を転送します。 |
Bgt_S |
最初の値が 2 番目の値を超える場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Bgt_Un |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値を超える場合は、ターゲット命令に制御を転送します。 |
Bgt_Un_S |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値を超える場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Ble |
最初の値が 2 番目の値以下の場合は、ターゲット命令に制御を転送します。 |
Ble_S |
最初の値が 2 番目の値以下の場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Ble_Un |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値以下の場合は、ターゲット命令に制御を転送します。 |
Ble_Un_S |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値以下の場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Blt |
最初の値が 2 番目の値より小さい場合は、ターゲット命令に制御を転送します。 |
Blt_S |
最初の値が 2 番目の値より小さい場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Blt_Un |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値より小さい場合は、ターゲット命令に制御を転送します。 |
Blt_Un_S |
符号なし整数値または順序なし float 値を比較したとき、最初の値が 2 番目の値より小さい場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Bne_Un |
2 つの符号なし整数値または順序なし float 値が等しくない場合は、ターゲット命令に制御を転送します。 |
Bne_Un_S |
2 つの符号なし整数値または順序なし float 値が等しくない場合は、ターゲット命令 (短い形式) に制御を転送します。 |
Box |
値型をオブジェクト参照 ( |
Br |
無条件でターゲット命令に制御を転送します。 |
Br_S |
無条件でターゲット命令に制御を転送します (短い形式)。 |
Break |
ブレークポイントがトリップしたことをデバッガーに通知するように、共通言語基盤 (CLI) に通知します。 |
Brfalse |
|
Brfalse_S |
|
Brtrue |
|
Brtrue_S |
|
Call |
渡されたメソッド記述子によって示されているメソッドを呼び出します。 |
Calli |
呼び出し規則によって記述されている引数を使用して、評価スタックで (エントリ ポイントへのポインターとして) 指定されているメソッドを呼び出します。 |
Callvirt |
オブジェクト上で遅延バインディング メソッドを呼び出し、戻り値を評価スタックにプッシュします。 |
Castclass |
指定したクラスへの参照により渡されたオブジェクトをキャストしようとします。 |
Ceq |
2 つの値を比較します。 2 つの値が等しい場合は、整数 1 |
Cgt |
2 つの値を比較します。 最初の値が 2 番目の値を超える場合は、整数 1 |
Cgt_Un |
2 つの符号なしの値または順序なしの値を比較します。 最初の値が 2 番目の値を超える場合は、整数 1 |
Ckfinite |
値が有限数ではない場合は、ArithmeticException をスローします。 |
Clt |
2 つの値を比較します。 最初の値が 2 番目の値より小さい場合は、整数 1 |
Clt_Un |
符号なしの値または順序なしの値である |
Constrained |
仮想メソッド呼び出しをする対象の型を制約します。 |
Conv_I |
評価スタックの一番上の値を |
Conv_I1 |
評価スタックの一番上の値を |
Conv_I2 |
評価スタックの一番上の値を |
Conv_I4 |
評価スタックの一番上の値を |
Conv_I8 |
評価スタックの一番上の値を |
Conv_Ovf_I |
評価スタックの一番上にある符号付きの値を符号付き |
Conv_Ovf_I_Un |
評価スタックの一番上にある符号なしの値を符号付き |
Conv_Ovf_I1 |
評価スタックの一番上にある符号付きの値を符号付き |
Conv_Ovf_I1_Un |
評価スタックの一番上にある符号なしの値を符号付き |
Conv_Ovf_I2 |
評価スタックの一番上にある符号付きの値を符号付き |
Conv_Ovf_I2_Un |
評価スタックの一番上にある符号なしの値を符号付き |
Conv_Ovf_I4 |
評価スタックの一番上にある符号付きの値を符号付き |
Conv_Ovf_I4_Un |
評価スタックの一番上にある符号なしの値を符号付き |
Conv_Ovf_I8 |
評価スタックの一番上にある符号付きの値を符号付き |
Conv_Ovf_I8_Un |
評価スタックの一番上にある符号なしの値を符号付き |
Conv_Ovf_U |
評価スタックの一番上にある符号付きの値を |
Conv_Ovf_U_Un |
評価スタックの一番上にある符号なしの値を |
Conv_Ovf_U1 |
評価スタックの一番上にある符号付きの値を |
Conv_Ovf_U1_Un |
評価スタックの一番上にある符号なしの値を |
Conv_Ovf_U2 |
評価スタックの一番上にある符号付きの値を |
Conv_Ovf_U2_Un |
評価スタックの一番上にある符号なしの値を |
Conv_Ovf_U4 |
評価スタックの一番上にある符号付きの値を |
Conv_Ovf_U4_Un |
評価スタックの一番上にある符号なしの値を |
Conv_Ovf_U8 |
評価スタックの一番上にある符号付きの値を |
Conv_Ovf_U8_Un |
評価スタックの一番上にある符号なしの値を |
Conv_R_Un |
評価スタックの一番上の符号なし整数値を |
Conv_R4 |
評価スタックの一番上の値を |
Conv_R8 |
評価スタックの一番上の値を |
Conv_U |
評価スタックの一番上の値を |
Conv_U1 |
評価スタックの一番上の値を |
Conv_U2 |
評価スタックの一番上の値を |
Conv_U4 |
評価スタックの一番上の値を |
Conv_U8 |
評価スタックの一番上の値を |
Cpblk |
ソース アドレスから指定した数のバイトを宛先アドレスにコピーします。 |
Cpobj |
オブジェクトのアドレスにある値型 (型 |
Div |
2 つの値の除算を実行し、結果を浮動小数点値 ( |
Div_Un |
2 つの符号なし整数値を除算し、結果 ( |
Dup |
現在評価スタックの一番上にある値をコピーし、そのコピーを評価スタックにプッシュします。 |
Endfilter |
例外の |
Endfinally |
例外ブロックの |
Initblk |
特定のアドレスの指定したメモリ ブロックを、指定のサイズと初期値に初期化します。 |
Initobj |
指定したアドレスにある値型の各フィールドを null 参照または適切なプリミティブ型の 0 に初期化します。 |
Isinst |
オブジェクト参照 ( |
Jmp |
現在のメソッドを終了し、指定したメソッドにジャンプします。 |
Ldarg |
指定したインデックス値によって参照される引数をスタックに読み込みます。 |
Ldarg_0 |
インデックス 0 の引数を評価スタックに読み込みます。 |
Ldarg_1 |
インデックス 1 の引数を評価スタックに読み込みます。 |
Ldarg_2 |
インデックス 2 の引数を評価スタックに読み込みます。 |
Ldarg_3 |
インデックス 3 の引数を評価スタックに読み込みます。 |
Ldarg_S |
指定した短い形式のインデックスによって参照される引数を評価スタックに読み込みます。 |
Ldarga |
引数アドレスを評価スタックに読み込みます。 |
Ldarga_S |
引数アドレス (短い形式) を評価スタックに読み込みます。 |
Ldc_I4 |
提供された |
Ldc_I4_0 |
整数値 0 を |
Ldc_I4_1 |
整数値 1 を |
Ldc_I4_2 |
整数値 2 を |
Ldc_I4_3 |
整数値 3 を |
Ldc_I4_4 |
整数値 4 を |
Ldc_I4_5 |
整数値 5 を |
Ldc_I4_6 |
整数値 6 を |
Ldc_I4_7 |
整数値 7 を |
Ldc_I4_8 |
整数値 8 を |
Ldc_I4_M1 |
整数値 -1 を |
Ldc_I4_S |
提供された |
Ldc_I8 |
提供された |
Ldc_R4 |
提供された |
Ldc_R8 |
提供された |
Ldelem |
指定した配列インデックスの要素を命令で指定された型として評価スタックの一番上に読み込みます。 |
Ldelem_I |
指定した配列インデックスの |
Ldelem_I1 |
指定した配列インデックスの |
Ldelem_I2 |
指定した配列インデックスの |
Ldelem_I4 |
指定した配列インデックスの |
Ldelem_I8 |
指定した配列インデックスの |
Ldelem_R4 |
指定した配列インデックスの |
Ldelem_R8 |
指定した配列インデックスの |
Ldelem_Ref |
指定した配列インデックスのオブジェクト参照を格納している要素を |
Ldelem_U1 |
指定した配列インデックスの |
Ldelem_U2 |
指定した配列インデックスの |
Ldelem_U4 |
指定した配列インデックスの |
Ldelema |
指定した配列インデックスにある配列要素のアドレスを |
Ldfld |
参照が現在評価スタック上にあるオブジェクト内のフィールドの値を検索します。 |
Ldflda |
参照が現在評価スタック上にあるオブジェクト内のフィールドのアドレスを検索します。 |
Ldftn |
特定のメソッドを実装しているネイディブ コードへのアンマネージ ポインター ( |
Ldind_I |
|
Ldind_I1 |
|
Ldind_I2 |
|
Ldind_I4 |
|
Ldind_I8 |
|
Ldind_R4 |
|
Ldind_R8 |
|
Ldind_Ref |
オブジェクト参照を |
Ldind_U1 |
|
Ldind_U2 |
|
Ldind_U4 |
|
Ldlen |
インデックス番号が 0 から始まる 1 次元配列の要素数を評価スタックにプッシュします。 |
Ldloc |
特定のインデックスのローカル変数を評価スタックに読み込みます。 |
Ldloc_0 |
インデックス 0 のローカル変数を評価スタックに読み込みます。 |
Ldloc_1 |
インデックス 1 のローカル変数を評価スタックに読み込みます。 |
Ldloc_2 |
インデックス 2 のローカル変数を評価スタックに読み込みます。 |
Ldloc_3 |
インデックス 3 のローカル変数を評価スタックに読み込みます。 |
Ldloc_S |
特定のインデックスのローカル変数を評価スタックに読み込みます (短い形式)。 |
Ldloca |
特定のインデックスのローカル変数のアドレスを評価スタックに読み込みます。 |
Ldloca_S |
特定のインデックスのローカル変数のアドレスを評価スタックに読み込みます (短い形式)。 |
Ldnull |
null 参照 ( |
Ldobj |
アドレスが指す値型オブジェクトを評価スタックの一番上にコピーします。 |
Ldsfld |
静的フィールドの値を評価スタックにプッシュします。 |
Ldsflda |
静的フィールドのアドレスを評価スタックにプッシュします。 |
Ldstr |
メタデータに格納されているリテラル文字列への新しいオブジェクト参照をプッシュします。 |
Ldtoken |
メタデータ トークンをそのランタイム表現に変換し、評価スタックにプッシュします。 |
Ldvirtftn |
指定したオブジェクトに関連付けられた特定の仮想メソッドを実装しているネイティブ コードへのアンマネージ ポインター ( |
Leave |
コードの保護領域を終了し、制御を特定のターゲット命令に無条件で転送します。 |
Leave_S |
コードの保護領域を終了し、制御をターゲット命令に無条件で転送します (短い形式)。 |
Localloc |
ローカル動的メモリ プールから特定のバイト数を割り当て、最初に割り当てたバイトのアドレス (遷移ポインター、 |
Mkrefany |
特定の型のインスタンスへの型指定された参照を評価スタックにプッシュします。 |
Mul |
2 つの値を乗算し、結果を評価スタックにプッシュします。 |
Mul_Ovf |
2 つの整数値を乗算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Mul_Ovf_Un |
2 つの符号なし整数値を乗算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Neg |
値を無効にし、結果を評価スタックにプッシュします。 |
Newarr |
特定の型の要素を持つ、インデックス番号が 0 から始まる新しい 1 次元配列へのオブジェクト参照を評価スタックにプッシュします。 |
Newobj |
新しいオブジェクトまたは値型の新しいインスタンスを作成し、オブジェクト参照 ( |
Nop |
オペコードがパッチされている場合は、領域を補完します。 循環参照の処理を利用することはできますが、意味のある演算は実行されません。 |
Not |
スタックの一番上にある整数値のビットごとの補数を計算し、結果を同じ型として評価スタックにプッシュします。 |
Or |
スタックの一番上にある 2 つの整数値のビットごとの補数を計算し、結果を評価スタックにプッシュします。 |
Pop |
現在評価スタックの一番上にある値を削除します。 |
Prefix1 |
これは予約済みの命令です。 |
Prefix2 |
これは予約済みの命令です。 |
Prefix3 |
これは予約済みの命令です。 |
Prefix4 |
これは予約済みの命令です。 |
Prefix5 |
これは予約済みの命令です。 |
Prefix6 |
これは予約済みの命令です。 |
Prefix7 |
これは予約済みの命令です。 |
Prefixref |
これは予約済みの命令です。 |
Readonly |
以降の配列アドレス演算で、実行時に型チェックを実行しないこと、および変更可能性が制限されたマネージド ポインターを返すことを指定します。 |
Refanytype |
型指定された参照に埋め込まれている型トークンを取得します。 |
Refanyval |
型指定された参照に埋め込まれているアドレス ( |
Rem |
2 つの値を除算し、剰余を評価スタックにプッシュします。 |
Rem_Un |
2 つの符号なしの値を除算し、剰余を評価スタックにプッシュします。 |
Ret |
現在のメソッドから戻り、呼び出し先の評価スタックから呼び出し元の評価スタックに戻り値 (存在する場合) をプッシュします。 |
Rethrow |
現在の例外を再スローします。 |
Shl |
整数値を指定したビット数だけ、0 を使用して左にシフトし、結果を評価スタックにプッシュします。 |
Shr |
整数値を指定したビット数だけ、符号を付けて右にシフトし、結果を評価スタックにプッシュします。 |
Shr_Un |
符号なし整数値を指定したビット数だけ、0 を使用して右にシフトし、結果を評価スタックにプッシュします。 |
Sizeof |
提供された値型のサイズ (バイト単位) を評価スタックにプッシュします。 |
Starg |
評価スタックの一番上にある値を指定したインデックスの引数スロットに格納します。 |
Starg_S |
評価スタックの一番上にある値を指定したインデックスの引数スロットに格納します (短い形式)。 |
Stelem |
指定のインデックス位置にある配列要素を評価スタックの、命令で指定された型の値に置き換えます。 |
Stelem_I |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_I1 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_I2 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_I4 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_I8 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_R4 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_R8 |
指定のインデックス位置にある配列要素を評価スタックの |
Stelem_Ref |
指定のインデックス位置にある配列要素をオブジェクト参照値 ( |
Stfld |
オブジェクト参照またはポインターのフィールドに格納された値を新しい値に置き換えます。 |
Stind_I |
提供されたアドレスに |
Stind_I1 |
提供されたアドレスに |
Stind_I2 |
提供されたアドレスに |
Stind_I4 |
提供されたアドレスに |
Stind_I8 |
提供されたアドレスに |
Stind_R4 |
提供されたアドレスに |
Stind_R8 |
提供されたアドレスに |
Stind_Ref |
提供されたアドレスにオブジェクト参照値を格納します。 |
Stloc |
評価スタックの先頭から現在の値をポップし、指定したインデックス位置にあるローカル変数リストに格納します。 |
Stloc_0 |
評価スタックの上部から現在の値をポップし、インデックス 0 のローカル変数リストに格納します。 |
Stloc_1 |
評価スタックの上部から現在の値をポップし、インデックス 1 のローカル変数リストに格納します。 |
Stloc_2 |
評価スタックの上部から現在の値をポップし、インデックス 2 のローカル変数リストに格納します。 |
Stloc_3 |
評価スタックの上部から現在の値をポップし、インデックス 3 のローカル変数リストに格納します。 |
Stloc_S |
評価スタックの上部から現在の値をポップし、 (短い形式) のローカル変数リストに |
Stobj |
評価スタックから提供されたメモリ アドレスに、指定した型の値をコピーします。 |
Stsfld |
静的フィールドの値を評価スタックの値に置き換えます。 |
Sub |
ある値から別の値を減算し、結果を評価スタックにプッシュします。 |
Sub_Ovf |
ある整数値を別の整数値から減算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Sub_Ovf_Un |
ある符号なし整数値を別の符号なし整数値から減算し、オーバーフロー チェックを実行し、結果を評価スタックにプッシュします。 |
Switch |
ジャンプ テーブルを実装します。 |
Tailcall |
実際の呼び出し命令が実行される前に、現在のメソッドのスタック フレームが削除されるように、後置のメソッド呼び出し命令を実行します。 |
Throw |
現在評価スタックにある例外オブジェクトをスローします。 |
Unaligned |
現在評価スタックの一番上にあるアドレスが、直後の |
Unbox |
値型のボックス化変換された形式をボックス化が解除された形式に変換します。 |
Unbox_Any |
命令で指定された型のボックス化変換された形式を、ボックス化が解除された形式に変換します。 |
Volatile |
現在評価スタックの一番上にあるアドレスが揮発性である可能性があるため、この位置の読み取り結果をキャッシュできないこと、またはこの位置への複数の格納を中止できないことを指定します。 |
Xor |
評価スタックの一番上にある 2 つの値のビットごとの XOR を計算し、結果を評価スタックにプッシュします。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
TakesSingleByteArgument(OpCode) |
提供されたオペコードが 1 バイト引数をとる場合は、true または false を返します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
.NET