public override MipsInstruction Decode(uint wInstr, NanoMipsDisassembler dasm) { if (!dasm.rdr.TryReadUInt16(out ushort uLow16bits)) return dasm.CreateInvalidInstruction(); var uInstr32 = (wInstr << 16) | uLow16bits; return decoder.Decode(uInstr32, dasm); }
protected override IEnumerable <RtlInstructionCluster> GetRtlStream(MemoryArea mem, IStorageBinder binder, IRewriterHost host) { var rdr = arch.CreateImageReader(mem, mem.BaseAddress); var dasm = new NanoMipsDisassembler(arch, rdr); var rewriter = new MipsRewriter(arch, rdr, dasm, binder, host); return(rewriter); }
public override MipsInstruction Decode(uint wInstr, NanoMipsDisassembler dasm) { if (!dasm.rdr.TryReadUInt16(out ushort uLowBits)) return dasm.CreateInvalidInstruction(); ulong ulInstr = wInstr; ulInstr = (ulInstr << 16) | uLowBits; return this.decoder.Decode(ulInstr, dasm); }
public void NanoMipsDis_Generate() { var ab = new byte[1000]; var rnd = new Random(0x4711); rnd.NextBytes(ab); var mem = new MemoryArea(Address.Ptr32(0x00100000), ab); var rdr = new BeImageReader(mem, 0); var dasm = new NanoMipsDisassembler(arch, rdr); foreach (var instr in dasm) { } }