private IEnumerable <RtlInstructionCluster> CreateA32Rewriter(ByteMemoryArea mem) { var arch = new Arm32Architecture(sc, "arm", new Dictionary <string, object>()); var rdr = new LeImageReader(mem, mem.BaseAddress); var rw = arch.CreateRewriter(rdr, arch.CreateProcessorState(), new StorageBinder(), new RewriterHost(new Dictionary <Address, ImportReference>())); return(rw); }
public void ArmArch_CreateRewriter() { this.arch = new Arm32Architecture("arm32"); var mem = new MemoryArea(Address.Ptr32(0x00123400), new byte[] { 0x03, 0x10, 0x12, 0xE0 }); var rdr = mem.CreateLeReader(0); var rw = arch.CreateRewriter(rdr, new AArch32ProcessorState(arch), new StorageBinder(), null); var rtl = rw.First().Instructions[0]; Assert.AreEqual("r1 = r2 & r3", rtl.ToString()); }
protected override IEnumerable <RtlInstructionCluster> GetInstructionStream(IStorageBinder binder, IRewriterHost host) { return(arch.CreateRewriter(new LeImageReader(image, 0), new ArmProcessorState(arch), binder, host)); }