示例#1
0
		public string Disassemble(MemoryDomain m, uint addr, out int length)
		{
			_disassemblerInstance.ReadWord = (a) => (short)m.PeekWord(a, m.EndianType == MemoryDomain.Endian.Big);
			_disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a);
			_disassemblerInstance.ReadLong = (a) => (int)m.PeekDWord(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.PeekDWord(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 SetPreviousToCurrent(MemoryDomain domain, bool bigendian)
			{
				_previous = domain.PeekDWord(Address, bigendian);
			}
示例#4
0
			public MiniDWordWatch(MemoryDomain domain, int addr, bool bigEndian)
			{
				Address = addr;
				_previous = domain.PeekDWord(Address % domain.Size, bigEndian);
			}
示例#5
0
			public void Update(Watch.PreviousType type, MemoryDomain domain, bool bigendian)
			{
				var value = domain.PeekDWord(Address % domain.Size, bigendian);
				if (value != Previous)
				{
					_changecount++;
				}

				switch (type)
				{
					case Watch.PreviousType.Original:
					case Watch.PreviousType.LastSearch:
						break;
					case Watch.PreviousType.LastFrame:
						_previous = _prevFrame;
						break;
				}

				_prevFrame = value;
			}