예제 #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 void SetPreviousToCurrent(MemoryDomain domain, bool bigendian)
 {
     _previous = _prevFrame = domain.PeekUshort(Address % domain.Size, bigendian);
 }
예제 #3
0
            public void Update(PreviousType type, MemoryDomain domain, bool bigendian)
            {
                var value = domain.PeekUshort(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 MiniWordWatch(MemoryDomain domain, long addr, bool bigEndian)
 {
     Address = addr;
     _previous = domain.PeekUshort(Address % domain.Size, bigEndian);
 }