コード例 #1
0
        public void Setup()
        {
            mr      = new MockRepository();
            program = new Program();
            proc    = new Procedure(program.Architecture, "testProc", new Frame(PrimitiveType.Word32));
            block   = proc.AddBlock("l00100000");
            trace   = new RtlTrace(0x00100000);
            r0      = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32));
            r1      = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32));
            r2      = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32));
            sp      = new Identifier("sp", PrimitiveType.Word32, new RegisterStorage("sp", 15, 0, PrimitiveType.Word32));
            grf     = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte);
            var sc       = new ServiceContainer();
            var listener = mr.Stub <DecompilerEventListener>();

            scanner = mr.StrictMock <IScanner>();
            arch    = mr.Stub <IProcessorArchitecture>();
            program.Architecture = arch;
            program.SegmentMap   = new SegmentMap(
                Address.Ptr32(0x00100000),
                new ImageSegment(
                    ".text",
                    new MemoryArea(Address.Ptr32(0x00100000), new byte[0x20000]),
                    AccessMode.ReadExecute));
            arch.Replay();
            program.Platform = new DefaultPlatform(null, arch);
            arch.BackToRecord();
            arch.StackRegister = (RegisterStorage)sp.Storage;
            arch.Stub(s => s.PointerType).Return(PrimitiveType.Ptr32);
            scanner.Stub(s => s.Services).Return(sc);
            sc.AddService <DecompilerEventListener>(listener);
        }
コード例 #2
0
        private void Given_Architecture()
        {
            arch = mr.Stub <IProcessorArchitecture>();
            var dasm = mr.Stub <IEnumerable <MachineInstruction> >();
            var e    = mr.Stub <IEnumerator <MachineInstruction> >();

            arch.Stub(a => a.InstructionBitSize).Return(8);
            arch.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32);
            arch.Stub(a => a.CreateRegisterBitset()).Return(new BitSet(32));
            arch.Stub(a => a.CreateImageReader(null, null))
            .IgnoreArguments()
            .Do(new Func <LoadedImage, Address, ImageReader>((i, a) => new LeImageReader(i, a)));
            arch.Stub(a => a.CreateDisassembler(
                          Arg <ImageReader> .Is.NotNull)).Return(dasm);
            Address dummy;

            arch.Stub(a => a.TryParseAddress(null, out dummy)).IgnoreArguments().WhenCalled(m =>
            {
                Address addr;
                bool ret       = Address.TryParse32((string)m.Arguments[0], out addr);
                m.Arguments[1] = addr;
                m.ReturnValue  = ret;
            }).Return(false);
            dasm.Stub(d => d.GetEnumerator()).Return(e);
            arch.Replay();
            dasm.Replay();
            e.Replay();
        }
コード例 #3
0
        public void Setup()
        {
            mr   = new MockRepository();
            arch = mr.Stub <IProcessorArchitecture>();
            arch.Stub(a => a.CreateImageReader(null, 0u)).IgnoreArguments().Do(new Func <MemoryArea, ulong, EndianImageReader>((i, o) => i.CreateLeReader(o)));
            arch.Replay();
            globalStruct = new StructureType
            {
            };
            var globals_t = new TypeVariable("globals_t", 1)
            {
                DataType = globalStruct
            };
            var globals = new Identifier("globals", PrimitiveType.Ptr32, null);

            eqLink = new EquivalenceClass(new TypeVariable(2));
            StructureType str = new StructureType
            {
                Fields =
                {
                    { 0, new Pointer(eqLink, 32) },
                    { 4, PrimitiveType.Int32 }
                }
            };

            eqLink.DataType = str;
        }
コード例 #4
0
ファイル: BlockWorkitemTests.cs プロジェクト: relaxar/reko
 public void Setup()
 {
     mr = new MockRepository();
     program = new Program();
     proc = new Procedure("testProc", new Frame(PrimitiveType.Word32));
     block = proc.AddBlock("l00100000");
     trace = new RtlTrace(0x00100000);
     r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32));
     r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32));
     r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32));
     sp = new Identifier("sp", PrimitiveType.Word32, new RegisterStorage("sp", 15, 0, PrimitiveType.Word32));
     grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte);
     var sc = new ServiceContainer();
     var listener = mr.Stub<DecompilerEventListener>();
     scanner = mr.StrictMock<IScanner>();
     arch = mr.Stub<IProcessorArchitecture>();
     program.Architecture = arch;
     program.SegmentMap = new SegmentMap(
         Address.Ptr32(0x00100000),
         new ImageSegment(
             ".text",
             new MemoryArea(Address.Ptr32(0x00100000), new byte[0x20000]),
             AccessMode.ReadExecute));
     arch.Replay();
     program.Platform = new DefaultPlatform(null, arch);
     arch.BackToRecord();
     arch.Stub(s => s.StackRegister).Return((RegisterStorage)sp.Storage);
     arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32);
     scanner.Stub(s => s.Services).Return(sc);
     sc.AddService<DecompilerEventListener>(listener);
 }
