Annotation of mstools/samples/sdktools/image/drwatson/i386/disasm.h, revision 1.1

1.1     ! root        1: /********************************** module *********************************/
        !             2: /*                                                                         */
        !             3: /*                                 disasmtb                                */
        !             4: /*                           disassembler for CodeView                     */
        !             5: /*                                                                         */
        !             6: /***************************************************************************/
        !             7: /*                                                                         */
        !             8: /*    @ Purpose:                                                           */
        !             9: /*                                                                         */
        !            10: /*    @ Functions included:                                                */
        !            11: /*                                                                         */
        !            12: /*                                                                         */
        !            13: /*    @ Author: Gerd Immeyer              @ Version:                       */
        !            14: /*                                                                         */
        !            15: /*    @ Creation Date: 10.19.89           @ Modification Date:             */
        !            16: /*                                                                         */
        !            17: /***************************************************************************/
        !            18: 
        !            19: 
        !            20: 
        !            21: /* Strings: Operand mnemonics, Segment overrides, etc. for disasm          */
        !            22: 
        !            23: char dszAAA[]       = "aaa";
        !            24: char dszAAD[]       = "aad";
        !            25: char dszAAM[]       = "aam";
        !            26: char dszAAS[]       = "aas";
        !            27: char dszADC[]       = "adc";
        !            28: char dszADD[]       = "add";
        !            29: char dszADDRPRFX[]  = "";
        !            30: char dszAND[]       = "and";
        !            31: char dszARPL[]      = "arpl";
        !            32: char dszBOUND[]     = "bound";
        !            33: char dszBSF[]       = "bsf";
        !            34: char dszBSR[]       = "bsr";
        !            35: char dszBST[]       = "bst";
        !            36: char dszBSWAP[]     = "bswap";
        !            37: char dszBT[]        = "bt";
        !            38: char dszBTC[]       = "btc";
        !            39: char dszBTR[]       = "btr";
        !            40: char dszBTS[]       = "bts";
        !            41: char dszCALL[]      = "call";
        !            42: char dszCBW[]       = "cbw";
        !            43: char dszCDQ[]       = "cdq";
        !            44: char dszCLC[]       = "clc";
        !            45: char dszCLD[]       = "cld";
        !            46: char dszCLI[]       = "cli";
        !            47: char dszCLTS[]      = "clts";
        !            48: char dszCMC[]       = "cmc";
        !            49: char dszCMP[]       = "cmp";
        !            50: char dszCMPS[]      = "cmps";
        !            51: char dszCMPSB[]     = "cmpsb";
        !            52: char dszCMPSD[]     = "cmpsd";
        !            53: char dszCMPSW[]     = "cmpsw";
        !            54: char dszCMPXCHG[]   = "cmpxchg";
        !            55: char dszCMPXCHG8B[] = "cmpxchg8b";
        !            56: char dszCPUID[]     = "cpuid";
        !            57: char dszCS_[]       = "cs:";
        !            58: char dszCWD[]       = "cwd";
        !            59: char dszCWDE[]      = "cwde";
        !            60: char dszDAA[]       = "daa";
        !            61: char dszDAS[]       = "das";
        !            62: char dszDEC[]       = "dec";
        !            63: char dszDIV[]       = "div";
        !            64: char dszDS_[]       = "ds:";
        !            65: char dszENTER[]     = "enter";
        !            66: char dszES_[]       = "es:";
        !            67: char dszF2XM1[]     = "f2xm1";
        !            68: char dszFABS[]      = "fabs";
        !            69: char dszFADD[]      = "fadd";
        !            70: char dszFADDP[]     = "faddp";
        !            71: char dszFBLD[]      = "fbld";
        !            72: char dszFBSTP[]     = "fbstp";
        !            73: char dszFCHS[]      = "fchs";
        !            74: char dszFCLEX[]     = "fclex";
        !            75: char dszFCOM[]      = "fcom";
        !            76: char dszFCOMP[]     = "fcomp";
        !            77: char dszFCOMPP[]    = "fcompp";
        !            78: char dszFCOS[]      = "fcos";
        !            79: char dszFDECSTP[]   = "fdecstp";
        !            80: char dszFDISI[]     = "fdisi";
        !            81: char dszFDIV[]      = "fdiv";
        !            82: char dszFDIVP[]     = "fdivp";
        !            83: char dszFDIVR[]     = "fdivr";
        !            84: char dszFDIVRP[]    = "fdivrp";
        !            85: char dszFENI[]      = "feni";
        !            86: char dszFFREE[]     = "ffree";
        !            87: char dszFIADD[]     = "fiadd";
        !            88: char dszFICOM[]     = "ficom";
        !            89: char dszFICOMP[]    = "ficomp";
        !            90: char dszFIDIV[]     = "fidiv";
        !            91: char dszFIDIVR[]    = "fidivr";
        !            92: char dszFILD[]      = "fild";
        !            93: char dszFIMUL[]     = "fimul";
        !            94: char dszFINCSTP[]   = "fincstp";
        !            95: char dszFINIT[]     = "finit";
        !            96: char dszFIST[]      = "fist";
        !            97: char dszFISTP[]     = "fistp";
        !            98: char dszFISUB[]     = "fisub";
        !            99: char dszFISUBR[]    = "fisubr";
        !           100: char dszFLD[]       = "fld";
        !           101: char dszFLD1[]      = "fld1";
        !           102: char dszFLDCW[]     = "fldcw";
        !           103: char dszFLDENV[]    = "fldenv";
        !           104: char dszFLDL2E[]    = "fldl2e";
        !           105: char dszFLDL2T[]    = "fldl2t";
        !           106: char dszFLDLG2[]    = "fldlg2";
        !           107: char dszFLDLN2[]    = "fldln2";
        !           108: char dszFLDPI[]     = "fldpi";
        !           109: char dszFLDZ[]      = "fldz";
        !           110: char dszFMUL[]      = "fmul";
        !           111: char dszFMULP[]     = "fmulp";
        !           112: char dszFNCLEX[]    = "fnclex";
        !           113: char dszFNDISI[]    = "fndisi";
        !           114: char dszFNENI[]     = "fneni";
        !           115: char dszFNINIT[]    = "fninit";
        !           116: char dszFNOP[]      = "fnop";
        !           117: char dszFNSAVE[]    = "fnsave";
        !           118: char dszFNSTCW[]    = "fnstcw";
        !           119: char dszFNSTENV[]   = "fnstenv";
        !           120: char dszFNSTSW[]    = "fnstsw";
        !           121: char dszFNSTSWAX[]  = "fnstswax";
        !           122: char dszFPATAN[]    = "fpatan";
        !           123: char dszFPREM[]     = "fprem";
        !           124: char dszFPREM1[]    = "fprem1";
        !           125: char dszFPTAN[]     = "fptan";
        !           126: char dszFRNDINT[]   = "frndint";
        !           127: char dszFRSTOR[]    = "frstor";
        !           128: char dszFSAVE[]     = "fsave";
        !           129: char dszFSCALE[]    = "fscale";
        !           130: char dszFSETPM[]    = "fsetpm";
        !           131: char dszFSIN[]      = "fsin";
        !           132: char dszFSINCOS[]   = "fsincos";
        !           133: char dszFSQRT[]     = "fsqrt";
        !           134: char dszFST[]       = "fst";
        !           135: char dszFSTCW[]     = "fstcw";
        !           136: char dszFSTENV[]    = "fstenv";
        !           137: char dszFSTP[]      = "fstp";
        !           138: char dszFSTSW[]     = "fstsw";
        !           139: char dszFSTSWAX[]   = "fstswax";
        !           140: char dszFSUB[]      = "fsub";
        !           141: char dszFSUBP[]     = "fsubp";
        !           142: char dszFSUBR[]     = "fsubr";
        !           143: char dszFSUBRP[]    = "fsubrp";
        !           144: char dszFS_[]       = "fs:";
        !           145: char dszFTST[]      = "ftst";
        !           146: char dszFUCOM[]     = "fucom";
        !           147: char dszFUCOMP[]    = "fucomp";
        !           148: char dszFUCOMPP[]   = "fucompp";
        !           149: char dszFWAIT[]     = "fwait";
        !           150: char dszFXAM[]      = "fxam";
        !           151: char dszFXCH[]      = "fxch";
        !           152: char dszFXTRACT[]   = "fxtract";
        !           153: char dszFYL2X[]     = "fyl2x";
        !           154: char dszFYL2XP1[]   = "fyl2xp1";
        !           155: char dszGS_[]       = "gs:";
        !           156: char dszHLT[]       = "hlt";
        !           157: char dszIBTS[]      = "ibts";
        !           158: char dszIDIV[]      = "idiv";
        !           159: char dszIMUL[]      = "imul";
        !           160: char dszIN[]        = "in";
        !           161: char dszINC[]       = "inc";
        !           162: char dszINS[]       = "ins";
        !           163: char dszINSB[]      = "insb";
        !           164: char dszINSD[]      = "insd";
        !           165: char dszINSW[]      = "insw";
        !           166: char dszINT[]       = "int";
        !           167: char dszINTO[]      = "into";
        !           168: char dszIRET[]      = "iret";
        !           169: char dszIRETD[]     = "iretd";
        !           170: char dszJA[]        = "ja";
        !           171: char dszJAE[]       = "jae";
        !           172: char dszJB[]        = "jb";
        !           173: char dszJBE[]       = "jbe";
        !           174: char dszJC[]        = "jc";
        !           175: char dszJCXZ[]      = "jcxz";
        !           176: char dszJE[]        = "je";
        !           177: char dszJECXZ[]     = "jecxz";
        !           178: char dszJG[]        = "jg";
        !           179: char dszJGE[]       = "jge";
        !           180: char dszJL[]        = "jl";
        !           181: char dszJLE[]       = "jle";
        !           182: char dszJMP[]       = "jmp";
        !           183: char dszJNA[]       = "jna";
        !           184: char dszJNAE[]      = "jnae";
        !           185: char dszJNB[]       = "jnb";
        !           186: char dszJNBE[]      = "jnbe";
        !           187: char dszJNC[]       = "jnc";
        !           188: char dszJNE[]       = "jne";
        !           189: char dszJNG[]       = "jng";
        !           190: char dszJNGE[]      = "jnge";
        !           191: char dszJNL[]       = "jnl";
        !           192: char dszJNLE[]      = "jnle";
        !           193: char dszJNO[]       = "jno";
        !           194: char dszJNP[]       = "jnp";
        !           195: char dszJNS[]       = "jns";
        !           196: char dszJNZ[]       = "jnz";
        !           197: char dszJO[]        = "jo";
        !           198: char dszJP[]        = "jp";
        !           199: char dszJPE[]       = "jpe";
        !           200: char dszJPO[]       = "jpo";
        !           201: char dszJS[]        = "js";
        !           202: char dszJZ[]        = "jz";
        !           203: char dszLAHF[]      = "lahf";
        !           204: char dszLAR[]       = "lar";
        !           205: char dszLDS[]       = "lds";
        !           206: char dszLEA[]       = "lea";
        !           207: char dszLEAVE[]     = "leave";
        !           208: char dszLES[]       = "les";
        !           209: char dszLFS[]       = "lfs";
        !           210: char dszLGDT[]      = "lgdt";
        !           211: char dszLGS[]       = "lgs";
        !           212: char dszLIDT[]      = "lidt";
        !           213: char dszLLDT[]      = "lldt";
        !           214: char dszLMSW[]      = "lmsw";
        !           215: char dszLOADALL[]   = "loadall";
        !           216: char dszLOCK[]      = "lock";
        !           217: char dszLODS[]      = "lods";
        !           218: char dszLODSB[]     = "lodsb";
        !           219: char dszLODSD[]     = "lodsd";
        !           220: char dszLODSW[]     = "lodsw";
        !           221: char dszLOOP[]      = "loop";
        !           222: char dszLOOPE[]     = "loope";
        !           223: char dszLOOPNE[]    = "loopne";
        !           224: char dszLOOPNZ[]    = "loopnz";
        !           225: char dszLOOPZ[]     = "loopz";
        !           226: char dszLSL[]       = "lsl";
        !           227: char dszLSS[]       = "lss";
        !           228: char dszLTR[]       = "ltr";
        !           229: char dszMOV[]       = "mov";
        !           230: char dszMOVS[]      = "movs";
        !           231: char dszMOVSB[]     = "movsb";
        !           232: char dszMOVSD[]     = "movsd";
        !           233: char dszMOVSW[]     = "movsw";
        !           234: char dszMOVSX[]     = "movsx";
        !           235: char dszMOVZX[]     = "movzx";
        !           236: char dszMUL[]       = "mul";
        !           237: char dszNEG[]       = "neg";
        !           238: char dszNOP[]       = "nop";
        !           239: char dszNOT[]       = "not";
        !           240: char dszOPPRFX[]    = "";
        !           241: char dszOR[]        = "or";
        !           242: char dszOUT[]       = "out";
        !           243: char dszOUTS[]      = "outs";
        !           244: char dszOUTSB[]     = "outsb";
        !           245: char dszOUTSD[]     = "outsd";
        !           246: char dszOUTSW[]     = "outsw";
        !           247: char dszPOP[]       = "pop";
        !           248: char dszPOPA[]      = "popa";
        !           249: char dszPOPAD[]     = "popad";
        !           250: char dszPOPF[]      = "popf";
        !           251: char dszPOPFD[]     = "popfd";
        !           252: char dszPUSH[]      = "push";
        !           253: char dszPUSHA[]     = "pusha";
        !           254: char dszPUSHAD[]    = "pushad";
        !           255: char dszPUSHF[]     = "pushf";
        !           256: char dszPUSHFD[]    = "pushfd";
        !           257: char dszRCL[]       = "rcl";
        !           258: char dszRCR[]       = "rcr";
        !           259: char dszRDTSC[]     = "rdtsc";
        !           260: char dszRDMSR[]     = "rdmsr";
        !           261: char dszREP[]       = "rep ";
        !           262: char dszREPE[]      = "repe";
        !           263: char dszREPNE[]     = "repne ";
        !           264: char dszREPNZ[]     = "repnz";
        !           265: char dszREPZ[]      = "repz";
        !           266: char dszRET[]       = "ret";
        !           267: char dszRETF[]      = "retf";
        !           268: char dszRETN[]      = "retn";
        !           269: char dszROL[]       = "rol";
        !           270: char dszROR[]       = "ror";
        !           271: char dszRSM[]       = "rsm";
        !           272: char dszSAHF[]      = "sahf";
        !           273: char dszSAL[]       = "sal";
        !           274: char dszSAR[]       = "sar";
        !           275: char dszSBB[]       = "sbb";
        !           276: char dszSCAS[]      = "scas";
        !           277: char dszSCASB[]     = "scasb";
        !           278: char dszSCASD[]     = "scasd";
        !           279: char dszSCASW[]     = "scasw";
        !           280: char dszSETA[]      = "seta";
        !           281: char dszSETAE[]     = "setae";
        !           282: char dszSETB[]      = "setb";
        !           283: char dszSETBE[]     = "setbe";
        !           284: char dszSETC[]      = "setc";
        !           285: char dszSETE[]      = "sete";
        !           286: char dszSETG[]      = "setg";
        !           287: char dszSETGE[]     = "setge";
        !           288: char dszSETL[]      = "setl";
        !           289: char dszSETLE[]     = "setle";
        !           290: char dszSETNA[]     = "setna";
        !           291: char dszSETNAE[]    = "setnae";
        !           292: char dszSETNB[]     = "setnb";
        !           293: char dszSETNBE[]    = "setnbe";
        !           294: char dszSETNC[]     = "setnc";
        !           295: char dszSETNE[]     = "setne";
        !           296: char dszSETNG[]     = "setng";
        !           297: char dszSETNGE[]    = "setnge";
        !           298: char dszSETNL[]     = "setnl";
        !           299: char dszSETNLE[]    = "setnle";
        !           300: char dszSETNO[]     = "setno";
        !           301: char dszSETNP[]     = "setnp";
        !           302: char dszSETNS[]     = "setns";
        !           303: char dszSETNZ[]     = "setnz";
        !           304: char dszSETO[]      = "seto";
        !           305: char dszSETP[]      = "setp";
        !           306: char dszSETPE[]     = "setpe";
        !           307: char dszSETPO[]     = "setpo";
        !           308: char dszSETS[]      = "sets";
        !           309: char dszSETZ[]      = "setz";
        !           310: char dszSGDT[]      = "sgdt";
        !           311: char dszSHL[]       = "shl";
        !           312: char dszSHLD[]      = "shld";
        !           313: char dszSHR[]       = "shr";
        !           314: char dszSHRD[]      = "shrd";
        !           315: char dszSIDT[]      = "sidt";
        !           316: char dszSLDT[]      = "sldt";
        !           317: char dszSMSW[]      = "smsw";
        !           318: char dszSS_[]       = "ss:";
        !           319: char dszSTC[]       = "stc";
        !           320: char dszSTD[]       = "std";
        !           321: char dszSTI[]       = "sti";
        !           322: char dszSTOS[]      = "stos";
        !           323: char dszSTOSB[]     = "stosb";
        !           324: char dszSTOSD[]     = "stosd";
        !           325: char dszSTOSW[]     = "stosw";
        !           326: char dszSTR[]       = "str";
        !           327: char dszSUB[]       = "sub";
        !           328: char dszTEST[]      = "test";
        !           329: char dszVERR[]      = "verr";
        !           330: char dszVERW[]      = "verw";
        !           331: char dszWAIT[]      = "wait";
        !           332: char dszWRMSR[]     = "wrmsr";
        !           333: char dszXADD[]      = "xadd";
        !           334: char dszXBTS[]      = "xbts";
        !           335: char dszXCHG[]      = "xchg";
        !           336: char dszXLAT[]      = "xlat";
        !           337: char dszXOR[]       = "xor";
        !           338: char dszRESERVED[]  = "???";
        !           339: char dszMULTI[]     = "";
        !           340: char dszDB[]        = "db";
        !           341: 
        !           342: #define MRM        0x40
        !           343: #define COM        0x80
        !           344: #define END        0xc0
        !           345: 
        !           346: /* Enumeration of valid actions that can be included in the action table */
        !           347: 
        !           348: enum oprtyp { ADDRP,  ADR_OVR, ALSTR,   ALT,     AXSTR,  BOREG,
        !           349:               BREG,   BRSTR,   xBYTE,   CHR,     CREG,   xDWORD,
        !           350:               EDWORD, EGROUPT, FARPTR,  GROUP,   GROUPT, IB,
        !           351:               IST,    IST_ST,  IV,      IW,      LMODRM, MODRM,
        !           352:               NOP,    OFFS,    OPC0F,   OPR_OVR, QWORD,  REL16,
        !           353:               REL8,   REP,     SEG_OVR, SREG2,   SREG3,  ST_IST,
        !           354:               STROP,  TTBYTE,   UBYTE,   VAR,     VOREG,  VREG,
        !           355:               xWORD,  WREG,    WRSTR
        !           356:             };
        !           357: 
        !           358: /* Enumeration of indices into the action table for instruction classes */
        !           359: 
        !           360: #define O_DoDB          0
        !           361: #define O_NoOperands    0
        !           362: #define O_NoOpAlt5      O_NoOperands+1
        !           363: #define O_NoOpAlt4      O_NoOpAlt5+2
        !           364: #define O_NoOpAlt3      O_NoOpAlt4+2
        !           365: #define O_NoOpAlt1      O_NoOpAlt3+2
        !           366: #define O_NoOpAlt0      O_NoOpAlt1+2
        !           367: #define O_NoOpStrSI     O_NoOpAlt0+2
        !           368: #define O_NoOpStrDI     O_NoOpStrSI+2
        !           369: #define O_NoOpStrSIDI   O_NoOpStrDI+2
        !           370: #define O_bModrm_Reg    O_NoOpStrSIDI+2
        !           371: #define O_vModrm_Reg    O_bModrm_Reg+3
        !           372: #define O_Modrm_Reg     O_vModrm_Reg+3
        !           373: #define O_bReg_Modrm    O_Modrm_Reg+3
        !           374: #define O_fReg_Modrm    O_bReg_Modrm+3
        !           375: #define O_Reg_Modrm     O_fReg_Modrm+3
        !           376: #define O_AL_Ib         O_Reg_Modrm+3
        !           377: #define O_AX_Iv         O_AL_Ib+2
        !           378: #define O_sReg2         O_AX_Iv+2
        !           379: #define O_oReg          O_sReg2+1
        !           380: #define O_DoBound       O_oReg+1
        !           381: #define O_Iv            O_DoBound+3
        !           382: #define O_wModrm_Reg    O_Iv+1
        !           383: #define O_Ib            O_wModrm_Reg+3
        !           384: #define O_Imulb         O_Ib+1
        !           385: #define O_Imul          O_Imulb+4
        !           386: #define O_Rel8          O_Imul+4
        !           387: #define O_bModrm_Ib     O_Rel8+1
        !           388: #define O_Modrm_Ib      O_bModrm_Ib+3
        !           389: #define O_Modrm_Iv      O_Modrm_Ib+3
        !           390: #define O_Modrm_sReg3   O_Modrm_Iv+3
        !           391: #define O_sReg3_Modrm   O_Modrm_sReg3+3
        !           392: #define O_Modrm         O_sReg3_Modrm+3
        !           393: #define O_FarPtr        O_Modrm+2
        !           394: #define O_AL_Offs       O_FarPtr+1
        !           395: #define O_Offs_AL       O_AL_Offs+2
        !           396: #define O_AX_Offs       O_Offs_AL+2
        !           397: #define O_Offs_AX       O_AX_Offs+2
        !           398: #define O_oReg_Ib       O_Offs_AX+2
        !           399: #define O_oReg_Iv       O_oReg_Ib+2
        !           400: #define O_Iw            O_oReg_Iv+2
        !           401: #define O_Enter         O_Iw+1
        !           402: #define O_Ubyte_AL      O_Enter+2
        !           403: #define O_Ubyte_AX      O_Ubyte_AL+2
        !           404: #define O_AL_Ubyte      O_Ubyte_AX+2
        !           405: #define O_AX_Ubyte      O_AL_Ubyte+2
        !           406: #define O_DoInAL        O_AX_Ubyte+2
        !           407: #define O_DoInAX        O_DoInAL+3
        !           408: #define O_DoOutAL       O_DoInAX+3
        !           409: #define O_DoOutAX       O_DoOutAL+3
        !           410: #define O_Rel16         O_DoOutAX+3
        !           411: #define O_ADR_OVERRIDE  O_Rel16+1
        !           412: #define O_OPR_OVERRIDE  O_ADR_OVERRIDE+1
        !           413: #define O_SEG_OVERRIDE  O_OPR_OVERRIDE+1
        !           414: #define O_DoInt3        O_SEG_OVERRIDE+1
        !           415: 
        !           416: #if (O_DoInt3 != 115)
        !           417: #error "operand table has been modified!"
        !           418: #endif
        !           419: /* #define O_DoInt      O_DoInt3+2 */
        !           420: 
        !           421: #define O_DoInt         117
        !           422: #define O_OPC0F         O_DoInt+1
        !           423: #define O_GROUP11       O_OPC0F+1
        !           424: #define O_GROUP13       O_GROUP11+5
        !           425: #define O_GROUP12       O_GROUP13+5
        !           426: #define O_GROUP21       O_GROUP12+5
        !           427: #define O_GROUP22       O_GROUP21+5
        !           428: #define O_GROUP23       O_GROUP22+5
        !           429: #define O_GROUP24       O_GROUP23+6
        !           430: #define O_GROUP25       O_GROUP24+6
        !           431: #define O_GROUP26       O_GROUP25+6
        !           432: #define O_GROUP4        O_GROUP26+6
        !           433: #define O_GROUP6        O_GROUP4+4
        !           434: #define O_GROUP8        O_GROUP6+4
        !           435: #define O_GROUP31       O_GROUP8+5
        !           436: #define O_GROUP32       O_GROUP31+3
        !           437: #define O_GROUP5        O_GROUP32+3
        !           438: #define O_GROUP7        O_GROUP5+3
        !           439: #define O_x87_ESC       O_GROUP7+3
        !           440: #define O_bModrm        O_x87_ESC+2
        !           441: #define O_wModrm        O_bModrm+2
        !           442: #define O_dModrm        O_wModrm+2
        !           443: #define O_fModrm        O_dModrm+2
        !           444: #define O_vModrm        O_fModrm+2
        !           445: #define O_vModrm_Iv     O_vModrm+2
        !           446: #define O_Reg_bModrm    O_vModrm_Iv+3
        !           447: #define O_Reg_wModrm    O_Reg_bModrm+3
        !           448: #define O_Modrm_Reg_Ib  O_Reg_wModrm+3
        !           449: #define O_Modrm_Reg_CL  O_Modrm_Reg_Ib+4
        !           450: #define O_ST_iST        O_Modrm_Reg_CL+5
        !           451: #define O_iST           O_ST_iST+2
        !           452: #define O_iST_ST        O_iST+2
        !           453: #define O_qModrm        O_iST_ST+2
        !           454: #define O_tModrm        O_qModrm+2
        !           455: #define O_DoRep         O_tModrm+2
        !           456: #define O_Modrm_CReg    O_DoRep+1
        !           457: #define O_CReg_Modrm    O_Modrm_CReg+3
        !           458: #define O_AX_oReg       O_CReg_Modrm+3
        !           459: #define O_length        O_AX_oReg+3
        !           460: 
        !           461: #if( O_length > 255 )
        !           462: #error "operand table too large!"
        !           463: #endif
        !           464: 
        !           465: 
        !           466: /* The action table: range of lists of actions to be taken for each possible */
        !           467: /*   instruction class.                                                      */
        !           468: 
        !           469: static unsigned char actiontbl[] = {
        !           470: /* NoOperands  */ NOP+END,
        !           471: /* NoOpAlt5    */ ALT+END,   5,
        !           472: /* NoOpAlt4    */ ALT+END,   4,
        !           473: /* NoOpAlt3    */ ALT+END,   3,
        !           474: /* NoOpAlt1    */ ALT+END,   1,
        !           475: /* NoOpAlt0    */ ALT+END,   0,
        !           476: /* NoOpStrSI   */ STROP+END, 1,
        !           477: /* NoOpStrDI   */ STROP+END, 2,
        !           478: /* NoOpStrSIDI */ STROP+END, 3,
        !           479: /* bModrm_Reg  */ xBYTE+MRM, MODRM+COM,  BREG+END,
        !           480: /* vModrm_Reg  */ VAR+MRM,   LMODRM+COM, BREG+END,
        !           481: /* Modrm_Reg   */ VAR+MRM,   MODRM+COM,  VREG+END,
        !           482: /* bReg_Modrm  */ xBYTE+MRM, BREG+COM,   MODRM+END,
        !           483: /* fReg_Modrm  */ FARPTR+MRM,VREG+COM,   MODRM+END,
        !           484: /* Reg_Modrm   */ VAR+MRM,   VREG+COM,   MODRM+END,
        !           485: /* AL_Ib       */ ALSTR+COM, IB+END,
        !           486: /* AX_Iv       */ AXSTR+COM, IV+END,
        !           487: /* sReg2       */ SREG2+END,
        !           488: /* oReg        */ VOREG+END,
        !           489: /* DoBound     */ VAR+MRM,   VREG+COM,   MODRM+END,
        !           490: /* Iv          */ IV+END,
        !           491: /* wModrm_Reg  */ xWORD+MRM, LMODRM+COM, WREG+END,
        !           492: /* Ib          */ IB+END,
        !           493: /* Imulb       */ VAR+MRM,   VREG+COM,   MODRM+COM, IB+END,
        !           494: /* Imul        */ VAR+MRM,   VREG+COM,   MODRM+COM, IV+END,
        !           495: /* REL8        */ REL8+END,
        !           496: /* bModrm_Ib   */ xBYTE+MRM, LMODRM+COM, IB+END,
        !           497: /* Modrm_Ib    */ VAR+MRM,   LMODRM+COM, IB+END,
        !           498: /* Modrm_Iv    */ VAR+MRM,   LMODRM+COM, IV+END,
        !           499: /* Modrm_sReg3 */ xWORD+MRM, MODRM+COM,  SREG3+END,
        !           500: /* sReg3_Modrm */ xWORD+MRM, SREG3+COM,  MODRM+END,
        !           501: /* Modrm       */ VAR+MRM,   MODRM+END,
        !           502: /* FarPtr      */ ADDRP+END,
        !           503: /* AL_Offs     */ ALSTR+COM, OFFS+END,
        !           504: /* Offs_AL     */ OFFS+COM,  ALSTR+END,
        !           505: /* AX_Offs     */ AXSTR+COM, OFFS+END,
        !           506: /* Offs_AX     */ OFFS+COM,  AXSTR+END,
        !           507: /* oReg_Ib     */ BOREG+COM, IB+END,
        !           508: /* oReg_Iv     */ VOREG+COM, IV+END,
        !           509: /* Iw          */ IW+END,
        !           510: /* enter       */ IW+COM,    IB+END,
        !           511: /* Ubyte_AL    */ UBYTE+COM, ALSTR+END,
        !           512: /* Ubyte_AX    */ UBYTE+COM, AXSTR+END,
        !           513: /* AL_Ubyte    */ ALSTR+COM, UBYTE+END,
        !           514: /* AX_Ubyte    */ AXSTR+COM, UBYTE+END,
        !           515: /* DoInAL      */ ALSTR+COM, WRSTR+END,  2,
        !           516: /* DoInAX      */ AXSTR+COM, WRSTR+END,  2,
        !           517: /* DoOutAL     */ WRSTR+COM, 2,          ALSTR+END,
        !           518: /* DoOutAX     */ WRSTR+COM, 2,          AXSTR+END,
        !           519: /* REL16       */ REL16+END,
        !           520: /* ADR_OVERRIDE*/ ADR_OVR,
        !           521: /* OPR_OVERRIDE*/ OPR_OVR,
        !           522: /* SEG_OVERRIDE*/ SEG_OVR,
        !           523: /* DoInt3      */ CHR+END,   '3',
        !           524: /* DoInt       */ UBYTE+END,
        !           525: /* Opcode0F    */ OPC0F,
        !           526: /* group1_1    */ xBYTE+MRM, GROUP,      0,         LMODRM+COM, IB+END,
        !           527: /* group1_3    */ VAR+MRM,   GROUP,      0,         LMODRM+COM, IB+END,
        !           528: /* group1_2    */ VAR+MRM,   GROUP,      0,         LMODRM+COM, IV+END,
        !           529: /* group2_1    */ xBYTE+MRM, GROUP,      1,         LMODRM+COM, IB+END,
        !           530: /* group2_2    */ VAR+MRM,   GROUP,      1,         LMODRM+COM, IB+END,
        !           531: /* group2_3    */ xBYTE+MRM, GROUP,      1,         LMODRM+COM, CHR+END, '1',
        !           532: /* group2_4    */ VAR+MRM,   GROUP,      1,         LMODRM+COM, CHR+END, '1',
        !           533: /* group2_5    */ xBYTE+MRM, GROUP,      1,         LMODRM+COM, BRSTR+END, 1,
        !           534: /* group2_6    */ VAR+MRM,   GROUP,      1,         LMODRM+COM, BRSTR+END, 1,
        !           535: /* group4      */ xBYTE+MRM, GROUP,      2,         LMODRM+END,
        !           536: /* group6      */ xWORD+MRM, GROUP,      3,         LMODRM+END,
        !           537: /* group8      */ xWORD+MRM, GROUP,      4,         LMODRM+COM, IB+END,
        !           538: /* group3_1    */ xBYTE+MRM, GROUPT,     20,
        !           539: /* group3_2    */ VAR+MRM,   GROUPT,     21,
        !           540: /* group5      */ VAR+MRM,   GROUPT,     22,
        !           541: /* group7      */ NOP+MRM,   GROUPT,     23,
        !           542: /* x87_ESC     */ NOP+MRM,   EGROUPT,
        !           543: /* bModrm      */ xBYTE+MRM, LMODRM+END,
        !           544: /* wModrm      */ xWORD+MRM, LMODRM+END,
        !           545: /* dModrm      */ xDWORD+MRM,LMODRM+END,
        !           546: /* fModrm      */ FARPTR+MRM,LMODRM+END,
        !           547: /* vModrm      */ VAR+MRM,   LMODRM+END,
        !           548: /* vModrm_Iv   */ VAR+MRM,   LMODRM+COM, IV+END,
        !           549: /* reg_bModrm  */ xBYTE+MRM, VREG+COM,   LMODRM+END,
        !           550: /* reg_wModrm  */ xWORD+MRM, VREG+COM,   LMODRM+END,
        !           551: /* Modrm_Reg_Ib*/ VAR+MRM,   MODRM+COM,  VREG+COM,   IB+END,
        !           552: /* Modrm_Reg_CL*/ VAR+MRM,   MODRM+COM,  VREG+COM,   BRSTR+END, 1,
        !           553: /* ST_iST      */ NOP+MRM,   ST_IST+END,
        !           554: /* iST         */ NOP+MRM,   IST+END,
        !           555: /* iST_ST      */ NOP+MRM,   IST_ST+END,
        !           556: /* qModrm      */ QWORD+MRM, LMODRM+END,
        !           557: /* tModrm      */ TTBYTE+MRM, LMODRM+END,
        !           558: /* REP         */ REP,
        !           559: /* Modrm_CReg  */ EDWORD+MRM,MODRM+COM,  CREG+END,
        !           560: /* CReg_Modrm  */ EDWORD+MRM,CREG+COM,   MODRM+END,
        !           561: /* AX_oReg     */ AXSTR+COM, VOREG+END
        !           562:                   };
        !           563: 
        !           564: #if defined(_M_IX86)
        !           565: #define BUILDING_ON_X86 1
        !           566: #else
        !           567: #define BUILDING_ON_X86 0
        !           568: #endif
        !           569: 
        !           570: #if BUILDING_ON_X86 == 1
        !           571: #pragma pack(1)
        !           572: #endif
        !           573: 
        !           574: typedef struct Tdistbl{
        !           575:     char *instruct;
        !           576:     unsigned char opr;
        !           577:     } Tdistbl;
        !           578: 
        !           579: #if BUILDING_ON_X86 == 1
        !           580: #pragma pack()
        !           581: #endif
        !           582: 
        !           583: /* List of ordered pairs for each instruction:                           */
        !           584: /*    (pointer to string literal mnemonic,                               */
        !           585: /*     instruction class index for action table)                         */
        !           586: 
        !           587: static Tdistbl distbl[] = {
        !           588:     dszADD,   O_bModrm_Reg,             /* 00 ADD mem/reg, reg (byte)    */
        !           589:     dszADD,   O_Modrm_Reg,              /* 01 ADD mem/reg, reg (word)    */
        !           590:     dszADD,   O_bReg_Modrm,             /* 02 ADD reg, mem/reg (byte)    */
        !           591:     dszADD,   O_Reg_Modrm,              /* 03 ADD reg, mem/reg (word)    */
        !           592:     dszADD,   O_AL_Ib,                  /* 04 ADD AL, I                  */
        !           593:     dszADD,   O_AX_Iv,                  /* 05 ADD AX, I                  */
        !           594:     dszPUSH,  O_sReg2,                  /* 06 PUSH ES                    */
        !           595:     dszPOP,   O_sReg2,                  /* 07 POP ES                     */
        !           596:     dszOR,    O_bModrm_Reg,             /* 08 OR mem/reg, reg (byte)     */
        !           597:     dszOR,    O_Modrm_Reg,              /* 09 OR mem/reg, reg (word)     */
        !           598:     dszOR,    O_bReg_Modrm,             /* 0A OR reg, mem/reg (byte)     */
        !           599:     dszOR,    O_Reg_Modrm,              /* 0B OR reg, mem/reg (word)     */
        !           600:     dszOR,    O_AL_Ib,                  /* 0C OR AL, I                   */
        !           601:     dszOR,    O_AX_Iv,                  /* 0D OR AX, I                   */
        !           602:     dszPUSH,  O_sReg2,                  /* 0E PUSH CS                    */
        !           603:     dszMULTI, O_OPC0F,                  /* 0F CLTS & protection ctl(286) */
        !           604:     dszADC,   O_bModrm_Reg,             /* 10 ADC mem/reg, reg (byte)    */
        !           605:     dszADC,   O_Modrm_Reg,              /* 11 ADC mem/reg, reg (word)    */
        !           606:     dszADC,   O_bReg_Modrm,             /* 12 ADC reg, mem/reg (byte)    */
        !           607:     dszADC,   O_Reg_Modrm,              /* 13 ADC reg, mem/reg (word)    */
        !           608:     dszADC,   O_AL_Ib,                  /* 14 ADC AL, I                  */
        !           609:     dszADC,   O_AX_Iv,                  /* 15 ADC AX, I                  */
        !           610:     dszPUSH,  O_sReg2,                  /* 16 PUSH SS                    */
        !           611:     dszPOP,   O_sReg2,                  /* 17 POP SS                     */
        !           612:     dszSBB,   O_bModrm_Reg,             /* 18 SBB mem/reg, reg (byte)    */
        !           613:     dszSBB,   O_Modrm_Reg,              /* 19 SBB mem/reg, reg (word)    */
        !           614:     dszSBB,   O_bReg_Modrm,             /* 1A SBB reg, mem/reg (byte)    */
        !           615:     dszSBB,   O_Reg_Modrm,              /* 1B SBB reg, mem/reg (word)    */
        !           616:     dszSBB,   O_AL_Ib,                  /* 1C SBB AL, I                  */
        !           617:     dszSBB,   O_AX_Iv,                  /* 1D SBB AX, I                  */
        !           618:     dszPUSH,  O_sReg2,                  /* 1E PUSH DS                    */
        !           619:     dszPOP,   O_sReg2,                  /* 1F POP DS                     */
        !           620:     dszAND,   O_bModrm_Reg,             /* 20 AND mem/reg, reg (byte)    */
        !           621:     dszAND,   O_Modrm_Reg,              /* 21 AND mem/reg, reg (word)    */
        !           622:     dszAND,   O_bReg_Modrm,             /* 22 AND reg, mem/reg (byte)    */
        !           623:     dszAND,   O_Reg_Modrm,              /* 23 AND reg, mem/reg (word)    */
        !           624:     dszAND,   O_AL_Ib,                  /* 24 AND AL, I                  */
        !           625:     dszAND,   O_AX_Iv,                  /* 25 AND AX, I                  */
        !           626:     dszES_,   O_SEG_OVERRIDE,           /* 26 SEG ES:                    */
        !           627:     dszDAA,   O_NoOperands,             /* 27 DAA                        */
        !           628:     dszSUB,   O_bModrm_Reg,             /* 28 SUB mem/reg, reg (byte)    */
        !           629:     dszSUB,   O_Modrm_Reg,              /* 29 SUB mem/reg, reg (word)    */
        !           630:     dszSUB,   O_bReg_Modrm,             /* 2A SUB reg, mem/reg (byte)    */
        !           631:     dszSUB,   O_Reg_Modrm,              /* 2B SUB reg, mem/reg (word)    */
        !           632:     dszSUB,   O_AL_Ib,                  /* 2C SUB AL, I                  */
        !           633:     dszSUB,   O_AX_Iv,                  /* 2D SUB AX, I                  */
        !           634:     dszCS_,   O_SEG_OVERRIDE,           /* 2E SEG CS:                    */
        !           635:     dszDAS,   O_NoOperands,             /* 2F DAS                        */
        !           636:     dszXOR,   O_bModrm_Reg,             /* 30 XOR mem/reg, reg (byte)    */
        !           637:     dszXOR,   O_Modrm_Reg,              /* 31 XOR mem/reg, reg (word)    */
        !           638:     dszXOR,   O_bReg_Modrm,             /* 32 XOR reg, mem/reg (byte)    */
        !           639:     dszXOR,   O_Reg_Modrm,              /* 33 XOR reg, mem/reg (word)    */
        !           640:     dszXOR,   O_AL_Ib,                  /* 34 XOR AL, I                  */
        !           641:     dszXOR,   O_AX_Iv,                  /* 35 XOR AX, I                  */
        !           642:     dszSS_,   O_SEG_OVERRIDE,           /* 36 SEG SS:                    */
        !           643:     dszAAA,   O_NoOperands,             /* 37 AAA                        */
        !           644:     dszCMP,   O_bModrm_Reg,             /* 38 CMP mem/reg, reg (byte)    */
        !           645:     dszCMP,   O_Modrm_Reg,              /* 39 CMP mem/reg, reg (word)    */
        !           646:     dszCMP,   O_bReg_Modrm,             /* 3A CMP reg, mem/reg (byte)    */
        !           647:     dszCMP,   O_Reg_Modrm,              /* 3B CMP reg, mem/reg (word)    */
        !           648:     dszCMP,   O_AL_Ib,                  /* 3C CMP AL, I                  */
        !           649:     dszCMP,   O_AX_Iv,                  /* 3D CMP AX, I                  */
        !           650:     dszDS_,   O_SEG_OVERRIDE,           /* 3E SEG DS:                    */
        !           651:     dszAAS,   O_NoOperands,             /* 3F AAS                        */
        !           652:     dszINC,   O_oReg,                   /* 40 INC AX                     */
        !           653:     dszINC,   O_oReg,                   /* 41 INC CX                     */
        !           654:     dszINC,   O_oReg,                   /* 42 INC DX                     */
        !           655:     dszINC,   O_oReg,                   /* 43 INC BX                     */
        !           656:     dszINC,   O_oReg,                   /* 44 INC SP                     */
        !           657:     dszINC,   O_oReg,                   /* 45 INC BP                     */
        !           658:     dszINC,   O_oReg,                   /* 46 INC SI                     */
        !           659:     dszINC,   O_oReg,                   /* 47 INC DI                     */
        !           660:     dszDEC,   O_oReg,                   /* 48 DEC AX                     */
        !           661:     dszDEC,   O_oReg,                   /* 49 DEC CX                     */
        !           662:     dszDEC,   O_oReg,                   /* 4A DEC DX                     */
        !           663:     dszDEC,   O_oReg,                   /* 4B DEC BX                     */
        !           664:     dszDEC,   O_oReg,                   /* 4C DEC SP                     */
        !           665:     dszDEC,   O_oReg,                   /* 4D DEC BP                     */
        !           666:     dszDEC,   O_oReg,                   /* 4E DEC SI                     */
        !           667:     dszDEC,   O_oReg,                   /* 4F DEC DI                     */
        !           668:     dszPUSH,  O_oReg,                   /* 50 PUSH AX                    */
        !           669:     dszPUSH,  O_oReg,                   /* 51 PUSH CX                    */
        !           670:     dszPUSH,  O_oReg,                   /* 52 PUSH DX                    */
        !           671:     dszPUSH,  O_oReg,                   /* 53 PUSH BX                    */
        !           672:     dszPUSH,  O_oReg,                   /* 54 PUSH SP                    */
        !           673:     dszPUSH,  O_oReg,                   /* 55 PUSH BP                    */
        !           674:     dszPUSH,  O_oReg,                   /* 56 PUSH SI                    */
        !           675:     dszPUSH,  O_oReg,                   /* 57 PUSH DI                    */
        !           676:     dszPOP,   O_oReg,                   /* 58 POP AX                     */
        !           677:     dszPOP,   O_oReg,                   /* 59 POP CX                     */
        !           678:     dszPOP,   O_oReg,                   /* 5A POP DX                     */
        !           679:     dszPOP,   O_oReg,                   /* 5B POP BX                     */
        !           680:     dszPOP,   O_oReg,                   /* 5C POP SP                     */
        !           681:     dszPOP,   O_oReg,                   /* 5D POP BP                     */
        !           682:     dszPOP,   O_oReg,                   /* 5E POP SI                     */
        !           683:     dszPOP,   O_oReg,                   /* 5F POP DI                     */
        !           684:     dszPUSHA, O_NoOpAlt5,               /* 60 PUSHA (286) / PUSHAD (386) */
        !           685:     dszPOPA,  O_NoOpAlt4,               /* 61 POPA (286) / POPAD (286)   */
        !           686:     dszBOUND, O_DoBound,                /* 62 BOUND reg, Modrm (286)     */
        !           687:     dszARPL,  O_Modrm_Reg,              /* 63 ARPL Modrm, reg (286)      */
        !           688:     dszFS_,   O_SEG_OVERRIDE,           /* 64                            */
        !           689:     dszGS_,   O_SEG_OVERRIDE,           /* 65                            */
        !           690:     dszOPPRFX,O_OPR_OVERRIDE,           /* 66                            */
        !           691:     dszADDRPRFX,O_ADR_OVERRIDE,         /* 67                            */
        !           692:     dszPUSH,  O_Iv,                     /* 68 PUSH word (286)            */
        !           693:     dszIMUL,  O_Imul,                   /* 69 IMUL (286)                 */
        !           694:     dszPUSH,  O_Ib,                     /* 6A PUSH byte (286)            */
        !           695:     dszIMUL,  O_Imulb,                  /* 6B IMUL (286)                 */
        !           696:     dszINSB,  O_NoOperands,             /* 6C INSB (286)                 */
        !           697:     dszINSW,  O_NoOpAlt3,               /* 6D INSW (286) / INSD (386)    */
        !           698:     dszOUTSB, O_NoOperands,             /* 6E OUTSB (286)                */
        !           699:     dszOUTSW, O_NoOpAlt4,               /* 6F OUTSW (286) / OUTSD (386)  */
        !           700:     dszJO,    O_Rel8,                   /* 70 JO                         */
        !           701:     dszJNO,   O_Rel8,                   /* 71 JNO                        */
        !           702:     dszJB,    O_Rel8,                   /* 72 JB or JNAE or JC           */
        !           703:     dszJNB,   O_Rel8,                   /* 73 JNB or JAE or JNC          */
        !           704:     dszJZ,    O_Rel8,                   /* 74 JE or JZ                   */
        !           705:     dszJNZ,   O_Rel8,                   /* 75 JNE or JNZ                 */
        !           706:     dszJBE,   O_Rel8,                   /* 76 JBE or JNA                 */
        !           707:     dszJA,    O_Rel8,                   /* 77 JNBE or JA                 */
        !           708:     dszJS,    O_Rel8,                   /* 78 JS                         */
        !           709:     dszJNS,   O_Rel8,                   /* 79 JNS                        */
        !           710:     dszJPE,   O_Rel8,                   /* 7A JP or JPE                  */
        !           711:     dszJPO,   O_Rel8,                   /* 7B JNP or JPO                 */
        !           712:     dszJL,    O_Rel8,                   /* 7C JL or JNGE                 */
        !           713:     dszJGE,   O_Rel8,                   /* 7D JNL or JGE                 */
        !           714:     dszJLE,   O_Rel8,                   /* 7E JLE or JNG                 */
        !           715:     dszJG,    O_Rel8,                   /* 7F JNLE or JG                 */
        !           716:     dszMULTI, O_GROUP11,                /* 80                            */
        !           717:     dszMULTI, O_GROUP12,                /* 81                            */
        !           718:     dszRESERVED, O_DoDB,                /* 82                            */
        !           719:     dszMULTI, O_GROUP13,                /* 83                            */
        !           720:     dszTEST,  O_bModrm_Reg,             /* 84 TEST reg, mem/reg (byte)   */
        !           721:     dszTEST,  O_Modrm_Reg,              /* 85 TEST reg, mem/reg (word)   */
        !           722:     dszXCHG,  O_bModrm_Reg,             /* 86 XCHG reg, mem/reg (byte)   */
        !           723:     dszXCHG,  O_Modrm_Reg,              /* 87 XCHG reg, mem/reg (word)   */
        !           724:     dszMOV,   O_bModrm_Reg,             /* 88 MOV mem/reg, reg (byte)    */
        !           725:     dszMOV,   O_Modrm_Reg,              /* 89 MOV mem/reg, reg (word)    */
        !           726:     dszMOV,   O_bReg_Modrm,             /* 8A MOV reg, mem/reg (byte)    */
        !           727:     dszMOV,   O_Reg_Modrm,              /* 8B MOV reg, mem/reg (word)    */
        !           728:     dszMOV,   O_Modrm_sReg3,            /* 8C MOV mem/reg, segreg        */
        !           729:     dszLEA,   O_Reg_Modrm,              /* 8D LEA reg, mem               */
        !           730:     dszMOV,   O_sReg3_Modrm,            /* 8E MOV segreg, mem/reg        */
        !           731:     dszPOP,   O_Modrm,                  /* 8F POP mem/reg                */
        !           732:     dszNOP,   O_NoOperands,             /* 90 NOP                        */
        !           733:     dszXCHG,  O_AX_oReg,                /* 91 XCHG AX,CX                 */
        !           734:     dszXCHG,  O_AX_oReg,                /* 92 XCHG AX,DX                 */
        !           735:     dszXCHG,  O_AX_oReg,                /* 93 XCHG AX,BX                 */
        !           736:     dszXCHG,  O_AX_oReg,                /* 94 XCHG AX,SP                 */
        !           737:     dszXCHG,  O_AX_oReg,                /* 95 XCHG AX,BP                 */
        !           738:     dszXCHG,  O_AX_oReg,                /* 96 XCHG AX,SI                 */
        !           739:     dszXCHG,  O_AX_oReg,                /* 97 XCHG AX,DI                 */
        !           740:     dszCBW,   O_NoOpAlt0,               /* 98 CBW / CWDE (386)           */
        !           741:     dszCWD,   O_NoOpAlt1,               /* 99 CWD / CDQ (386)            */
        !           742:     dszCALL,  O_FarPtr,                 /* 9A CALL seg:off               */
        !           743:     dszWAIT,  O_NoOperands,             /* 9B WAIT                       */
        !           744:     dszPUSHF, O_NoOpAlt5,               /* 9C PUSHF / PUSHFD (386)       */
        !           745:     dszPOPF,  O_NoOpAlt4,               /* 9D POPF / POPFD (386)         */
        !           746:     dszSAHF,  O_NoOperands,             /* 9E SAHF                       */
        !           747:     dszLAHF,  O_NoOperands,             /* 9F LAHF                       */
        !           748:     dszMOV,   O_AL_Offs,                /* A0 MOV AL, mem                */
        !           749:     dszMOV,   O_AX_Offs,                /* A1 MOV AX, mem                */
        !           750:     dszMOV,   O_Offs_AL,                /* A2 MOV mem, AL                */
        !           751:     dszMOV,   O_Offs_AX,                /* A3 MOV mem, AX                */
        !           752:     dszMOVSB, O_NoOpStrSIDI,            /* A4 MOVSB                      */
        !           753:     dszMOVSW, O_NoOpStrSIDI,            /* A5 MOVSW / MOVSD (386)        */
        !           754:     dszCMPSB, O_NoOpStrSIDI,            /* A6 CMPSB                      */
        !           755:     dszCMPSW, O_NoOpStrSIDI,            /* A7 CMPSW / CMPSD (386)        */
        !           756:     dszTEST,  O_AL_Ib,                  /* A8 TEST AL, I                 */
        !           757:     dszTEST,  O_AX_Iv,                  /* A9 TEST AX, I                 */
        !           758:     dszSTOSB, O_NoOpStrDI,              /* AA STOSB                      */
        !           759:     dszSTOSW, O_NoOpStrDI,              /* AB STOSW / STOSD (386)        */
        !           760:     dszLODSB, O_NoOpStrSI,              /* AC LODSB                      */
        !           761:     dszLODSW, O_NoOpStrSI,              /* AD LODSW / LODSD (386)        */
        !           762:     dszSCASB, O_NoOpStrDI,              /* AE SCASB                      */
        !           763:     dszSCASW, O_NoOpStrDI,              /* AF SCASW / SCASD (386)        */
        !           764:     dszMOV,   O_oReg_Ib,                /* B0 MOV AL, I                  */
        !           765:     dszMOV,   O_oReg_Ib,                /* B1 MOV CL, I                  */
        !           766:     dszMOV,   O_oReg_Ib,                /* B2 MOV DL, I                  */
        !           767:     dszMOV,   O_oReg_Ib,                /* B3 MOV BL, I                  */
        !           768:     dszMOV,   O_oReg_Ib,                /* B4 MOV AH, I                  */
        !           769:     dszMOV,   O_oReg_Ib,                /* B5 MOV CH, I                  */
        !           770:     dszMOV,   O_oReg_Ib,                /* B6 MOV DH, I                  */
        !           771:     dszMOV,   O_oReg_Ib,                /* B7 MOV BH, I                  */
        !           772:     dszMOV,   O_oReg_Iv,                /* B8 MOV AX, I                  */
        !           773:     dszMOV,   O_oReg_Iv,                /* B9 MOV CX, I                  */
        !           774:     dszMOV,   O_oReg_Iv,                /* BA MOV DX, I                  */
        !           775:     dszMOV,   O_oReg_Iv,                /* BB MOV BX, I                  */
        !           776:     dszMOV,   O_oReg_Iv,                /* BC MOV SP, I                  */
        !           777:     dszMOV,   O_oReg_Iv,                /* BD MOV BP, I                  */
        !           778:     dszMOV,   O_oReg_Iv,                /* BE MOV SI, I                  */
        !           779:     dszMOV,   O_oReg_Iv,                /* BF MOV DI, I                  */
        !           780:     dszMULTI, O_GROUP21,                /* C0 shifts & rotates (286)     */
        !           781:     dszMULTI, O_GROUP22,                /* C1 shifts & rotates (286)     */
        !           782:     dszRET,   O_Iw,                     /* C2 RET Rel16                  */
        !           783:     dszRET,   O_NoOperands,             /* C3 RET                        */
        !           784:     dszLES,   O_fReg_Modrm,             /* C4 LES reg, mem               */
        !           785:     dszLDS,   O_fReg_Modrm,             /* C5 LDS reg, mem               */
        !           786:     dszMOV,   O_bModrm_Ib,              /* C6 MOV mem/reg, I(byte)       */
        !           787:     dszMOV,   O_Modrm_Iv,               /* C7 MOV mem/reg, I(word)       */
        !           788:     dszENTER, O_Enter,                  /* C8 ENTER (286)                */
        !           789:     dszLEAVE, O_NoOperands,             /* C9 LEAVE (286)                */
        !           790:     dszRETF,  O_Iw,                     /* CA RETF I(word)               */
        !           791:     dszRETF,  O_NoOperands,             /* CB RETF                       */
        !           792:     dszINT,   O_DoInt3,                 /* CC INT 3                      */
        !           793:     dszINT,   O_DoInt,                  /* CD INT                        */
        !           794:     dszINTO,  O_NoOperands,             /* CE INTO                       */
        !           795:     dszIRET,  O_NoOpAlt4,               /* CF IRET / IRETD (386)         */
        !           796:     dszMULTI, O_GROUP23,                /* D0 shifts & rotates,1 (byte)  */
        !           797:     dszMULTI, O_GROUP24,                /* D1 shifts & rotates,1 (word)  */
        !           798:     dszMULTI, O_GROUP25,                /* D2 shifts & rotates,CL (byte) */
        !           799:     dszMULTI, O_GROUP26,                /* D3 shifts & rotates,CL (word) */
        !           800:     dszAAM,   O_Ib,                     /* D4 AAM                        */
        !           801:     dszAAD,   O_Ib,                     /* D5 AAD                        */
        !           802:     dszRESERVED, O_DoDB,                /* D6                            */
        !           803:     dszXLAT,  O_NoOperands,             /* D7 XLAT                       */
        !           804:     dszMULTI, O_x87_ESC,                /* D8 ESC                        */
        !           805:     dszMULTI, O_x87_ESC,                /* D9 ESC                        */
        !           806:     dszMULTI, O_x87_ESC,                /* DA ESC                        */
        !           807:     dszMULTI, O_x87_ESC,                /* DB ESC                        */
        !           808:     dszMULTI, O_x87_ESC,                /* DC ESC                        */
        !           809:     dszMULTI, O_x87_ESC,                /* DD ESC                        */
        !           810:     dszMULTI, O_x87_ESC,                /* DE ESC                        */
        !           811:     dszMULTI, O_x87_ESC,                /* DF ESC                        */
        !           812:     dszLOOPNE,O_Rel8,                   /* E0 LOOPNE or LOOPNZ           */
        !           813:     dszLOOPE, O_Rel8,                   /* E1 LOOPE or LOOPZ             */
        !           814:     dszLOOP,  O_Rel8,                   /* E2 LOOP                       */
        !           815:     dszJCXZ,  O_Rel8,                   /* E3 JCXZ / JECXZ (386)         */
        !           816:     dszIN,    O_AL_Ubyte,               /* E4 IN AL, I                   */
        !           817:     dszIN,    O_AX_Ubyte,               /* E5 IN AX, I                   */
        !           818:     dszOUT,   O_Ubyte_AL,               /* E6 OUT I, AL                  */
        !           819:     dszOUT,   O_Ubyte_AX,               /* E7 OUT I, AX                  */
        !           820:     dszCALL,  O_Rel16,                  /* E8 CALL Rel16                 */
        !           821:     dszJMP,   O_Rel16,                  /* E9 JMP Rel16                  */
        !           822:     dszJMP,   O_FarPtr,                 /* EA JMP seg:off                */
        !           823:     dszJMP,   O_Rel8,                   /* EB JMP Rel8                   */
        !           824:     dszIN,    O_DoInAL,                 /* EC IN AL, DX                  */
        !           825:     dszIN,    O_DoInAX,                 /* ED IN AX, DX                  */
        !           826:     dszOUT,   O_DoOutAL,                /* EE OUT DX, AL                 */
        !           827:     dszOUT,   O_DoOutAX,                /* EF OUT DX, AX                 */
        !           828:     dszLOCK,  O_DoRep,                  /* F0 LOCK                       */
        !           829:     dszRESERVED, O_DoDB,                /* F1                            */
        !           830:     dszREPNE, O_DoRep,                  /* F2 REPNE or REPNZ             */
        !           831:     dszREP,   O_DoRep,                  /* F3 REP or REPE or REPZ        */
        !           832:     dszHLT,   O_NoOperands,             /* F4 HLT                        */
        !           833:     dszCMC,   O_NoOperands,             /* F5 CMC                        */
        !           834:     dszMULTI, O_GROUP31,                /* F6 TEST, NOT, NEG, MUL, IMUL, */
        !           835:     dszMULTI, O_GROUP32,                /* F7 DIv, IDIv F6=Byte F7=Word  */
        !           836:     dszCLC,   O_NoOperands,             /* F8 CLC                        */
        !           837:     dszSTC,   O_NoOperands,             /* F9 STC                        */
        !           838:     dszCLI,   O_NoOperands,             /* FA CLI                        */
        !           839:     dszSTI,   O_NoOperands,             /* FB STI                        */
        !           840:     dszCLD,   O_NoOperands,             /* FC CLD                        */
        !           841:     dszSTD,   O_NoOperands,             /* FD STD                        */
        !           842:     dszMULTI, O_GROUP4,                 /* FE INC, DEC mem/reg (byte)    */
        !           843:     dszMULTI, O_GROUP5,                 /* FF INC, DEC, CALL, JMP, PUSH  */
        !           844: 
        !           845:     dszMULTI, O_GROUP6,                 /* 0 MULTI                       */
        !           846:     dszMULTI, O_GROUP7,                 /* 1 MULTI                       */
        !           847:     dszLAR,   O_Reg_Modrm,              /* 2 LAR                         */
        !           848:     dszLSL,   O_Reg_Modrm,              /* 3 LSL                         */
        !           849:     dszRESERVED, O_DoDB,                /* 4                             */
        !           850:     dszLOADALL, O_NoOperands,           /* 5 LOADALL                     */
        !           851:     dszCLTS,  O_NoOperands,             /* 6 CLTS                        */
        !           852:     dszMOV,   O_Modrm_CReg,             /* 20 MOV Rd,Cd                  */
        !           853:     dszMOV,   O_Modrm_CReg,             /* 21 MOV Rd,Dd                  */
        !           854:     dszMOV,   O_CReg_Modrm,             /* 22 MOV Cd,Rd                  */
        !           855:     dszMOV,   O_CReg_Modrm,             /* 23 MOV Dd,Rd                  */
        !           856:     dszMOV,   O_Modrm_CReg,             /* 24 MOV Rd,Td                  */
        !           857:     dszRESERVED, O_DoDB,                /* 25                            */
        !           858:     dszMOV,   O_CReg_Modrm,             /* 26 MOV Td,Rd                  */
        !           859: 
        !           860:     dszWRMSR, O_NoOperands,             /* 30 WRMSR                      */
        !           861:     dszRDTSC, O_NoOperands,             /* 31 RDTSC                      */
        !           862:     dszRDMSR, O_NoOperands,             /* 32 RDMSR                      */
        !           863: 
        !           864:     dszSETNL, O_bModrm,                 /* 7D SETNL                      */
        !           865:     dszRESERVED, O_DoDB,                /* 7E                            */
        !           866:     dszRESERVED, O_DoDB,                /* 7F                            */
        !           867:     dszJO,    O_Rel16,                  /* 80 JO                         */
        !           868:     dszJNO,   O_Rel16,                  /* 81 JNO                        */
        !           869:     dszJB,    O_Rel16,                  /* 82 JB                         */
        !           870:     dszJNB,   O_Rel16,                  /* 83 JNB                        */
        !           871:     dszJE,    O_Rel16,                  /* 84 JE                         */
        !           872:     dszJNE,   O_Rel16,                  /* 85 JNE                        */
        !           873:     dszJBE,   O_Rel16,                  /* 86 JBE                        */
        !           874:     dszJNBE,  O_Rel16,                  /* 87 JNBE                       */
        !           875:     dszJS,    O_Rel16,                  /* 88 JS                         */
        !           876:     dszJNS,   O_Rel16,                  /* 89 JNS                        */
        !           877:     dszJP,    O_Rel16,                  /* 8A JP                         */
        !           878:     dszJNP,   O_Rel16,                  /* 8B JNP                        */
        !           879:     dszJL,    O_Rel16,                  /* 8C JL                         */
        !           880:     dszJNL,   O_Rel16,                  /* 8D JNL                        */
        !           881:     dszJLE,   O_Rel16,                  /* 8E JLE                        */
        !           882:     dszJNLE,  O_Rel16,                  /* 8F JNLE                       */
        !           883:     dszSETO,  O_bModrm,                 /* 90 SETO                       */
        !           884:     dszSETNO, O_bModrm,                 /* 91 SETNO                      */
        !           885:     dszSETB,  O_bModrm,                 /* 92 SETB                       */
        !           886:     dszSETNB, O_bModrm,                 /* 93 SETNB                      */
        !           887:     dszSETE,  O_bModrm,                 /* 94 SETE                       */
        !           888:     dszSETNE, O_bModrm,                 /* 95 SETNE                      */
        !           889:     dszSETBE, O_bModrm,                 /* 96 SETBE                      */
        !           890:     dszSETA,  O_bModrm,                 /* 97 SETNBE                     */
        !           891:     dszSETS,  O_bModrm,                 /* 98 SETS                       */
        !           892:     dszSETNS, O_bModrm,                 /* 99 SETNS                      */
        !           893:     dszSETP,  O_bModrm,                 /* 9A SETP                       */
        !           894:     dszSETNP, O_bModrm,                 /* 9B SETNP                      */
        !           895:     dszSETL,  O_bModrm,                 /* 9C SETL                       */
        !           896:     dszSETGE, O_bModrm,                 /* 9D SETGE                      */
        !           897:     dszSETLE, O_bModrm,                 /* 9E SETLE                      */
        !           898:     dszSETNLE,O_bModrm,                 /* 9F SETNLE                     */
        !           899:     dszPUSH,  O_sReg2,                  /* A0 PUSH FS                    */
        !           900:     dszPOP,   O_sReg2,                  /* A1 POP FS                     */
        !           901:     dszCPUID, O_NoOperands,             /* A2 CPUID                      */
        !           902:     dszBT,    O_Modrm_Reg,              /* A3 BT                         */
        !           903:     dszSHLD,  O_Modrm_Reg_Ib,           /* A4 SHLD                       */
        !           904:     dszSHLD,  O_Modrm_Reg_CL,           /* A5 SHLD                       */
        !           905:     dszCMPXCHG,O_bModrm_Reg,            /* A6 XBTS                       */
        !           906:     dszCMPXCHG,O_Modrm_Reg,             /* A7 IBTS                       */
        !           907:     dszPUSH,  O_sReg2,                  /* A8 PUSH GS                    */
        !           908:     dszPOP,   O_sReg2,                  /* A9 POP GS                     */
        !           909:     dszRSM,   O_NoOperands,             /* AA RSM                        */
        !           910:     dszBTS,   O_vModrm_Reg,             /* AB BTS                        */
        !           911:     dszSHRD,  O_Modrm_Reg_Ib,           /* AC SHRD                       */
        !           912:     dszSHRD,  O_Modrm_Reg_CL,           /* AD SHRD                       */
        !           913:     dszRESERVED, O_DoDB,                /* AE                            */
        !           914:     dszIMUL,  O_Reg_Modrm,              /* AF IMUL                       */
        !           915:     dszRESERVED, O_DoDB,                /* B0                            */
        !           916:     dszRESERVED, O_DoDB,                /* B1                            */
        !           917:     dszLSS,   O_fReg_Modrm,             /* B2 LSS                        */
        !           918:     dszBTR,   O_Modrm_Reg,              /* B3 BTR                        */
        !           919:     dszLFS,   O_fReg_Modrm,             /* B4 LFS                        */
        !           920:     dszLGS,   O_fReg_Modrm,             /* B5 LGS                        */
        !           921:     dszMOVZX, O_Reg_bModrm,             /* B6 MOVZX                      */
        !           922:     dszMOVZX, O_Reg_wModrm,             /* B7 MOVZX                      */
        !           923:     dszRESERVED, O_DoDB,                /* B8                            */
        !           924:     dszRESERVED, O_DoDB,                /* B9                            */
        !           925:     dszMULTI, O_GROUP8,                 /* BA MULTI                      */
        !           926:     dszBTC,   O_Modrm_Reg,              /* BB BTC                        */
        !           927:     dszBSF,   O_Reg_Modrm,              /* BC BSF                        */
        !           928:     dszBSR,   O_Reg_Modrm,              /* BD BSR                        */
        !           929:     dszMOVSX, O_Reg_bModrm,             /* BE MOVSX                      */
        !           930:     dszMOVSX, O_Reg_wModrm,             /* BF MOVSX                      */
        !           931:     dszXADD,  O_bModrm_Reg,             /* C0 XADD                       */
        !           932:     dszXADD,  O_Modrm_Reg,              /* C1 XADD                       */
        !           933:     dszRESERVED, O_DoDB,                /* C2                            */
        !           934:     dszRESERVED, O_DoDB,                /* C3                            */
        !           935:     dszRESERVED, O_DoDB,                /* C4                            */
        !           936:     dszRESERVED, O_DoDB,                /* C5                            */
        !           937:     dszRESERVED, O_DoDB,                /* C6                            */
        !           938:     dszCMPXCHG8B, O_qModrm,             /* C7 CMPXCHG8B                  */
        !           939:     dszBSWAP, O_oReg,                   /* C8 BSWAP                      */
        !           940:     dszBSWAP, O_oReg,                   /* C9 BSWAP                      */
        !           941:     dszBSWAP, O_oReg,                   /* CA BSWAP                      */
        !           942:     dszBSWAP, O_oReg,                   /* CB BSWAP                      */
        !           943:     dszBSWAP, O_oReg,                   /* CC BSWAP                      */
        !           944:     dszBSWAP, O_oReg,                   /* CD BSWAP                      */
        !           945:     dszBSWAP, O_oReg,                   /* CE BSWAP                      */
        !           946:     dszBSWAP, O_oReg                    /* CF BSWAP                      */
        !           947: };
        !           948: 
        !           949: /* Auxilary lists of mnemonics for groups of two byte instructions:      */
        !           950: /*   All of the instructions within each of these groups are of the same */
        !           951: /*   class, so only the mnemonic string is needed, the index into the    */
        !           952: /*   action table is implicit.                                           */
        !           953: 
        !           954: static char *group[][8] = {
        !           955: 
        !           956: /* 00 */    {dszADD,  dszOR,    dszADC,  dszSBB,    /* group 1 */
        !           957:              dszAND,  dszSUB,   dszXOR,  dszCMP},
        !           958: 
        !           959: /* 01 */    {dszROL,  dszROR,   dszRCL,      dszRCR,    /* group 2 */
        !           960:              dszSHL,  dszSHR,   dszRESERVED, dszSAR},
        !           961: 
        !           962: /* 02 */    {dszINC,      dszDEC,      dszRESERVED, dszRESERVED, /* group 4 */
        !           963:              dszRESERVED, dszRESERVED, dszRESERVED, dszRESERVED},
        !           964: 
        !           965: /* 03 */    {dszSLDT, dszSTR,   dszLLDT,     dszLTR,    /* group 6 */
        !           966:              dszVERR, dszVERW,  dszRESERVED, dszRESERVED},
        !           967: 
        !           968: /* 04 */    {dszRESERVED, dszRESERVED, dszRESERVED, dszRESERVED, /* group 8 */
        !           969:              dszBT,       dszBTS,      dszBTR,      dszBTC}
        !           970: 
        !           971:             };
        !           972: 
        !           973: /* Auxilary orderd pairs for groups of two byte instructions structured  */
        !           974: /*   the same was as distbl above.                                       */
        !           975: 
        !           976: static Tdistbl groupt[][8] = {
        !           977: 
        !           978: /* 00  00                     x87-D8-1                   */
        !           979:             { dszFADD,     O_dModrm,     /* D8-0 FADD    */
        !           980:               dszFMUL,     O_dModrm,     /* D8-1 FMUL    */
        !           981:               dszFCOM,     O_dModrm,     /* D8-2 FCOM    */
        !           982:               dszFCOMP,    O_dModrm,     /* D8-3 FCOMP   */
        !           983:               dszFSUB,     O_dModrm,     /* D8-4 FSUB    */
        !           984:               dszFSUBR,    O_dModrm,     /* D8-5 FSUBR   */
        !           985:               dszFDIV,     O_dModrm,     /* D8-6 FDIV    */
        !           986:               dszFDIVR,    O_dModrm },   /* D8-7 FDIVR   */
        !           987: 
        !           988: /* 01                         x87-D8-2                   */
        !           989:             { dszFADD,     O_ST_iST,     /* D8-0 FADD    */
        !           990:               dszFMUL,     O_ST_iST,     /* D8-1 FMUL    */
        !           991:               dszFCOM,     O_iST,        /* D8-2 FCOM    */
        !           992:               dszFCOMP,    O_iST,        /* D8-3 FCOMP   */
        !           993:               dszFSUB,     O_ST_iST,     /* D8-4 FSUB    */
        !           994:               dszFSUBR,    O_ST_iST,     /* D8-5 FSUBR   */
        !           995:               dszFDIV,     O_ST_iST,     /* D8-6 FDIV    */
        !           996:               dszFDIVR,    O_ST_iST },   /* D8-7 FDIVR   */
        !           997: 
        !           998: /* 02   01                    x87-D9-1                   */
        !           999:             { dszFLD,      O_dModrm,     /* D9-0 FLD     */
        !          1000:               dszRESERVED, O_DoDB,       /* D9-1         */
        !          1001:               dszFST,      O_dModrm,     /* D9-2 FST     */
        !          1002:               dszFSTP,     O_dModrm,     /* D9-3 FSTP    */
        !          1003:               dszFLDENV,   O_Modrm,      /* D9-4 FLDENV  */
        !          1004:               dszFLDCW,    O_Modrm,      /* D9-5 FLDCW   */
        !          1005:               dszFSTENV,   O_Modrm,      /* D9-6 FSTENV  */
        !          1006:               dszFSTCW,    O_Modrm },    /* D9-7 FSTCW   */
        !          1007: 
        !          1008: /* 03   01                    x87-D9-2 TTT=0,1,2,3       */
        !          1009:             { dszFLD,      O_iST,        /* D9-0 FLD     */
        !          1010:               dszFXCH,     O_iST,        /* D9-1 FXCH    */
        !          1011:               dszFNOP,     O_NoOperands, /* D9-2 FNOP    */
        !          1012:               dszFSTP,     O_iST,        /* D9-3 FSTP    */
        !          1013:               dszRESERVED, O_DoDB,       /* D9-4         */
        !          1014:               dszRESERVED, O_DoDB,       /* D9-5         */
        !          1015:               dszRESERVED, O_DoDB,       /* D9-6         */
        !          1016:               dszRESERVED, O_DoDB   },   /* D9-7         */
        !          1017: 
        !          1018: /* 04  02                     x89-DA-1                   */
        !          1019:             { dszFIADD,    O_dModrm,     /* DA-0 FIADD   */
        !          1020:               dszFIMUL,    O_dModrm,     /* DA-1 FIMUL   */
        !          1021:               dszFICOM,    O_dModrm,     /* DA-2 FICOM   */
        !          1022:               dszFICOMP,   O_dModrm,     /* DA-3 FICOMP  */
        !          1023:               dszFISUB,    O_dModrm,     /* DA-4 FISUB   */
        !          1024:               dszFISUBR,   O_dModrm,     /* DA-5 FISUBR  */
        !          1025:               dszFIDIV,    O_dModrm,     /* DA-6 FIDIV   */
        !          1026:               dszFIDIVR,   O_dModrm },   /* DA-7 FIDIVR  */
        !          1027: 
        !          1028: /* 05                         x87-DA-2                   */
        !          1029:             { dszRESERVED, O_DoDB,       /* DA-0         */
        !          1030:               dszRESERVED, O_DoDB,       /* DA-1         */
        !          1031:               dszRESERVED, O_DoDB,       /* DA-2         */
        !          1032:               dszRESERVED, O_DoDB,       /* DA-3         */
        !          1033:               dszRESERVED, O_DoDB,       /* DA-4         */
        !          1034:               dszFUCOMPP,  O_NoOperands, /* DA-5         */
        !          1035:               dszRESERVED, O_DoDB,       /* DA-6         */
        !          1036:               dszRESERVED, O_DoDB },     /* DA-7         */
        !          1037: 
        !          1038: /* 06  03                     x87-DB-1                   */
        !          1039:             { dszFILD,     O_dModrm,     /* DB-0 FILD    */
        !          1040:               dszRESERVED, O_DoDB,       /* DB-1         */
        !          1041:               dszFIST,     O_dModrm,     /* DB-2 FIST    */
        !          1042:               dszFISTP,    O_dModrm,     /* DB-3 FISTP   */
        !          1043:               dszRESERVED, O_DoDB,       /* DB-4         */
        !          1044:               dszFLD,      O_tModrm,     /* DB-5 FLD     */
        !          1045:               dszRESERVED, O_DoDB,       /* DB-6         */
        !          1046:               dszFSTP,     O_tModrm },   /* DB-7 FSTP    */
        !          1047: 
        !          1048: /* 07                      x87-DB-2 ttt=4        */
        !          1049:             { dszFENI,     O_NoOperands, /* DB-0 FENI    */
        !          1050:               dszFDISI,    O_NoOperands, /* DB-1 FDISI   */
        !          1051:               dszFCLEX,    O_NoOperands, /* DB-2 FCLEX   */
        !          1052:               dszFINIT,    O_NoOperands, /* DB-3 FINIT   */
        !          1053:               dszFSETPM,   O_DoDB,       /* DB-4 FSETPM  */
        !          1054:               dszRESERVED, O_DoDB,       /* DB-5         */
        !          1055:               dszRESERVED, O_DoDB,       /* DB-6         */
        !          1056:               dszRESERVED, O_DoDB },     /* DB-7         */
        !          1057: 
        !          1058: /* 08 04                      x87-DC-1                   */
        !          1059:             { dszFADD,     O_qModrm,     /* DC-0 FADD    */
        !          1060:               dszFMUL,     O_qModrm,     /* DC-1 FMUL    */
        !          1061:               dszFCOM,     O_qModrm,     /* DC-2 FCOM    */
        !          1062:               dszFCOMP,    O_qModrm,     /* DC-3 FCOMP   */
        !          1063:               dszFSUB,     O_qModrm,     /* DC-4 FSUB    */
        !          1064:               dszFSUBR,    O_qModrm,     /* DC-5 FSUBR   */
        !          1065:               dszFDIV,     O_qModrm,     /* DC-6 FDIV    */
        !          1066:               dszFDIVR,    O_qModrm },   /* DC-7 FDIVR   */
        !          1067: 
        !          1068: /* 09                         x87-DC-2                   */
        !          1069:             { dszFADD,     O_iST_ST,     /* DC-0 FADD    */
        !          1070:               dszFMUL,     O_iST_ST,     /* DC-1 FMUL    */
        !          1071:               dszFCOM,     O_iST,        /* DC-2 FCOM    */
        !          1072:               dszFCOMP,    O_iST,        /* DC-3 FCOMP   */
        !          1073:               dszFSUB,     O_iST_ST,     /* DC-4 FSUB    */
        !          1074:               dszFSUBR,    O_iST_ST,     /* DC-5 FSUBR   */
        !          1075:               dszFDIV,     O_iST_ST,     /* DC-6 FDIVR   */
        !          1076:               dszFDIVR,    O_iST_ST },   /* DC-7 FDIV    */
        !          1077: 
        !          1078: /* 10  05                     x87-DD-1                   */
        !          1079:             { dszFLD,      O_qModrm,     /* DD-0 FLD     */
        !          1080:               dszRESERVED, O_DoDB,       /* DD-1         */
        !          1081:               dszFST,      O_qModrm,     /* DD-2 FST     */
        !          1082:               dszFSTP,     O_qModrm,     /* DD-3 FSTP    */
        !          1083:               dszFRSTOR,   O_Modrm,      /* DD-4 FRSTOR  */
        !          1084:               dszRESERVED, O_DoDB,       /* DD-5         */
        !          1085:               dszFSAVE,    O_Modrm,      /* DD-6 FSAVE   */
        !          1086:               dszFSTSW,    O_Modrm },    /* DD-7 FSTSW   */
        !          1087: 
        !          1088: /* 11                         x87-DD-2                   */
        !          1089:             { dszFFREE,    O_iST,        /* DD-0 FFREE   */
        !          1090:               dszFXCH,     O_iST,        /* DD-1 FXCH    */
        !          1091:               dszFST,      O_iST,        /* DD-2 FST     */
        !          1092:               dszFSTP,     O_iST,        /* DD-3 FSTP    */
        !          1093:               dszFUCOM,    O_iST,        /* DD-4 FUCOM   */
        !          1094:               dszFUCOMP,   O_iST,        /* DD-5 FUCOMP  */
        !          1095:               dszRESERVED, O_DoDB,       /* DD-6         */
        !          1096:               dszRESERVED, O_DoDB },     /* DD-7         */
        !          1097: 
        !          1098: /* 12  06                     x87-DE-1                   */
        !          1099:             { dszFIADD,    O_wModrm,     /* DE-0 FIADD   */
        !          1100:               dszFIMUL,    O_wModrm,     /* DE-1 FIMUL   */
        !          1101:               dszFICOM,    O_wModrm,     /* DE-2 FICOM   */
        !          1102:               dszFICOMP,   O_wModrm,     /* DE-3 FICOMP  */
        !          1103:               dszFISUB,    O_wModrm,     /* DE-4 FISUB   */
        !          1104:               dszFISUBR,   O_wModrm,     /* DE-5 FISUBR  */
        !          1105:               dszFIDIV,    O_wModrm,     /* DE-6 FIDIV   */
        !          1106:               dszFIDIVR,   O_wModrm },   /* DE-7 FIDIVR  */
        !          1107: 
        !          1108: /* 13                         x87-DE-2                   */
        !          1109:             { dszFADDP,    O_iST_ST,     /* DE-0 FADDP   */
        !          1110:               dszFMULP,    O_iST_ST,     /* DE-1 FMULP   */
        !          1111:               dszFCOMP,    O_iST,        /* DE-2 FCOMP   */
        !          1112:               dszFCOMPP,   O_NoOperands, /* DE-3 FCOMPP  */
        !          1113:               dszFSUBP,    O_iST_ST,     /* DE-4 FSUBP   */
        !          1114:               dszFSUBRP,   O_iST_ST,     /* DE-5 FSUBRP  */
        !          1115:               dszFDIVP,    O_iST_ST,     /* DE-6 FDIVP   */
        !          1116:               dszFDIVRP,   O_iST_ST },   /* DE-7 FDIVRP  */
        !          1117: 
        !          1118: /* 14  07                     x87-DF-1                   */
        !          1119:             { dszFILD,     O_wModrm,     /* DF-0 FILD    */
        !          1120:               dszRESERVED, O_DoDB,       /* DF-1         */
        !          1121:               dszFIST,     O_wModrm,     /* DF-2 FIST    */
        !          1122:               dszFISTP,    O_wModrm,     /* DF-3 FISTP   */
        !          1123:               dszFBLD,     O_tModrm,     /* DF-4 FBLD    */
        !          1124:               dszFILD,     O_qModrm,     /* DF-5 FILD    */
        !          1125:               dszFBSTP,    O_tModrm,     /* DF-6 FBSTP   */
        !          1126:               dszFISTP,    O_qModrm },   /* DF-7 FISTP   */
        !          1127: 
        !          1128: /* 15                         x87-DF-2                   */
        !          1129:             { dszFFREE,    O_iST,        /* DF-0 FFREE   */
        !          1130:               dszFXCH,     O_iST,        /* DF-1 FXCH    */
        !          1131:               dszFST,      O_iST,        /* DF-2 FST     */
        !          1132:               dszFSTP,     O_iST,        /* DF-3 FSTP    */
        !          1133:               dszFSTSW,    O_NoOperands, /* DF-4 FSTSW   */
        !          1134:               dszRESERVED, O_DoDB,       /* DF-5         */
        !          1135:               dszRESERVED, O_DoDB,       /* DF-6         */
        !          1136:               dszRESERVED, O_DoDB },     /* DF-7         */
        !          1137: 
        !          1138: /* 16   01            x87-D9 Mod=3 TTT=4                 */
        !          1139:             { dszFCHS,     O_NoOperands, /* D9-0 FCHS    */
        !          1140:               dszFABS,     O_NoOperands,  /* D9-1 FABS   */
        !          1141:               dszRESERVED, O_DoDB,       /* D9-2         */
        !          1142:               dszRESERVED, O_DoDB,       /* D9-3         */
        !          1143:               dszFTST,     O_NoOperands, /* D9-4 FTST    */
        !          1144:               dszFXAM,     O_NoOperands, /* D9-5 FXAM    */
        !          1145:               dszRESERVED, O_DoDB,       /* D9-6         */
        !          1146:               dszRESERVED, O_DoDB },     /* D9-7         */
        !          1147: 
        !          1148: /* 17   01            x87-D9 Mod=3 TTT=5                 */
        !          1149:             { dszFLD1,     O_NoOperands, /* D9-0 FLD1    */
        !          1150:               dszFLDL2T,   O_NoOperands, /* D9-1 FLDL2T  */
        !          1151:               dszFLDL2E,   O_NoOperands, /* D9-2 FLDL2E  */
        !          1152:               dszFLDPI,    O_NoOperands, /* D9-3 FLDPI   */
        !          1153:               dszFLDLG2,   O_NoOperands, /* D9-4 FLDLG2  */
        !          1154:               dszFLDLN2,   O_NoOperands, /* D9-5 FLDLN2  */
        !          1155:               dszFLDZ,     O_NoOperands, /* D9-6 FLDZ    */
        !          1156:               dszRESERVED, O_DoDB },     /* D9-7         */
        !          1157: 
        !          1158: /* 18   01            x87-D9 Mod=3 TTT=6                   */
        !          1159:             { dszF2XM1,    O_NoOperands,   /* D9-0 F2XM1   */
        !          1160:               dszFYL2X,    O_NoOperands,   /* D9-1 FYL2X   */
        !          1161:               dszFPTAN,    O_NoOperands,   /* D9-2 FPTAN   */
        !          1162:               dszFPATAN,   O_NoOperands,   /* D9-3 FPATAN  */
        !          1163:               dszFXTRACT,  O_NoOperands,   /* D9-4 FXTRACT */
        !          1164:               dszFPREM1,   O_NoOperands,   /* D9-5 FPREM1  */
        !          1165:               dszFDECSTP,  O_NoOperands,   /* D9-6 FDECSTP */
        !          1166:               dszFINCSTP,  O_NoOperands }, /* D9-7 FINCSTP */
        !          1167: 
        !          1168: /* 19   01            x87-D9 Mod=3 TTT=7                   */
        !          1169:             { dszFPREM,    O_NoOperands,   /* D9-0 FPREM   */
        !          1170:               dszFYL2XP1,  O_NoOperands,   /* D9-1 FYL2XP1 */
        !          1171:               dszFSQRT,    O_NoOperands,   /* D9-2 FSQRT   */
        !          1172:               dszFSINCOS,  O_NoOperands,   /* D9-3 FSINCOS */
        !          1173:               dszFRNDINT,  O_NoOperands,   /* D9-4 FRNDINT */
        !          1174:               dszFSCALE,   O_NoOperands,   /* D9-5 FSCALE  */
        !          1175:               dszFSIN,     O_NoOperands,   /* D9-6 FSIN    */
        !          1176:               dszFCOS,     O_NoOperands }, /* D9-7 FCOS    */
        !          1177: 
        !          1178: /* 20                  group 3                             */
        !          1179:             { dszTEST,     O_bModrm_Ib,    /* F6-0 TEST    */
        !          1180:               dszRESERVED, O_DoDB,         /* F6-1         */
        !          1181:               dszNOT,      O_bModrm,       /* F6-2 NOT     */
        !          1182:               dszNEG,      O_bModrm,       /* F6-3 NEG     */
        !          1183:               dszMUL,      O_bModrm,       /* F6-4 MUL     */
        !          1184:               dszIMUL,     O_bModrm,       /* F6-5 IMUL    */
        !          1185:               dszDIV,      O_bModrm,       /* F6-6 DIV     */
        !          1186:               dszIDIV,     O_bModrm },     /* F6-7 IDIV    */
        !          1187: 
        !          1188: /* 21                  group 3                             */
        !          1189:             { dszTEST,     O_vModrm_Iv,    /* F7-0 TEST    */
        !          1190:               dszRESERVED, O_DoDB,         /* F7-1         */
        !          1191:               dszNOT,      O_vModrm,       /* F7-2 NOT     */
        !          1192:               dszNEG,      O_vModrm,       /* F7-3 NEG     */
        !          1193:               dszMUL,      O_vModrm,       /* F7-4 MUL     */
        !          1194:               dszIMUL,     O_vModrm,       /* F7-5 IMUL    */
        !          1195:               dszDIV,      O_vModrm,       /* F7-6 DIV     */
        !          1196:               dszIDIV,     O_vModrm },     /* F7-7 IDIV    */
        !          1197: 
        !          1198: /* 22                  group 5                             */
        !          1199:             { dszINC,      O_vModrm,     /* FF-0 INC       */
        !          1200:               dszDEC,      O_vModrm,     /* FF-1 DEC       */
        !          1201:               dszCALL,     O_vModrm,     /* FF-2 CALL      */
        !          1202:               dszCALL,     O_fModrm,     /* FF-3 CALL      */
        !          1203:               dszJMP,      O_vModrm,     /* FF-4 JMP       */
        !          1204:               dszJMP,      O_fModrm,     /* FF-5 JMP       */
        !          1205:               dszPUSH,     O_vModrm,     /* FF-6 PUSH      */
        !          1206:               dszRESERVED, O_DoDB },     /* FF-7           */
        !          1207: 
        !          1208: /* 23                  group 7                             */
        !          1209:             { dszSGDT,     O_Modrm,      /* 0F-0 SGDT      */
        !          1210:               dszSIDT,     O_Modrm,      /* 0F-1 SIDT      */
        !          1211:               dszLGDT,     O_Modrm,      /* 0F-2 LGDT      */
        !          1212:               dszLIDT,     O_Modrm,      /* 0F-3 LIDT      */
        !          1213:               dszSMSW,     O_wModrm,     /* 0F-4 MSW       */
        !          1214:               dszRESERVED, O_DoDB,       /* 0F-5           */
        !          1215:               dszLMSW,     O_wModrm,     /* 0F-6 LMSW      */
        !          1216:               dszRESERVED, O_DoDB }      /* 0F-7           */
        !          1217: 
        !          1218:             };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.