static MemoryHelper() { // Init memset DynamicMethod dynamicMemset = new DynamicMethod("memset", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new[] { typeof(IntPtr), typeof(byte), typeof(int) }, typeof(MemoryHelper), false); ILGenerator ilMemset = dynamicMemset.GetILGenerator(); ilMemset.Emit(OpCodes.Ldarg_0); // addr ilMemset.Emit(OpCodes.Ldarg_1); // val ilMemset.Emit(OpCodes.Ldarg_2); // count ilMemset.Emit(OpCodes.Initblk); ilMemset.Emit(OpCodes.Ret); MemsetDelegate = (MemorySetter)dynamicMemset.CreateDelegate(typeof(MemorySetter)); }
static Program() { var m1 = new DynamicMethod( "memset", MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, typeof(void), new[] { typeof(byte *), typeof(byte), typeof(uint) }, typeof(Program), false); var il1 = m1.GetILGenerator(); il1.Emit(OpCodes.Ldarg_0); // dst address il1.Emit(OpCodes.Ldarg_1); // value il1.Emit(OpCodes.Ldarg_2); // number of bytes il1.Emit(OpCodes.Initblk); il1.Emit(OpCodes.Ret); MemsetDelegate = (MemorySetter)m1.CreateDelegate(typeof(MemorySetter)); }
static MemSetArrayExtensions() { _memset = CreateMemset(); }