Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
            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;
            }
Пример #4
0
 public MiniDWordWatch(MemoryDomain domain, long addr, bool bigEndian)
 {
     Address = addr;
     _previous = domain.PeekUint(Address % domain.Size, bigEndian);
 }
Пример #5
0
 public void SetPreviousToCurrent(MemoryDomain domain, bool bigendian)
 {
     _previous = _prevFrame = domain.PeekUint(Address % domain.Size, bigendian);
 }