public void Setup() { mr = new MockRepository(); var services = mr.Stub<IServiceProvider>(); var tlSvc = mr.Stub<ITypeLibraryLoaderService>(); var configSvc = mr.StrictMock<IConfigurationService>(); var win32env = new OperatingEnvironmentElement { TypeLibraries = { new TypeLibraryElement { Name= "msvcrt.xml" }, new TypeLibraryElement { Name= "windows32.xml" }, } }; configSvc.Stub(c => c.GetEnvironment("win32")).Return(win32env); configSvc.Stub(c => c.GetPath(null)).IgnoreArguments() .Do(new Func<string, string>(s => s)); services.Stub(s => s.GetService(typeof(ITypeLibraryLoaderService))).Return(tlSvc); services.Stub(s => s.GetService(typeof(IConfigurationService))).Return(configSvc); tlSvc.Stub(t => t.LoadLibrary(null, null)).IgnoreArguments() .Do(new Func<IProcessorArchitecture, string, TypeLibrary>((a, n) => { var lib = TypeLibrary.Load(a, Path.ChangeExtension(n, ".xml")); return lib; })); services.Replay(); tlSvc.Replay(); configSvc.Replay(); arch = new IntelArchitecture(ProcessorMode.Protected32); win32 = new Reko.Environments.Win32.Win32Platform(services, arch); }
public SerializedSignatureTests() { this.sc = new ServiceContainer(); this.sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); this.arch = new X86ArchitectureReal(); this.platform = new MsdosPlatform(sc, arch); }
public X86TextAssembler(IServiceProvider services, IntelArchitecture arch) { this.services = services; this.entryPoints = new List<ImageSymbol>(); this.ImageSymbols = new List<ImageSymbol>(); this.arch = arch; }
public void SetUp() { var arch = new IntelArchitecture(ProcessorMode.Real); prog = new Program() { Architecture = arch }; asm = new X86TextAssembler(arch); configFile = null; }
public void Setup() { this.sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); arch = new IntelArchitecture(ProcessorMode.Real); asm = new X86TextAssembler(sc, arch); }
public void Dec_LoadCallSignatures() { var arch = new IntelArchitecture(ProcessorMode.Real); Program program = new Program { Architecture = arch, Platform = new MsdosPlatform(null, arch) }; decompiler.Project = new Project { Programs = { program }, }; List<SerializedCall_v1> al = new List<SerializedCall_v1>(); SerializedSignature sig = new SerializedSignature(); sig.Arguments = new Argument_v1[] { new Argument_v1 { Kind = new Register_v1("ds") }, new Argument_v1 { Kind = new Register_v1("bx"), } }; al.Add(new SerializedCall_v1(Address.SegPtr(0x0C32, 0x3200), sig)); var sigs = decompiler.LoadCallSignatures(program, al); ProcedureSignature ps = sigs[Address.SegPtr(0x0C32, 0x3200)]; Assert.IsNotNull(ps, "Expected a call signature for address"); }
public void Setup() { var sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); var arch = new IntelArchitecture(ProcessorMode.Real); this.platform = new MsdosPlatform(sc, arch); }
public void Setup() { mr = new MockRepository(); mockFactory = new MockFactory(mr); arch = new IntelArchitecture(ProcessorMode.Protected32); platform = new Win32Platform(null, arch); }
public void Setup() { mr = new MockRepository(); mockFactory = new MockFactory(mr); arch = new X86ArchitectureFlat32(); platform = new Win32Platform(null, arch); }
public OperandRewriter(IntelArchitecture arch, ExpressionEmitter emitter, Frame frame, IRewriterHost host) { this.arch = arch; this.m = emitter; this.frame = frame; this.host = host; }
public void MspRealModeServices() { mr.ReplayAll(); IntelArchitecture arch = new IntelArchitecture(ProcessorMode.Real); IPlatform platform = new MsdosPlatform(sc, arch); var state = arch.CreateProcessorState(); state.SetRegister(Registers.ah, Constant.Byte(0x3E)); SystemService svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_close_file", svc.Name); Assert.AreEqual(1, svc.Signature.Parameters.Length); Assert.IsFalse(svc.Characteristics.Terminates, "close() shouldn't terminate program"); state.SetRegister(Registers.ah, Constant.Byte(0x4C)); svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_terminate", svc.Name); Assert.AreEqual(1, svc.Signature.Parameters.Length); Assert.IsTrue(svc.Characteristics.Terminates, "terminate() should terminate program"); state.SetRegister(Registers.ah, Constant.Byte(0x2F)); svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_get_disk_transfer_area_address", svc.Name); Assert.AreEqual(0, svc.Signature.Parameters.Length); SequenceStorage seq = (SequenceStorage) svc.Signature.ReturnValue.Storage; Assert.AreEqual("es", seq.Head.Name); Assert.AreEqual("bx", seq.Tail.Name); }
public X86State(X86State st) : base(st) { arch = st.arch; FpuStackItems = st.FpuStackItems; regs = (ulong[])st.regs.Clone(); valid = (bool []) st.valid.Clone(); }
private void BuildTest16(Action<X86Assembler> asmProg) { sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); arch = new X86ArchitectureReal(); BuildTest(Address.SegPtr(0x0C00, 0x0000), new MsdosPlatform(sc, arch), asmProg); }
public void Setup() { repository = new MockRepository(); sc = new ServiceContainer(); arch = new IntelArchitecture(ProcessorMode.Protected32); dcSvc = repository.StrictMock<IConfigurationService>(); }
public void Setup() { mr = new MockRepository(); this.services = mr.Stub<IServiceProvider>(); var tlSvc = new TypeLibraryLoaderServiceImpl(services); var configSvc = mr.StrictMock<IConfigurationService>(); var win32env = new OperatingEnvironmentElement { TypeLibraries = { new TypeLibraryElement { Name= "msvcrt.xml" }, new TypeLibraryElement { Name= "windows32.xml" }, } }; configSvc.Stub(c => c.GetEnvironment("win32")).Return(win32env); configSvc.Stub(c => c.GetInstallationRelativePath(null)).IgnoreArguments() .Do(new Func<string[], string>(s => string.Join("/", s))); services.Stub(s => s.GetService(typeof(ITypeLibraryLoaderService))).Return(tlSvc); services.Stub(s => s.GetService(typeof(IConfigurationService))).Return(configSvc); services.Stub(s => s.GetService(typeof(DecompilerEventListener))).Return(new FakeDecompilerEventListener()); services.Stub(s => s.GetService(typeof(CancellationTokenSource))).Return(null); services.Stub(s => s.GetService(typeof(IFileSystemService))).Return(new FileSystemServiceImpl()); services.Stub(s => s.GetService(typeof(IDiagnosticsService))).Return(new FakeDiagnosticsService()); services.Replay(); configSvc.Replay(); arch = new X86ArchitectureFlat32(); win32 = new Reko.Environments.Windows.Win32Platform(services, arch); }
public void Setup() { var arch = new IntelArchitecture(ProcessorMode.Protected32); f = arch.CreateFrame(); liveness = new IdentifierLiveness(arch); isLiveHelper = new RegisterLiveness.IsLiveHelper(arch); }
public void Setup() { mr = new MockRepository(); arch = new X86ArchitectureFlat32(); importReferences = new Dictionary<Address, ImportReference>(); sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); }
public X86Emulator(IntelArchitecture arch, LoadedImage loadedImage, IPlatformEmulator envEmulator) { this.arch = arch; this.img = loadedImage; this.Registers = new ulong[40]; this.Valid = new bool[40]; this.envEmulator = envEmulator; }
public void Setup() { arch = new IntelArchitecture(ProcessorMode.Real); f = new Frame(PrimitiveType.Word16); argOff = f.EnsureStackArgument(4, PrimitiveType.Word16); argSeg = f.EnsureStackArgument(6, PrimitiveType.SegmentSelector); arg_alias = f.EnsureStackArgument(4, PrimitiveType.Pointer32); }
private X86Assembler Create16bitAssembler() { arch = arch16; baseAddr = baseAddr16; var asm = new X86Assembler(arch, baseAddr16, new List<EntryPoint>()); host = new RewriterHost(asm.ImportReferences); return asm; }
public void Fstsw_Setup() { arch = new IntelArchitecture(ProcessorMode.Protected32); asm = new X86Assembler(arch, Address.Ptr32(0x10000), new List<EntryPoint>()); Procedure proc = new Procedure("test", arch.CreateFrame()); orw = new OperandRewriter32(arch, proc.Frame, null); emitter = new ProcedureBuilder(); }
public void TestGrfWithOneBit() { IProcessorArchitecture arch = new IntelArchitecture(ProcessorMode.Real); SignatureBuilder sb = new SignatureBuilder(null, arch); sb.AddFlagGroupReturnValue((uint) FlagM.CF, arch.CreateFrame()); ProcedureSignature sig = sb.BuildSignature(); Assert.AreEqual("bool", sig.ReturnValue.DataType.ToString()); }
public X86Emulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator) { this.arch = arch; this.map = segmentMap; this.Registers = new ulong[40]; this.Valid = new bool[40]; this.envEmulator = envEmulator; }
public void Fstsw_Setup() { arch = new X86ArchitectureFlat32(); asm = new X86Assembler(null, new DefaultPlatform(null, new X86ArchitectureFlat32()), Address.Ptr32(0x10000), new List<ImageSymbol>()); Procedure proc = new Procedure("test", arch.CreateFrame()); orw = new OperandRewriter32(arch, proc.Frame, null); emitter = new ProcedureBuilder(); }
public void Setup() { mr = new MockRepository(); arch = new IntelArchitecture(ProcessorMode.Protected32); importReferences = new Dictionary<Address, ImportReference>(); sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); }
public void IaCreate() { arch = new X86ArchitectureReal(); Assert.AreEqual(PrimitiveType.Word16, arch.WordWidth); arch = new X86ArchitectureFlat32(); Assert.AreEqual(PrimitiveType.Word32, arch.WordWidth); arch = new X86ArchitectureProtected16(); Assert.AreEqual(PrimitiveType.Word16, arch.WordWidth); }
public X86RewriterTests() { arch16 = new IntelArchitecture(ProcessorMode.Real); arch32 = new IntelArchitecture(ProcessorMode.Protected32); arch64 = new IntelArchitecture(ProcessorMode.Protected64); baseAddr16 = Address.SegPtr(0x0C00, 0x0000); baseAddr32 = Address.Ptr32(0x10000000); baseAddr64 = Address.Ptr64(0x140000000ul); }
public X86RewriterTests() { arch16 = new X86ArchitectureReal(); arch32 = new X86ArchitectureFlat32(); arch64 = new X86ArchitectureFlat64(); baseAddr16 = Address.SegPtr(0x0C00, 0x0000); baseAddr32 = Address.Ptr32(0x10000000); baseAddr64 = Address.Ptr64(0x140000000ul); }
public void IaCreate() { arch = new IntelArchitecture(ProcessorMode.Real); Assert.AreEqual(PrimitiveType.Word16, arch.WordWidth); arch = new IntelArchitecture(ProcessorMode.Protected32); Assert.AreEqual(PrimitiveType.Word32, arch.WordWidth); arch = new IntelArchitecture(ProcessorMode.ProtectedSegmented); Assert.AreEqual(PrimitiveType.Word16, arch.WordWidth); }
public void SetUp() { var arch = new IntelArchitecture(ProcessorMode.Real); program = new Program() { Architecture = arch }; sc = new ServiceContainer(); sc.AddService<IFileSystemService>(new FileSystemServiceImpl()); asm = new X86TextAssembler(sc, arch); configFile = null; }
public X86Rewriter( IntelArchitecture arch, IRewriterHost host, X86State state, EndianImageReader rdr, IStorageBinder binder) { this.arch = arch; this.host = host ?? throw new ArgumentNullException("host"); this.state = state; this.rdr = rdr; this.binder = binder; this.dasm = new LookaheadEnumerator <X86Instruction>(arch.CreateDisassemblerImpl(rdr)); }
public X86Rewriter( IntelArchitecture arch, IRewriterHost host, X86State state, ImageReader rdr, Frame frame) { if (host == null) { throw new ArgumentNullException("host"); } this.arch = arch; this.host = host; this.frame = frame; this.state = state; this.dasm = new LookaheadEnumerator <X86Instruction>(arch.CreateDisassemblerImpl(rdr)); }
public Constant GetFlagGroup(uint mask) { bool sigle = IntelArchitecture.IsSingleBit(mask); if ((mask & validFlags) == mask) { if (sigle) { return(Constant.Bool((flags & mask) != 0)); } else { return(Constant.Byte((byte)(flags & mask))); } } else { return(Constant.Invalid); } }
public override OperandRewriter CreateOperandRewriter(IntelArchitecture arch, ExpressionEmitter m, IStorageBinder binder, IRewriterHost host) { return(new OperandRewriter64(arch, m, binder, host)); }
public OperandRewriter64(IntelArchitecture arch, ExpressionEmitter m, IStorageBinder binder, IRewriterHost host) : base(arch, m, binder, host) { }
public OperandRewriter(IntelArchitecture arch, Frame frame, IRewriterHost host) { this.arch = arch; this.frame = frame; this.host = host; }
public X86ProcedureSerializer(IntelArchitecture arch, ISerializedTypeVisitor <DataType> typeLoader, string defaultCc) : base(arch, typeLoader, defaultCc) { }
public StringInstructionRewriter(IntelArchitecture arch, OperandRewriter orw) { this.arch = arch; this.orw = orw; }
public X86Protected32Emulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator) : base(arch, segmentMap, envEmulator, X86.Registers.eip, X86.Registers.ecx) { }
public OperandRewriter32(IntelArchitecture arch, ExpressionEmitter m, IStorageBinder frame, IRewriterHost host) : base(arch, m, frame, host) { }
public override OperandRewriter CreateOperandRewriter(IntelArchitecture arch, Frame frame, IRewriterHost host) { return(new OperandRewriter64(arch, frame, host)); }
public abstract OperandRewriter CreateOperandRewriter(IntelArchitecture arch, Frame frame, IRewriterHost host);
public abstract IProcessorEmulator CreateEmulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator);
public X86RealModeEmulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator) : base(arch, segmentMap, envEmulator, X86.Registers.ip, X86.Registers.cx) { }
public OperandRewriter64(IntelArchitecture arch, ExpressionEmitter m, Frame frame, IRewriterHost host) : base(arch, m, frame, host) { }
public override IProcessorEmulator CreateEmulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator) { return(new X86Protected32Emulator(arch, segmentMap, envEmulator)); }
public X86State(IntelArchitecture arch) { this.arch = arch; this.regs = new ulong[(int)Registers.Max]; this.valid = new ulong[(int)Registers.Max]; }
public abstract OperandRewriter CreateOperandRewriter(IntelArchitecture arch, ExpressionEmitter m, IStorageBinder binder, IRewriterHost host);
public override OperandRewriter CreateOperandRewriter(IntelArchitecture arch, ExpressionEmitter m, Frame frame, IRewriterHost host) { return(new OperandRewriter32(arch, m, frame, host)); }
public OperandRewriter64(IntelArchitecture arch, Frame frame, IRewriterHost host) : base(arch, frame, host) { }
public abstract OperandRewriter CreateOperandRewriter(IntelArchitecture arch, ExpressionEmitter m, Frame frame, IRewriterHost host);
public override IProcessorEmulator CreateEmulator(IntelArchitecture arch, SegmentMap segmentMap, IPlatformEmulator envEmulator) { throw new NotImplementedException(); }
public X86State(X86State st) : base(st) { arch = st.arch; regs = (ulong[])st.regs.Clone(); valid = (ulong [])st.valid.Clone(); }