protected MachineInstruction Disassemble(uint instr) { var image = new LoadedImage(Address.Ptr32(0x00100000), new byte[4]); LeImageWriter w = new LeImageWriter(image.Bytes); w.WriteLeUInt32(0, instr); var arch = CreateArchitecture(); var dasm = CreateDisassembler(arch, image.CreateLeReader(0)); Assert.IsTrue(dasm.MoveNext()); return dasm.Current; }
protected LoadedImage CreateImage(Address addr, params uint[] opcodes) { byte[] bytes = new byte[0x20]; var writer = new LeImageWriter(bytes); uint offset = 0; for (int i = 0; i < opcodes.Length; ++i, offset += 4) { writer.WriteLeUInt32(offset, opcodes[i]); } return new LoadedImage(addr, bytes); }
protected MachineInstruction DisassembleBits(string bitPattern) { var image = new LoadedImage(Address.Ptr32(0x00100000), new byte[4]); LeImageWriter w = new LeImageWriter(image.Bytes); uint instr = ParseBitPattern(bitPattern); w.WriteLeUInt32(0, instr); var b = image.Bytes; Debug.Print("Instruction bytes: {0:X2} {1:X2} {2:X2} {3:X2}", b[0], b[1], b[2], b[3]); var arch = CreateArchitecture(); var dasm = arch.CreateDisassembler(image.CreateLeReader(0)); return dasm.First(); }