我使用 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 个 nops。