コード例 #5
0
 public void Setup()
 {
     sb   = new StringWriter();
     map  = new Dictionary <Address, Procedure>();
     hcf  = new HtmlCodeFormatter(sb, map);
     arch = MockRepository.GenerateStub <IProcessorArchitecture>();
     arch.Replay();
 }
コード例 #6
0
ファイル: PeImageLoaderTests.cs プロジェクト: xor2003/reko
        private void Given_i386_Architecture()
        {
            this.arch_386 = mr.StrictMock <IProcessorArchitecture>();
            arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Pointer32));
            arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32);
            arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32);
            var state = mr.Stub <ProcessorState>();

            arch_386.Stub(a => a.CreateProcessorState()).Return(state);
            arch_386.Replay();
        }
コード例 #7
0
ファイル: PeImageLoaderTests.cs プロジェクト: heruix/reko
        private void Given_i386_Architecture()
        {
            this.arch_386 = mr.StrictMock <IProcessorArchitecture>();
            arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Ptr32));
            arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32);
            arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Ptr32);
            var map   = new SegmentMap(addrLoad);
            var state = new Mocks.FakeProcessorState(this.arch_386);

            arch_386.Stub(a => a.CreateProcessorState()).Return(state);
            arch_386.Replay();
        }
コード例 #8
0
        public void SetUp()
        {
            sw = new StringWriter();
            var tf = new TextFormatter(sw)
            {
                Indentation = 0
            };

            tyfo = new TypeFormatter(tf);
            tf   = new TextFormatter(sw)
            {
                Indentation = 0
            };
            tyreffo = new TypeReferenceFormatter(tf);
            arch    = MockRepository.GenerateStub <IProcessorArchitecture>();
            arch.Replay();
        }
コード例 #9
0
        public void Setup()
        {
            mr = new MockRepository();
            program = new Program();
            proc = new Procedure("testProc", new Frame(PrimitiveType.Word32));
            block = proc.AddBlock("l00100000");
            trace = new RtlTrace(0x00100000);
            r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32));
            r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32));
            r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32));
            grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte);

            scanner = mr.StrictMock<IScanner>();
            arch = mr.DynamicMock<IProcessorArchitecture>();
            arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32);
            program.Architecture = arch;
            arch.Replay();
            program.Platform = new DefaultPlatform(null, arch);
            arch.BackToRecord();
        }
コード例 #10
0
        public void Setup()
        {
            mr      = new MockRepository();
            program = new Program();
            proc    = new Procedure("testProc", new Frame(PrimitiveType.Word32));
            block   = proc.AddBlock("l00100000");
            trace   = new RtlTrace(0x00100000);
            r0      = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32));
            r1      = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32));
            r2      = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32));
            grf     = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte);

            scanner = mr.StrictMock <IScanner>();
            arch    = mr.DynamicMock <IProcessorArchitecture>();
            arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32);
            program.Architecture = arch;
            arch.Replay();
            program.Platform = new DefaultPlatform(null, arch);
            arch.BackToRecord();
        }
コード例 #11
0
ファイル: DumperTests.cs プロジェクト: heruix/reko
        private void Given_32bit_Program(int size = 32)
        {
            this.arch = mr.Stub <IProcessorArchitecture>();
            this.arch.Stub(a => a.FramePointerType).Return(PrimitiveType.Ptr32);
            this.arch.Stub(a => a.InstructionBitSize).Return(8);
            this.platform = mr.Stub <IPlatform>();
            this.program  = new Program(
                new SegmentMap(
                    Address.Ptr32(0x00010000),
                    new ImageSegment(
                        ".text",
                        new MemoryArea(
                            Address.Ptr32(0x00010000),
                            Enumerable.Range(0, size)
                            .Select(i => (byte)i)
                            .ToArray()),
                        AccessMode.ReadWrite)),
                arch,
                platform);
            arch.Stub(a => a.CreateFrame()).Do(
                new Func <Frame>(
                    () => new Frame(PrimitiveType.Ptr32)));
            arch.Stub(a => a.CreateImageReader(null, null)).IgnoreArguments()
            .Do(new Func <MemoryArea, Address, EndianImageReader>(
                    (m, a) => new LeImageReader(m, a)));
            arch.Stub(a => a.CreateDisassembler(null)).IgnoreArguments()
            .Return(new[]
            {
                Operation.Add,
                Operation.Mul,
                Operation.Add,
                Operation.Ret
            }.Select((m, i) => new FakeInstruction(m)
            {
                Address = Address.Ptr32(0x00010010 + 2 * (uint)i),
                Length  = 2,
            }));

            arch.Replay();
        }
