Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 static MemSetArrayExtensions()
 {
     _memset = CreateMemset();
 }