Beispiel #1
0
            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));
            }
Beispiel #2
0
            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));
                }
            }
Beispiel #3
0
            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));
            }