Im tạo ra một số IL với ILGenerator đây là mã của tôi:C# ILGenerator nop?
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);
này tạo ra IL này:
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: ldc.i4.s 100
IL_0004: nop
IL_0005: nop
IL_0006: nop
(tôi nhận được Mã IL từ một VS Virtulizer tên ILStream)
Từ mã nops ở đâu? có cách nào để loại bỏ chúng không? Tôi đang cố gắng bắt chước một số mã C# và nó không có 3 bước nhảy.
Có lẽ nó đóng gói các hướng dẫn vào một khối có kích thước nhất định và điền phần còn lại với nops? – Joe
Vì NOP không gây hại gì, tại sao bạn muốn loại bỏ chúng? – RichardOD
Nếu chúng không có lý do tại sao có chúng ở đó, mã C# không có bất kỳ ... – Peter