Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
 protected override IEnumerable <RtlInstructionCluster> GetInstructionStream(IStorageBinder binder, IRewriterHost host)
 {
     return(arch.CreateRewriter(new LeImageReader(image, 0), new ArmProcessorState(arch), binder, host));
 }