public string Disassemble(MemoryDomain m, uint addr, out int length) { _disassemblerInstance.ReadWord = (a) => (short)m.PeekUshort(a, m.EndianType == MemoryDomain.Endian.Big); _disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a); _disassemblerInstance.ReadLong = (a) => (int)m.PeekUint(a, m.EndianType == MemoryDomain.Endian.Big); var info = _disassemblerInstance.Disassemble((int)addr); length = info.Length; return string.Format("{0:X4} {1,-7} {2}", info.RawBytes.Substring(0, 4), info.Mnemonic, info.Args); }
public string Disassemble(MemoryDomain m, uint addr, out int length) { length = 4; // TODO: is this right? var instruction = m.PeekUint(addr, true); //TODO - reserve buffer here for disassembling into. allocating repeatedly will be slower var result = api.m64p_decode_op(instruction, addr); string strResult = Marshal.PtrToStringAnsi(result); return strResult; }
public void Update(PreviousType type, MemoryDomain domain, bool bigendian) { var value = domain.PeekUint(Address % domain.Size, bigendian); if (value != Previous) { _changecount++; } switch (type) { case PreviousType.Original: case PreviousType.LastSearch: break; case PreviousType.LastFrame: _previous = _prevFrame; break; case PreviousType.LastChange: if (_prevFrame != value) _previous = _prevFrame; break; } _prevFrame = value; }
public MiniDWordWatch(MemoryDomain domain, long addr, bool bigEndian) { Address = addr; _previous = domain.PeekUint(Address % domain.Size, bigEndian); }
public void SetPreviousToCurrent(MemoryDomain domain, bool bigendian) { _previous = _prevFrame = domain.PeekUint(Address % domain.Size, bigendian); }