ILGenerator を使用していくつかの IL を生成しています。ここに私のコードがあります。
DynamicMethod method = new DynamicMethod("test", null, Type.EmptyTypes);
ILGenerator gen = method.GetILGenerator();
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldarg_1);
gen.Emit(OpCodes.Ldc_I4_S, 100);
これにより、次の IL が生成されました。
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: ldc.i4.s 100
IL_0004: nop
IL_0005: nop
IL_0006: nop
(ILStream という名前の VS Virtulizer から IL コードを取得します)
nops はどこからコーディングしますか? それらを取り除く方法はありますか?私はいくつかの C# コードを模倣しようとしていますが、3 つの nop がありません。