protected void DoDecodeInstruction(TargetMemoryAccess memory,
TargetAddress address)
{
TargetReader reader = new TargetReader (
memory.ReadMemory (address, MaxInstructionLength));
while (CheckPrefix (reader))
reader.Offset++;
byte opcode = reader.ReadByte ();
if (opcode == 0x0f)
TwoByteOpcode (reader);
else
OneByteOpcode (reader, opcode);
if (InstructionType != Type.Unknown) {
insn_size = (int) reader.Offset;
has_insn_size = true;
} else {
insn_size = Opcodes.Disassembler.GetInstructionSize (memory, address);
has_insn_size = true;
}
if (has_insn_size) {
code = new byte [insn_size];
Array.Copy (reader.Contents, 0, code, 0, insn_size);
}
}