コード例 #12
0
        public void Setup()
        {
            mr = new MockRepository();
            arch = mr.Stub<IProcessorArchitecture>();
            arch.Stub(a => a.CreateImageReader(null, 0u)).IgnoreArguments().Do(new Func<LoadedImage, ulong, ImageReader>((i, o) => i.CreateLeReader(o)));
            arch.Replay();
            globalStruct = new StructureType
            {
            };
            globals_t = new TypeVariable("globals_t", 1) { DataType = globalStruct };
            globals = new Identifier("globals", PrimitiveType.Pointer32, null);

            eqLink = new EquivalenceClass(new TypeVariable(2));
            StructureType str = new StructureType
            {
                Fields = {
                    { 0, new Pointer(eqLink, 4)},
                    { 4, PrimitiveType.Int32 }
                }
            };
            eqLink.DataType = str;
        }
コード例 #13
0
ファイル: PeImageLoaderTests.cs プロジェクト: relaxar/reko
 private void Given_i386_Architecture()
 {
     this.arch_386 = mr.StrictMock<IProcessorArchitecture>();
     arch_386.Stub(a => a.CreateFrame()).Return(new Frame(PrimitiveType.Pointer32));
     arch_386.Stub(a => a.WordWidth).Return(PrimitiveType.Word32);
     arch_386.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32);
     var state = mr.Stub<ProcessorState>();
     arch_386.Stub(a => a.CreateProcessorState()).Return(state);
     arch_386.Replay();
 }
コード例 #14
0
 public ProcedureTests()
 {
     mr   = new MockRepository();
     arch = mr.Stub <IProcessorArchitecture>();
     arch.Replay();
 }
コード例 #15
0
 private void Given_Architecture()
 {
     arch = mr.Stub<IProcessorArchitecture>();
     var dasm = mr.Stub<IEnumerable<MachineInstruction>>();
     var e = mr.Stub<IEnumerator<MachineInstruction>>();
     arch.Stub(a => a.InstructionBitSize).Return(8);
     arch.Stub(a => a.PointerType).Return(PrimitiveType.Pointer32);
     arch.Stub(a => a.CreateRegisterBitset()).Return(new BitSet(32));
     arch.Stub(a => a.CreateImageReader(null, null))
         .IgnoreArguments()
         .Do(new Func<LoadedImage, Address, ImageReader>((i, a) => new LeImageReader(i, a)));
     arch.Stub(a => a.CreateDisassembler(
         Arg<ImageReader>.Is.NotNull)).Return(dasm);
     Address dummy;
     arch.Stub(a => a.TryParseAddress(null, out dummy)).IgnoreArguments().WhenCalled(m =>
         {
             Address addr;
             bool ret = Address.TryParse32((string)m.Arguments[0], out addr);
             m.Arguments[1] = addr;
             m.ReturnValue = ret;
         }).Return(false);
     dasm.Stub(d => d.GetEnumerator()).Return(e);
     arch.Replay();
     dasm.Replay();
     e.Replay();
 }
コード例 #16
0
ファイル: DumperTests.cs プロジェクト: relaxar/reko
        private void Given_32bit_Program()
        {
            this.arch = mr.Stub<IProcessorArchitecture>();
            this.arch.Stub(a => a.FramePointerType).Return(PrimitiveType.Pointer32);
            this.platform = mr.Stub<IPlatform>();
            this.program = new Program(
                new SegmentMap(
                    Address.Ptr32(0x00010000),
                    new ImageSegment(
                        ".text",
                        new MemoryArea(
                            Address.Ptr32(0x00010000),
                            Enumerable.Range(0, 32)
                                .Select(i => (byte)i)
                                .ToArray()),
                        AccessMode.ReadWrite)),
                arch,
                platform);
            arch.Stub(a => a.CreateFrame()).Do(
                new Func<Frame>(
                    () => new Frame(PrimitiveType.Pointer32)));
            arch.Stub(a => a.CreateImageReader(null, null)).IgnoreArguments()
                .Do(new Func<MemoryArea, Address, ImageReader>(
                    (m, a) => new LeImageReader(m, a)));
            arch.Stub(a => a.CreateDisassembler(null)).IgnoreArguments()
                .Return(new[]
                {
                    Operation.Add,
                    Operation.Mul,
                    Operation.Add,
                    Operation.Ret
                }.Select((m, i) => new FakeInstruction(m)
                {
                    Address = Address.Ptr32(0x00010010 + 2 * (uint)i)
                }));

            arch.Replay();
        }