예제 #1
0
        public BlockPythonEngine(Machine mach, ICPUWithBlockBeginHook cpu, string script)
        {
            Script  = script;
            CPU     = cpu;
            Machine = mach;

            InnerInit();

            Hook = (pc) =>
            {
                Scope.SetVariable("pc", pc);
                Source.Value.Execute(Scope);
            };

            HookWithSize = (pc, size) =>
            {
                Scope.SetVariable("pc", pc);
                Scope.SetVariable("size", size);
                Source.Value.Execute(Scope);
            };
        }
예제 #2
0
        public static void AddHook(this ICPUWithBlockBeginHook cpu, [AutoParameter] Machine m, uint addr, string pythonScript)
        {
            var engine = new BlockPythonEngine(m, cpu, pythonScript);

            cpu.AddHook(addr, engine.Hook);
        }
예제 #3
0
        public static void SetHookAtBlockBegin(this ICPUWithBlockBeginHook cpu, [AutoParameter] Machine m, string pythonScript)
        {
            var engine = new BlockPythonEngine(m, cpu, pythonScript);

            cpu.SetHookAtBlockBegin(engine.HookWithSize);
        }