private Func <long> SelectTest(byte[] buf) { var rewriter = chkRewriter.Checked; Func <long> test; if (rdbRealDasm.Checked) { //var arch = new Reko.Arch.Arm.Arm32Architecture("arm32"); var arch = new Reko.Arch.X86.X86ArchitectureFlat32("x86-protected-32"); if (rewriter) { test = () => PerformanceTest_A32Rewriter(arch, buf); } else { test = () => PerformanceTest_A32Dasm(arch, buf); } } else { DecoderBuilder m; if (rdbInterpretedDasm.Checked) { m = new Decoders.FormatDecoderBuilder(); } else { m = new Decoders.ThreadedDecoderBuilder(); } var root = m.Mask(29, 3, m.Instr(Opcode.add, "r8,r4,r0"), m.Instr(Opcode.sub, "r8,r4,r0"), m.Instr(Opcode.mul, "r8,r4,r0"), m.Instr(Opcode.div, "r8,r4,r0"), m.Instr(Opcode.and, "r8,r4,r0"), m.Instr(Opcode.or, "r8,r4,r0"), m.Instr(Opcode.not, "r8,r4"), m.Instr(Opcode.xor, "r8,r4,r0")); if (rewriter) { test = () => PerformanceTest_SimulatedRewriter(buf, root); } else { test = () => PerformanceTest_Simulated(buf, root); } } return(test); }
private Func <long> SelectTest(byte[] buf) { var rewriter = chkRewriter.Checked; Func <long> test; if (rdbRealDasm.Checked) { if (rewriter) { test = () => PerformanceTest_A32Rewriter(buf); } else { test = () => PerformanceTest_A32Dasm(buf); } } else { DecoderBuilder m; if (rdbInterpretedDasm.Checked) { m = new Decoders.FormatDecoderBuilder(); } else { m = new Decoders.ThreadedDecoderBuilder(); } var root = m.Mask(29, 3, m.Instr(Opcode.add, "r8,r4,r0"), m.Instr(Opcode.sub, "r8,r4,r0"), m.Instr(Opcode.mul, "r8,r4,r0"), m.Instr(Opcode.div, "r8,r4,r0"), m.Instr(Opcode.and, "r8,r4,r0"), m.Instr(Opcode.or, "r8,r4,r0"), m.Instr(Opcode.not, "r8,r4"), m.Instr(Opcode.xor, "r8,r4,r0")); if (rewriter) { test = () => PerformanceTest_SimulatedRewriter(buf, root); } else { test = () => PerformanceTest_Simulated(buf, root); } } return(test); }