public override IntelInstruction Decode(X86Disassembler disasm, byte op, string opFormat) { int grp = Group - 1; byte modRm; if (!disasm.TryEnsureModRM(out modRm)) { return(null); } OpRec opRec = s_aOpRecGrp[grp * 8 + ((modRm >> 3) & 0x07)]; return(opRec.Decode(disasm, op, opFormat + format)); }
public override IntelInstruction Decode(X86Disassembler disasm, byte op, string opFormat) { byte modRm; if (!disasm.TryEnsureModRM(out modRm)) { return(null); } if ((modRm & 0xC0) == 0xC0) { return(regInstrs[modRm & 0x07].Decode(disasm, op, opFormat)); } else { return(memInstr.Decode(disasm, op, opFormat)); } }
public override IntelInstruction Decode(X86Disassembler disasm, byte op, string opFormat) { byte modRM; if (!disasm.TryEnsureModRM(out modRM)) { return(null); } OpRec opRec; int iOpRec = (op & 0x07) * 0x48; if (modRM < 0xC0) { opRec = s_aFpOpRec[iOpRec + ((modRM >> 3) & 0x07)]; } else { opRec = s_aFpOpRec[iOpRec + modRM - 0xB8]; } return(opRec.Decode(disasm, op, opFormat)); }