예제 #1
0
  public Instruction decode(
      byte[] bytesArray,
      int index,
      int instrStartIndex,
      int segmentOverride,
      int prefixes,
      X86InstructionFactory factory) {
    this.byteIndex = index;
    this.instrStartIndex = instrStartIndex;
    this.prefixes = prefixes;

    int ModRM = readByte(bytesArray, byteIndex);
    int rm = ModRM & 7;

    FPInstructionDecoder instrDecoder = null;
    instrDecoder = floatGRPMap[number][rm];

    Instruction instr = null;
    if (instrDecoder != null) {
      instr =
          instrDecoder.decode(
              bytesArray, byteIndex, instrStartIndex, segmentOverride, prefixes, factory);
      byteIndex = instrDecoder.getCurrentIndex();
    } else {
      instr = factory.newIllegalInstruction();
    }
    return instr;
  }