]> pd.if.org Git - mmurtl/commitdiff
autocommit for file dated 1995-01-26 12:51:26
authorRichard Burgess <>
Thu, 26 Jan 1995 12:51:26 +0000 (12:51 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Mon, 17 Oct 2016 14:03:47 +0000 (14:03 +0000)
dasm/source/dasm.h [new file with mode: 0644]

diff --git a/dasm/source/dasm.h b/dasm/source/dasm.h
new file mode 100644 (file)
index 0000000..0dad73e
--- /dev/null
@@ -0,0 +1,1355 @@
+/* 386 D-Group ASSEMBLER.  Header file.\r
+   Copyright 1992 R.A. Burgess\r
+*/\r
+\r
+ /* The DASM parser returns a TOKEN type and fills in certain\r
+   global variables with the values found.  The token type is\r
+   placed in Token as well as being returned to the caller.\r
+*/\r
+\r
+/* The following are the TOKEN types returned by the parser or\r
+   the expression analyzer :\r
+*/\r
+\r
+#define ZERO   0       /* Parser returned NOTHING (blank or EOL) */\r
+#define INSTRU 1       /* 386 instruction. Number placed in TInst. */\r
+#define REGIST 2       /* 386 register is placed in TReg */\r
+#define SYMBOL 3       /* In symbol table. Sym number placed in TSymnum */\r
+#define LSYMBOL        4       /* In symbol table. LSym number placed in TSymnum */\r
+#define STRING 5       /* 'quoted' string of characters left in TString */\r
+#define NUMBER 6       /* Valid value placed in TNumber */\r
+#define NUMOFF 7       /* Valid TNumber derived from OFFSET (needs fix) */\r
+#define UNKSYM 8       /* Qualifies as a sym but not found. Left in TString */\r
+#define SYMOFF 9   /* Symbol offset value (from Expression analyzer) */\r
+#define ERROR  10      /* Bad char found in line. Line terminated by Parse(). */\r
+\r
+/* alphabetized list of reserved words excluding registers and\r
+   instructions.  They must be alphabetized for binary search\r
+   function to work. They begin with #89 so they don't conflict\r
+   with other token values. */\r
+\r
+#define nreserved 30\r
+#define srsvd 8                        /* size of a reserved storage */\r
+#define nrsvd1 94              /* must be the first number of rgReserved */\r
+char rgReserved[nreserved][srsvd]  = {         /* 109 bytes */\r
+         "ALIGN",     /*  94 */\r
+         "BYTE",      /*  95 */\r
+         "CODE",      /*  96 */\r
+         "DATA",      /*  97 */\r
+         "DB",        /*  98 */\r
+         "DD",        /*  99 */\r
+         "DF",        /* 100 */\r
+         "DUP",       /* 101 */\r
+         "DW",        /* 102 */\r
+         "DWORD",     /* 103 */\r
+            "END",       /* 104 */\r
+         "EQU",       /* 105 */\r
+         "EXTRN",     /* 106 */\r
+         "FAR",       /* 107 */\r
+         "FWORD",     /* 108 */\r
+         "INCLUDE",   /* 109 */\r
+         "NAME",      /* 110 */\r
+         "NEAR",      /* 111 */\r
+         "OFFSET",    /* 112 */\r
+         "PARA",      /* 113 */\r
+         "PTR",       /* 114 */\r
+                "PUBLIC",    /* 115 */\r
+         "SEARCH",    /* 116 */\r
+         "SHORT",     /* 117 */\r
+         "STACK",     /* 118 */\r
+         "START",     /* 119 */\r
+         "USE16",     /* 120 */\r
+         "USE32",     /* 121 */\r
+         "VIRTUAL",   /* 122 */\r
+         "WORD",      /* 123  up to 127 MAX */\r
+         };\r
+\r
+/* The following reserved "words" are recognized by Parse.\r
+   This list MUST agree with the numbering of the table\r
+   rgReserved above.\r
+*/\r
+\r
+#define  rALIGN                94      /* .ALIGN n - Align code segment   */\r
+#define  rBYTE         95      /* for forcing types on operands   */\r
+#define  rCODE         96      /* .CODE - begin/continue code segment   */\r
+#define         rDATA          97      /* .DATA - begin/continue data segment   */\r
+#define  rDB           98      /* storage of byte(s) or (strings) */\r
+#define  rDD           99      /* double words */\r
+#define  rDF           100 /* FWord (OFF:SEL) */\r
+#define  rDUP          101     /* duplicated storage of DB, DW or DD */\r
+#define  rDW           102     /* storage of words follows */\r
+#define  rDWORD                103     /* for forcing types on operands */\r
+#define  rEND          104     /* .END - file end - no more segments    */\r
+#define  rEQU          105     /* EQUATE for numbers/addresses only */\r
+#define  rEXTRN     106  /* for EXTERNAL definition */\r
+#define  rFAR          107     /* FAR operator for calls */\r
+#define  rFWORD                108     /* for forcing types on operands */\r
+#define  rINCLUDE      109     /* .INCLUDE - Include file for assembly  */\r
+#define  rNAME         110     /* .NAME to name a segment */\r
+#define  rNEAR         111     /* NEAR operator for calls (default) */\r
+#define  rOFFSET       112     /* offset in segment of ... */\r
+#define  rPARA         113     /* PTR operator for mem ops */\r
+#define  rPTR          114     /* PTR operator for mem ops */\r
+#define  rPUBLIC    115        /* for PUBLIC declarations */\r
+#define  rSEARCH       116     /* SEARCH command for Lib files  */\r
+#define  rSHORT                117     /* SHORT operator for relative jumps   */\r
+#define  rSTACK                118     /* .START - Entry point for execution    */\r
+#define  rSTART                119     /* .STACK - Sets initial stack size   */\r
+#define  rUSE16     120 /* .USE16 (16 bit segment) */\r
+#define  rUSE32     121 /* .USE16 (16 bit segment) */\r
+#define  rVIRTUAL      122 /* .VIRTUAL n - Data @ virtual address n */\r
+#define  rWORD         123 /*  WORD operator for mem ops */\r
+\r
+/* Special characters. They are treated as reserved words but are\r
+   not searched alphabetically.  They must maintain their ASCII\r
+   values (other tokens are numbers "around" them).\r
+*/\r
+\r
+#define  DOLLAR                0x24   /* 36 */\r
+#define  SQUOTE                0x27   /* 39 */\r
+#define  OPENRND       0x28   /* 40 */\r
+#define  CLOSRND       0x29   /* 41 */\r
+#define  STAR          0x2a   /* 42 */\r
+#define  PLUS          0x2b   /* 43 */\r
+#define  COMMA         0x2c   /* 44 */\r
+#define  MINUS         0x2d   /* 45 */\r
+#define  DOT           0x2e   /* 46 */\r
+#define  SLASH         0x2f   /* 47 */\r
+#define  COLON         0x3a   /* 58 */\r
+#define  SEMI          0x3b   /* 59 */\r
+#define  OPENSQR       0x5b   /* 91 */\r
+#define  CLOSSQR       0x5d   /* 93 */\r
+\r
+/* The following bits identify symbol types in GST & LST */\r
+\r
+#define CLABEL  0x0001  /* Code label - SymPtr has Offset in Code seg */\r
+#define DLABEL  0x0002  /* Data label - SymPtr has Offset in Data seg */\r
+#define MACRO   0x0004  /* No offset associated -  pts to string */\r
+#define sBYTE  0x0008  /* Data label for BYTE (8 bit)   */\r
+#define sWORD  0x0010  /* Data label for WORD (16 bit)  */\r
+#define sDWORD 0x0020  /* Data label for DWORD (32 bit) */\r
+#define sFWORD 0x0040  /* Data label for FWORD (48 bit) */\r
+#define tEXTRN  0x0080  /* Defined External, Public not found yet */\r
+#define tFAR    0x0100  /* Defined as FAR, default is near */\r
+#define tPUBLIC 0x0200  /* Defined as PUBLIC */\r
+\r
+\r
+/* This is an alphabetical array of all the 386 registers.\r
+   It it used for a binary search for a register name. If\r
+   the beginning number (128) is changed here you must make\r
+   sure to change the define nreg1 to match to the search\r
+   routine will give you the correct number They start at 128\r
+   so they don't conflict with operand types in instruction table\r
+   rgINS[].\r
+*/\r
+\r
+#define nregs 52\r
+#define sregs 4\r
+#define nreg1 128\r
+\r
+char rgreg[nregs][4]  = {              /* 176 bytes */\r
+\r
+      "AH",    /* 128 */\r
+      "AL",    /* 129 */\r
+      "AX",    /* 130 */\r
+         "BH",    /* 131 */\r
+         "BL",    /* 132 */\r
+         "BP",    /* 133 */\r
+         "BX",    /* 134 */\r
+         "CH",    /* 135 */\r
+         "CL",    /* 136 */\r
+         "CR0",   /* 137 */\r
+         "CR1",   /* 138 */\r
+         "CR2",   /* 139 */\r
+      "CR3",   /* 140 */\r
+         "CS",    /* 141 */\r
+         "CX",    /* 142 */\r
+         "DH",    /* 143 */\r
+         "DI",    /* 144 */\r
+         "DL",    /* 145 */\r
+         "DR0",   /* 146 */\r
+         "DR1",   /* 147 */\r
+         "DR2",   /* 148 */\r
+         "DR3",   /* 149 */\r
+         "DR6",   /* 150 */\r
+         "DR7",   /* 151 */\r
+         "DS",    /* 152 */\r
+         "DX",    /* 153 */\r
+      "EAX",   /* 154 */\r
+         "EBP",   /* 155 */\r
+         "EBX",   /* 156 */\r
+         "ECX",   /* 157 */\r
+         "EDI",   /* 158 */\r
+         "EDX",   /* 159 */\r
+         "ESI",   /* 160 */\r
+         "ES",    /* 161 */\r
+         "ESP",   /* 162 */\r
+         "FS",    /* 163 */\r
+         "GS",    /* 164 */\r
+         "SI",    /* 165 */\r
+         "SP",    /* 166 */\r
+         "SS",    /* 167 */\r
+         "TR6",   /* 168 */\r
+         "TR7"};  /* 169 */\r
+\r
+#define rAH  128\r
+#define rAL  129\r
+#define rAX  130\r
+#define rBH  131\r
+#define rBL  132\r
+#define rBP  133\r
+#define rBX  134\r
+#define rCH  135\r
+#define rCL  136\r
+#define rCR0 137\r
+#define rCR1 138\r
+#define rCR2 139\r
+#define rCR3 140\r
+#define rCS  141\r
+#define rCX  142\r
+#define rDH  143\r
+#define rDI  144\r
+#define rDL  145\r
+#define rDR0 146\r
+#define rDR1 147\r
+#define rDR2 148\r
+#define rDR3 149\r
+#define rDR6 150\r
+#define rDR7 151\r
+#define rDS  152\r
+#define rDX  153\r
+#define rEAX 154\r
+#define rEBP 155\r
+#define rEBX 156\r
+#define rECX 157\r
+#define rEDI 158\r
+#define rEDX 159\r
+#define rESI 160\r
+#define rES  161\r
+#define rESP 162\r
+#define rFS  163\r
+#define rGS  164\r
+#define rSI  165\r
+#define rSP  166\r
+#define rSS  167\r
+#define rTR6 168\r
+#define rTR7 169\r
+\r
+/* This is an alaphebetical array of all the 386 instructions */\r
+/* It it used for a binary search for an instruction  */\r
+\r
+#define ninst 208\r
+#define sinst 7                                        /* size of a instruction storage */\r
+\r
+int rgInsLookUp[ninst+1];              /* Lookup for instruction table */\r
+\r
+char rginst[ninst][sinst] = {  /*  1456 bytes */\r
+\r
+    "AAA",     /* 001 */\r
+    "AAD",     /* 002 */\r
+    "AAM",     /* 003 */\r
+       "AAS",     /* 004 */\r
+       "ADC",     /* 005 */\r
+       "ADD",     /* 006 */\r
+       "AND",     /* 007 */\r
+       "ARPL",    /* 008 */\r
+\r
+       "BOUND",   /* 009 */\r
+       "BSF",     /* 010 */\r
+       "BSR",     /* 011 */\r
+       "BT",      /* 012 */\r
+       "BTC",     /* 013 */\r
+       "BTR",     /* 014 */\r
+       "BTS",     /* 015 */\r
+\r
+       "CALL",    /* 016 */\r
+       "CBW",     /* 017 */\r
+       "CDQ",     /* 018 */\r
+       "CLC",     /* 019 */\r
+       "CLD",     /* 020 */\r
+       "CLI",     /* 021 */\r
+       "CLTS",    /* 022 */\r
+       "CMC",     /* 023 */\r
+       "CMP",     /* 024 */\r
+       "CMPS",    /* 025 */\r
+       "CMPSB",   /* 026 */\r
+       "CMPSD",   /* 027 */\r
+       "CMPSW",   /* 028 */\r
+       "CWD",     /* 029 */\r
+       "CWDE",    /* 030 */\r
+\r
+       "DAA",     /* 031 */\r
+       "DAS",     /* 032 */\r
+       "DEC",     /* 033 */\r
+       "DIV",     /* 034 */\r
+\r
+       "ENTER",   /* 035 */\r
+\r
+       "HLT",     /* 036 */\r
+\r
+       "IDIV",    /* 037 */\r
+       "IMUL",    /* 038 */\r
+       "IN",      /* 039 */\r
+       "INC",     /* 040 */\r
+       "INS",     /* 041 */\r
+       "INSB",    /* 042 */\r
+       "INSD",    /* 043 */\r
+       "INSW",    /* 044 */\r
+       "INT",     /* 045 */\r
+       "INTO",    /* 046 */\r
+       "IRET",    /* 047 */\r
+       "IRETD",   /* 048 */\r
+\r
+       "JA",      /* 049 */\r
+       "JAE",     /* 050 */\r
+       "JB",      /* 051 */\r
+       "JBE",     /* 052 */\r
+       "JC",      /* 053 */\r
+       "JCXZ",    /* 054 */\r
+       "JE",      /* 055 */\r
+       "JECXZ",   /* 056 */\r
+       "JG",      /* 057 */\r
+       "JGE",     /* 058 */\r
+       "JL",      /* 059 */\r
+       "JLE",     /* 060 */\r
+       "JMP",     /* 061 */\r
+       "JNA",     /* 062 */\r
+       "JNAE",    /* 063 */\r
+       "JNB",     /* 064 */\r
+       "JNBE",    /* 065 */\r
+       "JNC",     /* 066 */\r
+       "JNE",     /* 067 */\r
+       "JNG",     /* 068 */\r
+       "JNGE",    /* 069 */\r
+       "JNL",     /* 070 */\r
+       "JNLE",    /* 071 */\r
+       "JNO",     /* 072 */\r
+       "JNP",     /* 073 */\r
+       "JNS",     /* 074 */\r
+       "JNZ",     /* 075 */\r
+       "JO",      /* 076 */\r
+       "JP",      /* 077 */\r
+       "JPE",     /* 078 */\r
+       "JPO",     /* 079 */\r
+       "JS",      /* 080 */\r
+       "JZ",      /* 081 */\r
+\r
+       "LAHF",    /* 082 */\r
+       "LAR",     /* 083 */\r
+       "LDS",     /* 084 */\r
+       "LEA",     /* 085 */\r
+       "LEAVE",   /* 086 */\r
+       "LES",     /* 087 */\r
+       "LFS",     /* 088 */\r
+       "LGDT",    /* 089 */\r
+       "LGS",     /* 090 */\r
+       "LIDT",    /* 091 */\r
+       "LLDT",    /* 092 */\r
+       "LMSW",    /* 093 */\r
+       "LOCK",    /* 094 */\r
+       "LODS",    /* 095 */\r
+       "LODSB",   /* 096 */\r
+       "LODSD",   /* 097 */\r
+       "LODSW",   /* 098 */\r
+       "LOOP",    /* 099 */\r
+       "LOOPE",   /* 100 */\r
+       "LOOPNE",  /* 101 */\r
+       "LOOPNZ",  /* 102 */\r
+       "LOOPZ",   /* 103 */\r
+       "LSL",     /* 104 */\r
+       "LSS",     /* 105 */\r
+       "LTR",     /* 106 */\r
+\r
+       "MOV",     /* 107 */\r
+       "MOVS",    /* 108 */\r
+       "MOVSB",   /* 109 */\r
+       "MOVSD",   /* 110 */\r
+       "MOVSW",   /* 111 */\r
+       "MOVSX",   /* 112 */\r
+       "MOVZX",   /* 113 */\r
+       "MUL",     /* 114 */\r
+\r
+       "NEG",     /* 115 */\r
+       "NOP",     /* 116 */\r
+       "NOT",     /* 117 */\r
+\r
+       "OR",      /* 118 */\r
+       "OUT",     /* 119 */\r
+       "OUTS",    /* 120 */\r
+       "OUTSB",   /* 121 */\r
+       "OUTSD",   /* 122 */\r
+       "OUTSW",   /* 123 */\r
+\r
+       "POP",     /* 124 */\r
+       "POPA",    /* 125 */\r
+       "POPAD",   /* 126 */\r
+       "POPF",    /* 127 */\r
+       "POPFD",   /* 128 */\r
+       "PUSH",    /* 129 */\r
+       "PUSHA",   /* 130 */\r
+    "PUSHAD",  /* 131 */\r
+    "PUSHF",   /* 132 */\r
+    "PUSHFD",  /* 133 */\r
+\r
+    "RCL",     /* 134 */\r
+    "RCR",     /* 135 */\r
+    "REP",     /* 136 */\r
+    "REPE",    /* 137 */\r
+    "REPNE",   /* 138 */\r
+    "REPNZ",   /* 139 */\r
+    "REPZ",    /* 140 */\r
+    "RET",     /* 141 */\r
+    "RETF",    /* 142 */\r
+    "RETN",    /* 143 */\r
+    "ROL",     /* 144 */\r
+    "ROR",     /* 145 */\r
+\r
+    "SAHF",    /* 146 */\r
+    "SAL",     /* 147 */\r
+    "SAR",     /* 148 */\r
+    "SBB",     /* 149 */\r
+    "SCAS",    /* 150 */\r
+    "SCASB",   /* 151 */\r
+    "SCASD",   /* 152 */\r
+    "SCASW",   /* 153 */\r
+    "SETA",    /* 154 */\r
+    "SETAE",   /* 155 */\r
+    "SETB",    /* 156 */\r
+    "SETBE",   /* 157 */\r
+    "SETC",    /* 158 */\r
+    "SETE",    /* 159 */\r
+    "SETG",    /* 160 */\r
+    "SETGE",   /* 161 */\r
+    "SETL",    /* 162 */\r
+    "SETLE",   /* 163 */\r
+    "SETNA",   /* 164 */\r
+    "SETNAE",  /* 165 */\r
+    "SETNB",   /* 166 */\r
+    "SETNBE",  /* 167 */\r
+    "SETNC",   /* 168 */\r
+       "SETNE",   /* 169 */\r
+       "SETNG",   /* 170 */\r
+       "SETNGE",  /* 171 */\r
+       "SETNL",   /* 172 */\r
+    "SETNLE",  /* 173 */\r
+    "SETNO",   /* 174 */\r
+    "SETNP",   /* 175 */\r
+    "SETNS",   /* 176 */\r
+    "SETNZ",   /* 177 */\r
+    "SETO",    /* 178 */\r
+    "SETP",    /* 179 */\r
+    "SETPE",   /* 180 */\r
+    "SETPO",   /* 181 */\r
+    "SETS",    /* 182 */\r
+    "SETZ",    /* 183 */\r
+    "SGDT",    /* 184 */\r
+    "SHL",     /* 185 */\r
+    "SHLD",    /* 186 */\r
+    "SHR",     /* 187 */\r
+    "SHRD",    /* 188 */\r
+    "SIDT",    /* 189 */\r
+    "SLDT",    /* 190 */\r
+    "SMSW",    /* 191 */\r
+    "STC",     /* 192 */\r
+    "STD",     /* 193 */\r
+    "STI",     /* 194 */\r
+    "STOS",    /* 195 */\r
+    "STOSB",   /* 196 */\r
+    "STOSD",   /* 197 */\r
+    "STOSW",   /* 198 */\r
+    "STR",     /* 199 */\r
+    "SUB",     /* 200 */\r
+\r
+    "TEST",    /* 201 */\r
+\r
+    "VERR",    /* 202 */\r
+    "VERW",    /* 203 */\r
+\r
+    "WAIT",    /* 204 */\r
+       "XCHG",    /* 205 */\r
+    "XLAT",    /* 206 */\r
+    "XLATB",   /* 207 */\r
+    "XOR"};    /* 208 */\r
+\r
+#define xAAA    1\r
+#define xAAD    2\r
+#define xAAM    3\r
+#define xAAS    4\r
+#define xADC    5\r
+#define xADD    6\r
+#define xAND    7\r
+#define xARPL   8\r
+\r
+#define xBOUND  9\r
+#define xBSF    10\r
+#define xBSR    11\r
+#define xBT     12\r
+#define xBTC    13\r
+#define xBTR    14\r
+#define xBTS    15\r
+\r
+#define xCALL   16\r
+#define xCBW    17\r
+#define xCDQ    18\r
+#define xCLC    19\r
+#define xCLD    20\r
+#define xCLI    21\r
+#define xCLTS   22\r
+#define xCMC    23\r
+#define xCMP    24\r
+#define xCMPS   25\r
+#define xCMPSB  26\r
+#define xCMPSD  27\r
+#define xCMPSW  28\r
+#define xCWD    29\r
+#define xCWDE   30\r
+\r
+#define xDAA    31\r
+#define xDAS    32\r
+#define xDEC    33\r
+#define xDIV    34\r
+\r
+#define xENTER  35\r
+#define xHLT    36\r
+\r
+#define xIDIV   37\r
+#define xIMUL   38\r
+#define xIN     39\r
+#define xINC    40\r
+#define xINS    41\r
+#define xINSB   42\r
+#define xINSD   43\r
+#define xINSW   44\r
+#define xINT    45\r
+#define xINTO   46\r
+#define xIRET   47\r
+#define xIRETD  48\r
+\r
+#define xJA     49\r
+#define xJAE    50\r
+#define xJB     51\r
+#define xJBE    52\r
+#define xJC     53\r
+#define xJCXZ   54\r
+#define xJE     55\r
+#define xJECXZ  56\r
+#define xJG     57\r
+#define xJGE    58\r
+#define xJL     59\r
+#define xJLE    60\r
+#define xJMP    61\r
+#define xJNA    62\r
+#define xJNAE   63\r
+#define xJNB    64\r
+#define xJNBE   65\r
+#define xJNC    66\r
+#define xJNE    67\r
+#define xJNG    68\r
+#define xJNGE   69\r
+#define xJNL    70\r
+#define xJNLE   71\r
+#define xJNO    72\r
+#define xJNP    73\r
+#define xJNS    74\r
+#define xJNZ    75\r
+#define xJO     76\r
+#define xJP     77\r
+#define xJPE    78\r
+#define xJPO    79\r
+#define xJS     80\r
+#define xJZ     81\r
+\r
+#define xLAHF   82\r
+#define xLAR    83\r
+#define xLDS    84\r
+#define xLEA    85\r
+#define xLEAVE  86\r
+#define xLES    87\r
+#define xLFS    88\r
+#define xLGDT   89\r
+#define xLGS    90\r
+#define xLIDT   91\r
+#define xLLDT   92\r
+#define xLMSW   93\r
+#define xLOCK   94\r
+#define xLODS   95\r
+#define xLODSB  96\r
+#define xLODSD  97\r
+#define xLODSW  98\r
+#define xLOOP   99\r
+#define xLOOPE  100\r
+#define xLOOPNE 101\r
+#define xLOOPNZ 102\r
+#define xLOOPZ  103\r
+#define xLSL    104\r
+#define xLSS    105\r
+#define xLTR    106\r
+\r
+#define xMOV    107\r
+#define xMOVS   108\r
+#define xMOVSB  109\r
+#define xMOVSD  110\r
+#define xMOVSW  111\r
+#define xMOVSX  112\r
+#define xMOVZX  113\r
+#define xMUL    114\r
+\r
+#define xNEG    115\r
+#define xNOP    116\r
+#define xNOT    117\r
+\r
+#define xOR     118\r
+#define xOUT    119\r
+#define xOUTS   120\r
+#define xOUTSB  121\r
+#define xOUTSD  122\r
+#define xOUTSW  123\r
+\r
+#define xPOP    124\r
+#define xPOPA   125\r
+#define xPOPAD  126\r
+#define xPOPF   127\r
+#define xPOPFD  128\r
+#define xPUSH   129\r
+#define xPUSHA  130\r
+#define xPUSHAD 131\r
+#define xPUSHF  132\r
+#define xPUSHFD 133\r
+\r
+#define xRCL    134\r
+#define xRCR    135\r
+#define xREP    136\r
+#define xREPE   137\r
+#define xREPNE  138\r
+#define xREPNZ  139\r
+#define xREPZ   140\r
+#define xRET    141\r
+#define xRETF   142\r
+#define xRETN   143\r
+#define xROL    144\r
+#define xROR    145\r
+\r
+#define xSAHF   146\r
+#define xSAL    147\r
+#define xSAR    148\r
+#define xSBB    149\r
+#define xSCAS   150\r
+#define xSCASB  151\r
+#define xSCASD  152\r
+#define xSCASW  153\r
+#define xSETA   154\r
+#define xSETAE  155\r
+#define xSETB   156\r
+#define xSETBE  157\r
+#define xSETC   158\r
+#define xSETE   159\r
+#define xSETG   160\r
+#define xSETGE  161\r
+#define xSETL   162\r
+#define xSETLE  163\r
+#define xSETNA  164\r
+#define xSETNAE 165\r
+#define xSETNB  166\r
+#define xSETNBE 167\r
+#define xSETNC  168\r
+#define xSETNE  169\r
+#define xSETNG  170\r
+#define xSETNGE 171\r
+#define xSETNL  172\r
+#define xSETNLE 173\r
+#define xSETNO  174\r
+#define xSETNP  175\r
+#define xSETNS  176\r
+#define xSETNZ  177\r
+#define xSETO   178\r
+#define xSETP   179\r
+#define xSETPE  180\r
+#define xSETPO  181\r
+#define xSETS   182\r
+#define xSETZ   183\r
+#define xSGDT   184\r
+#define xSHL    185\r
+#define xSHLD   186\r
+#define xSHR    187\r
+#define xSHRD   188\r
+#define xSIDT   189\r
+#define xSLDT   190\r
+#define xSMSW   191\r
+#define xSTC    192\r
+#define xSTD    193\r
+#define xSTI    194\r
+#define xSTOS   195\r
+#define xSTOSB  196\r
+#define xSTOSD  197\r
+#define xSTOSW  198\r
+#define xSTR    199\r
+#define xSUB    200\r
+\r
+#define xTEST   201\r
+\r
+#define xVERR   202\r
+#define xVERW   203\r
+\r
+#define xWAIT   204\r
+#define xXCHG   205\r
+#define xXLAT   206\r
+#define xXLATB  207\r
+#define xXOR    208\r
+\r
+\r
+#define nrinst 80                      /* number of float instructions */\r
+#define srinst 8\r
+char rgrinst[nrinst][srinst] = {               /*  560 bytes */\r
+\r
+       "F2XM1",     /* 01 */\r
+       "FABS",      /* 02 */\r
+       "FADD",      /* 03 */\r
+       "FADDP",     /* 04 */\r
+       "FBLD",      /* 05 */\r
+       "FBSTP",     /* 06 */\r
+       "FCHS",      /* 07 */\r
+       "FCLEX",     /* 08 */\r
+       "FCOM",      /* 09 */\r
+       "FCOMP",     /* 10 */\r
+       "FCOMPP",    /* 11 */\r
+       "FCOS",      /* 12 */\r
+       "FDECSTP",   /* 13 */\r
+       "FDIV",      /* 14 */\r
+       "FDIVP",     /* 15 */\r
+       "FDIVR",     /* 16 */\r
+       "FDIVRP",    /* 17 */\r
+       "FFREE",     /* 18 */\r
+       "FIADD",     /* 19 */\r
+       "FICOM",     /* 20 */\r
+       "FICOMP",    /* 21 */\r
+       "FIDIV",     /* 22 */\r
+       "FIDIVR",    /* 23 */\r
+       "FILD",      /* 24 */\r
+       "FIMUL",     /* 25 */\r
+       "FINCSTP",   /* 26 */\r
+       "FINIT",     /* 27 */\r
+       "FIST",      /* 28 */\r
+       "FISTP",     /* 29 */\r
+       "FISUB",     /* 30 */\r
+       "FISUBR",    /* 31 */\r
+       "FLD",       /* 32 */\r
+       "FLD1",      /* 33 */\r
+       "FLDCW",     /* 34 */\r
+       "FLDENV",    /* 35 */\r
+       "FLDL2E",    /* 36 */\r
+       "FLDL2T",    /* 37 */\r
+       "FLDLG2",    /* 38 */\r
+       "FLDLN2",    /* 39 */\r
+       "FLDPI",     /* 40 */\r
+       "FLDZ",      /* 41 */\r
+       "FMUL",      /* 42 */\r
+       "FMULP",     /* 43 */\r
+       "FNCLEX",    /* 44 */\r
+       "FNINIT",    /* 45 */\r
+       "FNOP",      /* 46 */\r
+       "FNSAVE",    /* 47 */\r
+       "FNSTCW",    /* 48 */\r
+       "FNSTENV",   /* 49 */\r
+       "FNSTSW",    /* 50 */\r
+       "FPATAN",    /* 51 */\r
+       "FPREM",     /* 52 */\r
+       "FPREM1",    /* 53 */\r
+       "FPTAN",     /* 54 */\r
+       "FRNDINT",   /* 55 */\r
+       "FRSTOR",    /* 56 */\r
+       "FSAVE",     /* 57 */\r
+       "FSCALE",    /* 58 */\r
+       "FSIN",      /* 59 */\r
+       "FSINCOS",   /* 60 */\r
+       "FSQRT",     /* 61 */\r
+       "FST",       /* 62 */\r
+       "FSTCW",     /* 63 */\r
+       "FSTENV",    /* 64 */\r
+       "FSTP",      /* 65 */\r
+       "FSTSW",     /* 66 */\r
+       "FSUB",      /* 67 */\r
+       "FSUBP",     /* 68 */\r
+       "FSUBPR",    /* 69 */\r
+       "FSUBR",     /* 70 */\r
+       "FTST",      /* 71 */\r
+       "FUCOM",     /* 72 */\r
+       "FUCOMP",    /* 73 */\r
+       "FUCOMPP",   /* 74 */\r
+       "FWAIT",     /* 75 */\r
+       "FXAM",      /* 76 */\r
+       "FXCH",      /* 77 */\r
+       "FXTRACT",   /* 78 */\r
+       "FYL2X",     /* 79 */\r
+       "FYL2XP1" }; /* 80 */\r
+\r
+\r
+/*  END OF INSTRUCTIONS  */\r
+\r
+/* Allowed Operand types for instruction sequences\r
+   Start numbering at 61 so they don't conflict with\r
+   token values or special characters */\r
+\r
+#define rel8   61      /* mem address within +/-127 bytes of currnt address */\r
+#define relW   62      /* mem address relative (WORD/DWORD) of current addr */\r
+#define iSAD   63      /* immediate segment address (seg16:offset16/32)  */\r
+#define r8     64      /* Reg: AL, BL, CL, DL, AH, BH, CH, DH            */\r
+#define r16    65      /* Reg: AX, BX, CX, DX, SP, BP, SI, DI            */\r
+#define r32    66      /* Reg: EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI    */\r
+#define rREG   67   /* Any 8, 16 or 32 bit general register */\r
+#define rRGW   68   /* Any 16 or 32 bit general register    */\r
+#define rACC   69   /* Reg: Accumulator AL, AX, EAX (any size) */\r
+#define rSEG   70   /* Reg: CS, DS, SS, ES, FS, GS   */\r
+#define rCRG   71   /* Reg: CR0, CR2, CR3 */\r
+#define rDRG   72   /* Reg: DR0, DR1, DR2, DR3, DR6, DR7 */\r
+#define rTRG   73   /* Reg: TR6, TR7 */\r
+#define imm8   74      /* Immediate BYTE - UNSIGNED*/\r
+#define ims8   75      /* Immediate BYTE - Will be SIGN Extended!!! */\r
+#define imm16  76      /* Immediate WORD signed value  */\r
+#define immX   77   /* immediate size value to match the other operand */\r
+#define rm8    78      /* r8 or memory address to BYTE                   */\r
+#define rm16   79      /* r16 or memory address to WORD                  */\r
+#define rRM    80   /* Any 8, 16 or 32 bit register or memory ref     */\r
+#define rRMW   81   /* Any 16 or 32 bit register or memory ref        */\r
+#define mem    82      /* Memory address. Any legal data mem reference   */\r
+#define memF   83      /* Memory address of a 16:32 ptr value   */\r
+#define moff   84      /* Memory address (Immediate, Disp only, Seg relative)*/\r
+#define immv3  85   /* immediate value 3 for INT 03 debug */\r
+#define immv1  86   /* immediate value 1 for some instructions (SHL etc.) */\r
+\r
+/* these are only used in the rgMEM32 table */\r
+\r
+#define val8   87      /* Indicates numeric value for displacement, */\r
+#define val16  88   /*  immediate, address, etc. Used in memory model */\r
+#define val32  89      /*  template. */\r
+\r
+\r
+/*  Instruction sequence lookup table is made of:\r
+       - Instruction number (from definitions above)\r
+       - Opr1-3 are the legal operands for the instructions\r
+       - Opc is base opcode.\r
+       - Oprm is the ModR/M byte (if needed). It is partially filled in\r
+         and used as indicated by Om1 below.\r
+       - Opfx - Operand prefix and operand count for instruction.\r
+               qP0F - Prefix Opc with 0x0f\r
+               qUW  - Use 0x66 prefix always\r
+               qU16 - If USE16 prefix Opcodes with 0x66.\r
+               qU32 - If USE32 prefix Opcodes with 0x66.\r
+\r
+       - Om1 -  Modifications or additions to OpCode to complete instruction:\r
+               zMOP - Use Oprm as ModR/M byte (which is already filled in\r
+                          partially with Opcode in bits 3-5). If operand 1 is\r
+                          register, placed code in R/M field of ModR/M byte (bits 0-2).\r
+                          If operand 1 is mem, handle normally. In special case of\r
+                          AAD and AAM instructions Oprm is actually second byte of\r
+                          opcode (no operands to handle).\r
+               zMR1 - Use Oprm as ModR/M byte. Register in operand 1\r
+                          must be encoded in REG/OPC field of ModR/M. If reg in\r
+                          operand 2 it must be incoded in R/M field.\r
+               zMR2 - Use Oprm as ModR/M byte. Register in operand 2\r
+                          must be encoded in REG/OPC field of ModR/M. If reg in\r
+                          operand 1, it must be encoded in R/M field.\r
+               zORD - OR Opc1 with 01 if WORD or DWORD reg/mem\r
+               zAR1 - No ModRM, Add register code in operand 1 to Opc byte to\r
+                      complete the opcode.\r
+               zAR2 - No ModRM, Add register code in operand 2 to Opc byte to\r
+                      complete the opcode.\r
+               zRG1 - If register in operand 1, it must be encoded in\r
+                      REG/OPC field of ModR/M, else handle memory operand normally.\r
+           zSIZ - This is not actually a modification to the instruction,\r
+                  but tells the assembler that the operand sizes will not\r
+                  match and that it's ok.  The operand size should be the\r
+                  size of the first operand.\r
+\r
+ */\r
+\r
+/* Prefix instruction/operand count byte */\r
+\r
+#define qP0F 0x01\r
+#define qU16 0x02\r
+#define qU32 0x04\r
+#define qUW  0x08\r
+\r
+/* OM1 instruction byte  (Opcode Modifier/Special build instructions) */\r
+#define zMOP 0x01\r
+#define zMR1 0x02\r
+#define zMR2 0x04\r
+#define zORD 0x08\r
+#define zAR1 0x10\r
+#define zAR2 0x20\r
+#define zRG1 0x40\r
+#define zSIZ 0x80\r
+\r
+\r
+/* Certain table entries were added for optimization to ensure that\r
+   the shortest instruction is used in all cases.  This adds about\r
+   50 lines to the table, but it's well worth the overhead!\r
+*/\r
+\r
+#define nrgINS 338\r
+unsigned char rgINS[nrgINS][8] = {  /* 338 * 8 = */\r
+\r
+/*Inst   Opr1    Opr2   Opr3  Opfx        Opc   Oprm   Om1          */\r
+\r
+{0      , 0,     0,     0,    0,          0,     0,    0            },\r
+{xAAA   , 0,     0,     0,    0,          0x37,  0,    0            },\r
+{xAAD   , 0,     0,     0,    0,          0xd5,  0x0A, zMOP         },\r
+{xAAM   , 0,     0,     0,    0,          0xd4,  0x0A, zMOP         },\r
+{xADC   , rACC,  immX,  0,    0,          0x14,  0,    zORD         },\r
+{xADC   , rRMW,  imm8,  0,    0,          0x83,  0x10, zMOP         },\r
+{xADC   , rRM,   immX,  0,    0,          0x80,  0x10, zMOP|zORD    },\r
+{xADC   , rRM,   rREG,  0,    0,          0x10,  0,    zMR2|zORD    },\r
+{xADC   , rREG,  rRM,   0,    0,          0x12,  0,    zMR1|zORD    },\r
+\r
+{xADD   , rRMW,  ims8,  0,    0,          0x83,  0,    zMOP         },\r
+{xADD   , rACC,  immX,  0,    0,          0x04,  0,    zORD         },\r
+{xADD   , rRM,   immX,  0,    0,          0x80,  0,    zMOP|zORD    },\r
+{xADD   , rREG,  rRM,   0,    0,          0x02,  0,    zMR1|zORD    },\r
+{xADD   , rRM,   rREG,  0,    0,          0x00,  0,    zMR2|zORD    },\r
+\r
+{xAND   , rRMW,  ims8,  0,    0,          0x83,  0x20, zMOP         },\r
+{xAND   , rACC,  immX,  0,    0,          0x24,  0,    zORD         },\r
+{xAND   , rRM,   immX,  0,    0,          0x80,  0x20, zMOP|zORD    },\r
+{xAND   , rREG,  rRM,   0,    0,          0x22,  0,    zMR1|zORD    },\r
+{xAND   , rRM,   rREG,  0,    0,          0x20,  0,    zMR2|zORD    },\r
+\r
+{xARPL  , rm16,  r16,   0,    0,          0x63,  0,    zMR2         },\r
+{xBOUND , rRMW,  mem,   0,    0,          0x62,  0,    zMR1         },\r
+{xBSF   , rRGW,  rRMW,  0,    qP0F,       0xbc,  0,    zMR1         },\r
+{xBSR   , rRGW,  rRMW,  0,    qP0F,       0xbd,  0,    zMR1         },\r
+{xBT    , rRMW,  rRGW,  0,    qP0F,       0xa3,  0,    zMR2         },\r
+{xBT    , rRMW,  imm8,  0,    qP0F,       0xba,  0x20, zMOP         },\r
+{xBTC   , rRMW,  rRGW,  0,    qP0F,       0xbb,  0,    zMR2         },\r
+{xBTC   , rRMW,  imm8,  0,    qP0F,       0xba,  0x38, zMOP         },\r
+{xBTR   , rRMW,  rRGW,  0,    qP0F,       0xb3,  0,    zMR2         },\r
+{xBTR   , rRMW,  imm8,  0,    qP0F,       0xba,  0x30, zMOP         },\r
+{xBTS   , rRMW,  rRGW,  0,    qP0F,       0xab,  0,    zMR2         },\r
+{xBTS   , rRMW,  imm8,  0,    qP0F,       0xba,  0x28, zMOP         },\r
+{xCALL  , relW,  0,     0,    0,          0xe8,  0,    0            },\r
+{xCALL  , rRMW,  0,     0,    0,          0xff,  0x10, zMOP         },\r
+{xCALL  , iSAD,  0,     0,    0,          0x9a,  0,    0            },\r
+{xCALL  , memF,  0,     0,    0,          0xff,  0x18, zMOP         },\r
+{xCBW   , 0,     0,     0,    qU32,       0x98,  0,    0            },\r
+{xCWDE  , 0,     0,     0,    qU16,       0x98,  0,    0            },\r
+{xCLC   , 0,     0,     0,    0,          0xf8,  0,    0            },\r
+{xCLD   , 0,     0,     0,    0,          0xfc,  0,    0            },\r
+{xCLI   , 0,     0,     0,    0,          0xfa,  0,    0            },\r
+{xCLTS  , 0,     0,     0,    qP0F,       0x06,  0,    0            },\r
+{xCMC   , 0,     0,     0,    0,          0xf5,  0,    0            },\r
+\r
+{xCMP   , rRMW,  ims8,  0,    0,          0x83,  0x38, zMOP         },\r
+{xCMP   , rACC,  immX,  0,    0,          0x3c,  0,    zORD         },\r
+{xCMP   , rRM,   immX,  0,    0,          0x80,  0x38, zMOP|zORD    },\r
+{xCMP   , rREG,  rRM,   0,    0,          0x3a,  0,    zMR1|zORD    },\r
+{xCMP   , rRM,   rREG,  0,    0,          0x38,  0,    zMR2|zORD    },\r
+\r
+{xCMPSB , 0,     0,     0,     0,         0xa6,  0,    0            },\r
+{xCMPSD , 0,     0,     0,     0,         0xa7,  0,    0            },\r
+{xCMPSW , 0,     0,     0,     qUW,       0xa7,  0,    0            },\r
+{xCWD   , 0,     0,     0,     qUW,      0x99,  0,    0            },\r
+{xCDQ   , 0,     0,     0,     qU16,      0x99,  0,    0            },\r
+{xDAA   , 0,     0,     0,     0,         0x27,  0,    0            },\r
+{xDAS   , 0,     0,     0,     0,         0x2f,  0,    0            },\r
+{xDEC   , rRGW,  0,     0,     0,         0x48,  0,    zAR1         },\r
+{xDEC   , rRM,   0,     0,     0,         0xfe,  0x08, zMOP|zORD    },\r
+{xDIV   , rRM,   0,     0,     0,         0xf6,  0x30, zMOP|zORD    },\r
+{xENTER , imm16, imm8,  0,     0,         0xc8,  0,    zSIZ         },\r
+{xHLT   , 0,     0,     0,     0,         0xf4,  0,    0            },\r
+{xIDIV  , rRM,   0,     0,     0,         0xf6,  0x38, zMOP|zORD    },\r
+{xIMUL  , rRM,   0,     0,     0,         0xf6,  0x28, zMOP|zORD    },\r
+{xIMUL  , rRGW,  rRMW,  0,     qP0F,      0xaf,  0,    zMR1         },\r
+{xIMUL  , rRGW,  rRMW,  imm8,  0,         0x6b,  0,    zMR1         },\r
+{xIMUL  , rRGW,  imm8,  0,     0,         0x6b,  0,    zMR1|zSIZ    },\r
+{xIMUL  , rRGW,  rRMW,  immX,  0,         0x69,  0,    zMR1         },\r
+{xIMUL  , rRGW,  immX,  0,     0,         0x69,  0,    zMR1         },\r
+{xIN    , rACC,  imm8,  0,     0,         0xe4,  0,    zORD|zSIZ    },\r
+{xIN    , rACC,  rDX,   0,     0,         0xec,  0,    zORD|zSIZ    },\r
+{xINC   , rRGW,  0,     0,     0,         0x40,  0,    zAR1         },\r
+{xINC   , rRM,   0,     0,     0,         0xfe,  0,    zMOP|zORD    },\r
+{xINSB  , 0,     0,     0,     0,         0x6C,  0,    0            },\r
+{xINSD  , 0,     0,     0,     0,         0x6D,  0,    0            },\r
+{xINSW  , 0,     0,     0,     qUW,       0x6D,  0,    0            },\r
+{xINT   , immv3, 0,     0,     0,         0xcc,  0,    0            },\r
+{xINT   , imm8,  0,     0,     0,         0xcd,  0,    0            },\r
+{xINTO  , 0,     0,     0,     0,         0xce,  0,    0            },\r
+{xIRET  , 0,     0,     0,     qUW,       0xcf,  0,    0            },\r
+{xIRETD , 0,     0,     0,     0,         0xcf,  0,    0            },\r
+{xJA    , rel8,  0,     0,     0,         0x77,  0,    0            },\r
+{xJA    , relW,  0,     0,     qP0F,      0x87,  0,    0            },\r
+{xJAE   , rel8,  0,     0,     0,         0x73,  0,    0            },\r
+{xJAE   , relW,  0,     0,     qP0F,      0x83,  0,    0            },\r
+{xJB    , rel8,  0,     0,     0,         0x72,  0,    0            },\r
+{xJB    , relW,  0,     0,     qP0F,      0x82,  0,    0            },\r
+{xJBE   , rel8,  0,     0,     0,         0x76,  0,    0            },\r
+{xJBE   , relW,  0,     0,     qP0F,      0x86,  0,    0            },\r
+{xJC    , rel8,  0,     0,     0,         0x72,  0,    0            },\r
+{xJC    , relW,  0,     0,     qP0F,      0x82,  0,    0            },\r
+{xJCXZ  , rel8,  0,     0,     0,         0xe3,  0,    0            },\r
+{xJNBE  , rel8,  0,     0,     0,         0x77,  0,    0            },\r
+{xJNBE  , relW,  0,     0,     qP0F,      0x87,  0,    0            },\r
+{xJNB   , rel8,  0,     0,     0,         0x73,  0,    0            },\r
+{xJNB   , relW,  0,     0,     qP0F,      0x83,  0,    0            },\r
+{xJNC   , rel8,  0,     0,     0,         0x73,  0,    0            },\r
+{xJNC   , relW,  0,     0,     qP0F,      0x83,  0,    0            },\r
+{xJNA   , rel8,  0,     0,     0,         0x76,  0,    0            },\r
+{xJNA   , relW,  0,     0,     qP0F,      0x86,  0,    0            },\r
+{xJNAE  , rel8,  0,     0,     0,         0x72,  0,    0            },\r
+{xJNAE  , relW,  0,     0,     qP0F,      0x82,  0,    0            },\r
+{xJECXZ , rel8,  0,     0,     0,         0xe3,  0,    0            },\r
+{xJE    , rel8,  0,     0,     0,         0x74,  0,    0            },\r
+{xJE    , relW,  0,     0,     qP0F,      0x84,  0,    0            },\r
+{xJG    , rel8,  0,     0,     0,         0x7f,  0,    0            },\r
+{xJG    , relW,  0,     0,     qP0F,      0x8f,  0,    0            },\r
+{xJGE   , rel8,  0,     0,     0,         0x7d,  0,    0            },\r
+{xJGE   , relW,  0,     0,     qP0F,      0x8d,  0,    0            },\r
+{xJNL   , rel8,  0,     0,     0,         0x7d,  0,    0            },\r
+{xJNL   , relW,  0,     0,     qP0F,      0x8d,  0,    0            },\r
+{xJL    , rel8,  0,     0,     0,         0x7c,  0,    0            },\r
+{xJL    , relW,  0,     0,     qP0F,      0x8c,  0,    0            },\r
+{xJNGE  , rel8,  0,     0,     0,         0x7c,  0,    0            },\r
+{xJNGE  , relW,  0,     0,     qP0F,      0x8c,  0,    0            },\r
+{xJLE   , rel8,  0,     0,     0,         0x7e,  0,    0            },\r
+{xJLE   , relW,  0,     0,     qP0F,      0x8e,  0,    0            },\r
+{xJNG   , rel8,  0,     0,     0,         0x7e,  0,    0            },\r
+{xJNG   , relW,  0,     0,     qP0F,      0x8e,  0,    0            },\r
+{xJNE   , rel8,  0,     0,     0,         0x75,  0,    0            },\r
+{xJNE   , relW,  0,     0,     qP0F,      0x85,  0,    0            },\r
+{xJNLE  , rel8,  0,     0,     0,         0x7f,  0,    0            },\r
+{xJNLE  , relW,  0,     0,     qP0F,      0x8f,  0,    0            },\r
+{xJNO   , rel8,  0,     0,     0,         0x71,  0,    0            },\r
+{xJNO   , relW,  0,     0,     qP0F,      0x81,  0,    0            },\r
+{xJNP   , rel8,  0,     0,     0,         0x7b,  0,    0            },\r
+{xJNP   , relW,  0,     0,     qP0F,      0x8b,  0,    0            },\r
+{xJNS   , rel8,  0,     0,     0,         0x79,  0,    0            },\r
+{xJNS   , relW,  0,     0,     qP0F,      0x89,  0,    0            },\r
+{xJNZ   , rel8,  0,     0,     0,         0x75,  0,    0            },\r
+{xJNZ   , relW,  0,     0,     qP0F,      0x85,  0,    0            },\r
+{xJO    , rel8,  0,     0,     0,         0x70,  0,    0            },\r
+{xJO    , relW,  0,     0,     qP0F,      0x80,  0,    0            },\r
+{xJP    , rel8,  0,     0,     0,         0x7a,  0,    0            },\r
+{xJP    , relW,  0,     0,     qP0F,      0x8a,  0,    0            },\r
+{xJPO   , rel8,  0,     0,     0,         0x7b,  0,    0            },\r
+{xJPO   , relW,  0,     0,     qP0F,      0x8b,  0,    0            },\r
+{xJPE   , rel8,  0,     0,     0,         0x7a,  0,    0            },\r
+{xJPE   , relW,  0,     0,     qP0F,      0x8a,  0,    0            },\r
+{xJS    , rel8,  0,     0,     0,         0x78,  0,    0            },\r
+{xJS    , relW,  0,     0,     qP0F,      0x88,  0,    0            },\r
+{xJZ    , rel8,  0,     0,     0,         0x74,  0,    0            },\r
+{xJZ    , relW,  0,     0,     qP0F,      0x84,  0,    0            },\r
+{xJMP   , rel8,  0,     0,     0,         0xeb,  0,    0            },\r
+{xJMP   , relW,  0,     0,     0,         0xe9,  0,    0            },\r
+{xJMP   , rRMW,  0,     0,     0,         0xff,  0x20, zMOP         },\r
+{xJMP   , iSAD,  0,     0,     0,         0xea,  0,    0            },\r
+{xJMP   , memF,  0,     0,     0,         0xff,  0x28, zMOP         },\r
+{xLAHF  , 0,     0,     0,     0,         0x9f,  0,    0            },\r
+{xLAR   , rRGW,  rRMW,  0,     qP0F,      0x02,  0,    zMR1         },\r
+{xLEA   , rRGW,  mem,   0,     0,         0x8d,  0,    zMR1|zSIZ    },\r
+{xLEAVE , 0,     0,     0,     0,         0xc9,  0,    0            },\r
+{xLGDT  , memF,  0,     0,     qP0F,      0x01,  0x10, zMOP         },\r
+{xLIDT  , memF,  0,     0,     qP0F,      0x01,  0x18, zMOP         },\r
+{xLDS   , rRGW,  memF,  0,     0,         0xc5,  0,    zMR1         },\r
+{xLSS   , rRGW,  memF,  0,     qP0F,      0xb2,  0,    zMR1         },\r
+{xLES   , rRGW,  memF,  0,     0,         0xc4,  0,    zMR1         },\r
+{xLFS   , rRGW,  memF,  0,     qP0F,      0xb4,  0,    zMR1         },\r
+{xLGS   , rRGW,  memF,  0,     qP0F,      0xb5,  0,    zMR1         },\r
+{xLLDT  , rm16,  0,     0,     qP0F,      0x00,  0x10, zMOP         },\r
+{xLMSW  , rm16,  0,     0,     qP0F,      0x01,  0x30, zMOP         },\r
+{xLOCK  , 0,     0,     0,     0,         0xf0,  0,    0            },\r
+{xLODSB , 0,     0,     0,     0,         0xac,  0,    0            },\r
+{xLODSD , 0,     0,     0,     0,         0xad,  0,    0            },\r
+{xLODSW , 0,     0,     0,     qUW,       0xad,  0,    0            },\r
+{xLOOP  , rel8,  0,     0,     0,         0xe2,  0,    0            },\r
+{xLOOPE , rel8,  0,     0,     0,         0xe1,  0,    0            },\r
+{xLOOPZ , rel8,  0,     0,     0,         0xe1,  0,    0            },\r
+{xLOOPNE, rel8,  0,     0,     0,         0xe0,  0,    0            },\r
+{xLOOPNZ, rel8,  0,     0,     0,         0xe0,  0,    0            },\r
+{xLSL   , rRGW,  rRMW,  0,     qP0F,      0x03,  0,    zMR1         },\r
+{xLTR   , rm16,  0,     0,     qP0F,      0x00,  0x18, zMOP         },\r
+{xMOV   , rACC,  moff,  0,     0,         0xA0,  0,    zORD         },\r
+{xMOV   , moff,  rACC,  0,     0,         0xA2,  0,    zORD         },\r
+{xMOV   , r8,    imm8,  0,     0,         0xb0,  0,    zAR1         },\r
+{xMOV   , rRGW,  immX,  0,     0,         0xb8,  0,    zAR1         },\r
+{xMOV   , rREG,  rRM,   0,     0,         0x8a,  0,    zMR1|zORD    },\r
+{xMOV   , rRM,   rREG,  0,     0,         0x88,  0,    zMR2|zORD    },\r
+{xMOV   , rRM,   immX,  0,     0,         0xc6,  0,    zMR1|zORD    },/*?*/\r
+{xMOV   , rm16,  rSEG,  0,     0,         0x8c,  0,    zMR2         },\r
+{xMOV   , rSEG,  rm16,  0,     0,         0x8e,  0,    zMR1         },\r
+{xMOV   , r32,   rCRG,  0,     qP0F,      0x20,  0,    zMR2         },\r
+{xMOV   , rCRG,  r32,   0,     qP0F,      0x22,  0,    zMR1         },\r
+{xMOV   , r32,   rDRG,  0,     qP0F,      0x21,  0,    zMR2         },\r
+{xMOV   , rDRG,  r32,   0,     qP0F,      0x23,  0,    zMR1         },\r
+{xMOV   , r32,   rTRG,  0,     qP0F,      0x24,  0,    zMR2         },\r
+{xMOV   , rTRG,  r32,   0,     qP0F,      0x26,  0,    zMR1         },\r
+{xMOVSB , 0,     0,     0,     0,         0xa4,  0,    0            },\r
+{xMOVSD , 0,     0,     0,     0,         0xa5,  0,    0            },\r
+{xMOVSW , 0,     0,     0,     qUW,       0xa5,  0,    0            },\r
+{xMOVSX , r32,   rm16,  0,     qP0F,      0xbf,  0,    zMR1|zSIZ    },\r
+{xMOVSX , rRGW,  rm8,   0,     qP0F,      0xbe,  0,    zMR1|zSIZ    },\r
+{xMOVZX , r32,   rm16,  0,     qP0F,      0xb7,  0,    zMR1|zSIZ    },\r
+{xMOVZX , rRGW,  rm8,   0,     qP0F,      0xb6,  0,    zMR1|zSIZ    },\r
+{xMUL   , rRM,   0,     0,     0,         0xf6,  0x20, zMOP|zORD    },\r
+{xNEG   , rRM,   0,     0,     0,         0xf6,  0x18, zMOP|zORD    },\r
+{xNOP   , 0,     0,     0,     0,         0x90,  0,    0            },\r
+{xNOT   , rRM,   0,     0,     0,         0xf6,  0x10, zMOP|zORD    },\r
+\r
+{xOR    , rRMW,  ims8,  0,     0,         0x83,  0x08, zMOP         },\r
+{xOR    , rACC,  immX,  0,     0,         0x0c,  0,    zORD         },\r
+{xOR    , rRM,   immX,  0,     0,         0x80,  0x08, zMOP|zORD    },\r
+{xOR    , rREG,  rRM,   0,     0,         0x0a,  0,    zMR1|zORD    },\r
+{xOR    , rRM,   rREG,  0,     0,         0x08,  0,    zMR2|zORD    },\r
+\r
+{xOUT   , imm8,  rACC,  0,     0,         0xe6,  0,    zORD         },\r
+{xOUT   , rDX,   rACC,  0,     0,         0xee,  0,    zORD         },\r
+{xOUTSB , 0,     0,     0,     0,         0x6e,  0,    0            },\r
+{xOUTSD , 0,     0,     0,     0,         0x6f,  0,    0            },\r
+{xOUTSW , 0,     0,     0,     qUW,       0x6f,  0,    0            },\r
+{xPOP   , mem,   0,     0,     0,         0x8f,  0,    zMOP         },\r
+{xPOP   , rRGW,  0,     0,     0,         0x58,  0,    zAR1         },\r
+{xPOP   , rDS,   0,     0,     0,         0x1f,  0,    0            },\r
+{xPOP   , rES,   0,     0,     0,         0x07,  0,    0            },\r
+{xPOP   , rSS,   0,     0,     0,         0x17,  0,    0            },\r
+{xPOP   , rFS,   0,     0,     qP0F,      0xa1,  0,    0            },\r
+{xPOP   , rGS,   0,     0,     qP0F,      0xa9,  0,    0            },\r
+{xPOPA  , 0,     0,     0,     0,         0x61,  0,    0            },\r
+{xPOPAD , 0,     0,     0,     0,         0x61,  0,    0            },\r
+{xPOPF  , 0,     0,     0,     0,         0x9d,  0,    0            },\r
+{xPOPFD , 0,     0,     0,     0,         0x9d,  0,    0            },\r
+{xPUSH  , mem,   0,     0,     0,         0xff,  0x30, zMOP         },\r
+{xPUSH  , rRGW,  0,     0,     0,         0x50,  0,    zAR1         },\r
+{xPUSH  , ims8,  0,     0,     0,         0x6a,  0,    0            },\r
+{xPUSH  , immX,  0,     0,     0,         0x68,  0,    0            },\r
+{xPUSH  , rCS,   0,     0,     0,         0x0e,  0,    0            },\r
+{xPUSH  , rSS,   0,     0,     0,         0x16,  0,    0            },\r
+{xPUSH  , rDS,   0,     0,     0,         0x1e,  0,    0            },\r
+{xPUSH  , rES,   0,     0,     0,         0x06,  0,    0            },\r
+{xPUSH  , rFS,   0,     0,     qP0F,      0xa0,  0,    0            },\r
+{xPUSH  , rGS,   0,     0,     qP0F,      0xa8,  0,    0            },\r
+{xPUSHA , 0,     0,     0,     0,         0x60,  0,    0            },\r
+{xPUSHAD, 0,     0,     0,     0,         0x60,  0,    0            },\r
+{xPUSHF , 0,     0,     0,     0,         0x9c,  0,    0            },\r
+{xPUSHFD, 0,     0,     0,     0,         0x9c,  0,    0            },\r
+{xRCL   , rRM,   immv1, 0,     0,         0xd0,  0x10, zMOP|zORD|zSIZ },\r
+{xRCL   , rRM,   rCL,   0,     0,         0xd2,  0x10, zMOP|zORD|zSIZ },\r
+{xRCL   , rRM,   imm8,  0,     0,         0xc0,  0x10, zMOP|zORD|zSIZ },\r
+{xRCR   , rRM,   immv1, 0,     0,         0xd0,  0x18, zMOP|zORD|zSIZ },\r
+{xRCR   , rRM,   rCL,   0,     0,         0xd2,  0x18, zMOP|zORD|zSIZ },\r
+{xRCR   , rRM,   imm8,  0,     0,         0xc0,  0x18, zMOP|zORD|zSIZ },\r
+{xROL   , rRM,   immv1, 0,     0,         0xd0,  0,    zMOP|zORD|zSIZ },\r
+{xROL   , rRM,   rCL,   0,     0,         0xd2,  0,    zMOP|zORD|zSIZ },\r
+{xROL   , rRM,   imm8,  0,     0,         0xc0,  0,    zMOP|zORD|zSIZ },\r
+{xROR   , rRM,   immv1, 0,     0,         0xd0,  0x08, zMOP|zORD|zSIZ },\r
+{xROR   , rRM,   rCL,   0,     0,         0xd2,  0x08, zMOP|zORD|zSIZ },\r
+{xROR   , rRM,   imm8,  0,     0,         0xc0,  0x08, zMOP|zORD|zSIZ },\r
+{xREP   , 0,     0,     0,     0,         0xf3,  0,    0            },\r
+{xREPE  , 0,     0,     0,     0,         0xf3,  0,    0            },\r
+{xREPNE , 0,     0,     0,     0,         0xf2,  0,    0            },\r
+{xRETN  , 0,     0,     0,     0,         0xc3,  0,    0            },\r
+{xRETN  , imm16, 0,     0,     0,         0xc2,  0,    0            },\r
+{xRETF  , 0,     0,     0,     0,         0xcb,  0,    0            },\r
+{xRETF  , imm16, 0,     0,     0,         0xca,  0,    0            },\r
+{xSAL   , rRM,   immv1, 0,     0,         0xd0,  0x20, zMOP|zORD|zSIZ },\r
+{xSAL   , rRM,   rCL,   0,     0,         0xd2,  0x20, zMOP|zORD|zSIZ },\r
+{xSAL   , rRM,   imm8,  0,     0,         0xc0,  0x20, zMOP|zORD|zSIZ },\r
+{xSAR   , rRM,   immv1, 0,     0,         0xd0,  0x38, zMOP|zORD|zSIZ },\r
+{xSAR   , rRM,   rCL,   0,     0,         0xd2,  0x38, zMOP|zORD|zSIZ },\r
+{xSAR   , rRM,   imm8,  0,     0,         0xc0,  0x38, zMOP|zORD|zSIZ },\r
+{xSHL   , rRM,   immv1, 0,     0,         0xd0,  0x20, zMOP|zORD|zSIZ },\r
+{xSHL   , rRM,   rCL,   0,     0,         0xd2,  0x20, zMOP|zORD|zSIZ },\r
+{xSHL   , rRM,   imm8,  0,     0,         0xc0,  0x20, zMOP|zORD|zSIZ },\r
+{xSHR   , rRM,   immv1, 0,     0,         0xd0,  0x28, zMOP|zORD|zSIZ },\r
+{xSHR   , rRM,   rCL,   0,     0,         0xd2,  0x28, zMOP|zORD|zSIZ },\r
+{xSHR   , rRM,   imm8,  0,     0,         0xc0,  0x28, zMOP|zORD|zSIZ },\r
+\r
+{xSBB   , rRMW,  ims8,  0,     0,         0x83,  0x18, zMOP         },\r
+{xSBB   , rACC,  immX,  0,     0,         0x1c,  0,    zORD         },\r
+{xSBB   , rRM,   immX,  0,     0,         0x80,  0x18, zMOP|zORD    },\r
+{xSBB   , rREG,  rRM,   0,     0,         0x1a,  0,    zMR1|zORD    },\r
+{xSBB   , rRM,   rREG,  0,     0,         0x18,  0,    zMR2|zORD    },\r
+\r
+{xSCASB , 0,     0,     0,     0,         0xae,  0,    0            },\r
+{xSCASD , 0,     0,     0,     0,         0xaf,  0,    0            },\r
+{xSCASW , 0,     0,     0,     qUW,       0xaf,  0,    0            },\r
+{xSETA  , rm8,   0,     0,     qP0F,      0x97,  0,    zRG1         },\r
+{xSETAE , rm8,   0,     0,     qP0F,      0x93,  0,    zRG1         },\r
+{xSETB  , rm8,   0,     0,     qP0F,      0x92,  0,    zRG1         },\r
+{xSETBE , rm8,   0,     0,     qP0F,      0x96,  0,    zRG1         },\r
+{xSETC  , rm8,   0,     0,     qP0F,      0x92,  0,    zRG1         },\r
+{xSETE  , rm8,   0,     0,     qP0F,      0x94,  0,    zRG1         },\r
+{xSETG  , rm8,   0,     0,     qP0F,      0x9F,  0,    zRG1         },\r
+{xSETGE , rm8,   0,     0,     qP0F,      0x9D,  0,    zRG1         },\r
+{xSETL  , rm8,   0,     0,     qP0F,      0x9C,  0,    zRG1         },\r
+{xSETLE , rm8,   0,     0,     qP0F,      0x9E,  0,    zRG1         },\r
+{xSETNA , rm8,   0,     0,     qP0F,      0x96,  0,    zRG1         },\r
+{xSETNAE, rm8,   0,     0,     qP0F,      0x92,  0,    zRG1         },\r
+{xSETNB , rm8,   0,     0,     qP0F,      0x93,  0,    zRG1         },\r
+{xSETNBE, rm8,   0,     0,     qP0F,      0x97,  0,    zRG1         },\r
+{xSETNC , rm8,   0,     0,     qP0F,      0x93,  0,    zRG1         },\r
+{xSETNE , rm8,   0,     0,     qP0F,      0x95,  0,    zRG1         },\r
+{xSETNG , rm8,   0,     0,     qP0F,      0x9E,  0,    zRG1         },\r
+{xSETNGE, rm8,   0,     0,     qP0F,      0x9C,  0,    zRG1         },\r
+{xSETNL , rm8,   0,     0,     qP0F,      0x9D,  0,    zRG1         },\r
+{xSETNLE, rm8,   0,     0,     qP0F,      0x9F,  0,    zRG1         },\r
+{xSETNO , rm8,   0,     0,     qP0F,      0x91,  0,    zRG1         },\r
+{xSETNP , rm8,   0,     0,     qP0F,      0x9B,  0,    zRG1         },\r
+{xSETNS , rm8,   0,     0,     qP0F,      0x99,  0,    zRG1         },\r
+{xSETNZ , rm8,   0,     0,     qP0F,      0x95,  0,    zRG1         },\r
+{xSETO  , rm8,   0,     0,     qP0F,      0x90,  0,    zRG1         },\r
+{xSETP  , rm8,   0,     0,     qP0F,      0x9A,  0,    zRG1         },\r
+{xSETPE , rm8,   0,     0,     qP0F,      0x9A,  0,    zRG1         },\r
+{xSETPO , rm8,   0,     0,     qP0F,      0x9B,  0,    zRG1         },\r
+{xSETS  , rm8,   0,     0,     qP0F,      0x98,  0,    zRG1         },\r
+{xSETZ  , rm8,   0,     0,     qP0F,      0x94,  0,    zRG1         },\r
+{xSGDT  , memF,  0,     0,     qP0F,      0x01,  0,    zMOP         },\r
+{xSIDT  , memF,  0,     0,     qP0F,      0x01,  0x08, zMOP         },\r
+{xSHLD  , rRMW,  rRGW,  imm8,  qP0F,      0xa4,  0,    0            },\r
+{xSHLD  , rRMW,  rRGW,  rCL,   qP0F,      0xa5,  0,    0            },\r
+{xSHRD  , rRMW,  rRGW,  imm8,  qP0F,      0xac,  0,    0            },\r
+{xSHRD  , rRMW,  rRGW,  rCL,   qP0F,      0xad,  0,    0            },\r
+{xSLDT  , rm16,  0,     0,     qP0F,      0x00,  0,    zMOP         },\r
+{xSMSW  , rm16,  0,     0,     qP0F,      0x01,  0x20, zMOP         },\r
+{xSTC   , 0,     0,     0,     0,         0xf9,  0,    0            },\r
+{xSTI   , 0,     0,     0,     0,         0xfb,  0,    0            },\r
+{xSTD   , 0,     0,     0,     0,         0xfd,  0,    0            },\r
+{xSTOSB , 0,     0,     0,     0,         0xaa,  0,    0            },\r
+{xSTOSD , 0,     0,     0,     0,         0xab,  0,    0            },\r
+{xSTOSW , 0,     0,     0,     qUW,       0xab,  0,    0            },\r
+{xSTR   , rm16,  0,     0,     qP0F,      0x00,  0x08, zMOP         },\r
+\r
+{xSUB   , rRMW,  ims8,  0,     0,         0x83,  0x28, zMOP         },\r
+{xSUB   , rACC,  immX,  0,     0,         0x2c,  0,    zORD         },\r
+{xSUB   , rRM,   immX,  0,     0,         0x80,  0x28, zMOP|zORD    },\r
+{xSUB   , rREG,  rRM,   0,     0,         0x2a,  0,    zMR1|zORD    },\r
+{xSUB   , rRM,   rREG,  0,     0,         0x28,  0,    zMR2|zORD    },\r
+\r
+{xTEST  , rACC,  immX,  0,     0,         0xa8,  0,    zORD         },\r
+{xTEST  , rRM,   immX,  0,     0,         0xf6,  0,    zMOP|zORD    },\r
+{xTEST  , rREG,  rRM,   0,     0,         0x84,  0,    zMR1|zORD    },\r
+{xVERR  , rm16,  0,     0,     qP0F,      0x00,  0x20, zMOP         },\r
+{xVERW  , rm16,  0,     0,     qP0F,      0x00,  0x28, zMOP         },\r
+{xWAIT  , 0,     0,     0,     0,         0x9b,  0,    0            },\r
+{xXCHG  , r16,   rAX,   0,     0,         0x90,  0,    zAR1         },\r
+{xXCHG  , rAX,   r16,   0,     0,         0x90,  0,    zAR2         },\r
+{xXCHG  , r32,   rEAX,  0,     0,         0x90,  0,    zAR1         },\r
+{xXCHG  , rEAX,  r32,   0,     0,         0x90,  0,    zAR2         },\r
+{xXCHG  , rRM,   rREG,  0,     0,         0x86,  0,    zMR2|zORD    },\r
+{xXCHG  , rREG,  rRM,   0,     0,         0x86,  0,    zMR1|zORD    },\r
+{xXLAT  , mem,   0,     0,     0,         0x00,  0,    0            },\r
+{xXLATB , 0,     0,     0,     0,         0x00,  0,    0            },\r
+\r
+{xXOR   , rRMW,  ims8,  0,     0,         0x83,  0x30, zMOP         },\r
+{xXOR   , rACC,  immX,  0,     0,         0x34,  0,    zORD         },\r
+{xXOR   , rRM,   immX,  0,     0,         0x80,  0x30, zMOP|zORD    },\r
+{xXOR   , rREG,  rRM,   0,     0,         0x32,  0,    zMR1|zORD    },\r
+{xXOR   , rRM,   rREG,  0,     0,         0x30,  0,    zMR2|zORD    },\r
+};\r
+\r
+/* END of instruction sequence definitions  */\r
+\r
+/* This table provides look-up instructions on building the ModR/M and\r
+   SIB bytes (optional) for all memory references.\r
+   THIS IS ONLY FOR MEMORY REFERENCES.\r
+   The Mod value in this table can be ORed to the ModR/M byte\r
+   and SS value in this table can be ORed to the SIB byte\r
+   for the instruction you're building.\r
+*/\r
+\r
+\r
+#define fBase   0x01\r
+#define fIndx   0x02   /* fScale = 1 by default when fIndx is present */\r
+#define fScale2 0x04\r
+#define fScale4 0x08\r
+#define fScale8 0x10\r
+#define fDisp8  0x20\r
+#define fDisp32 0x40\r
+\r
+#define UseSIB  1\r
+#define nrgM32 20\r
+\r
+U8 rgM32[20][4] = {\r
+/*                                    UseSIB  Mod   SS */\r
+{   0,                                 0,    0x00, 0x00 },\r
+{   fBase,                             0,    0x00, 0x00 },\r
+{   fBase | fIndx,                     1,    0x04, 0x00 },\r
+{   fIndx | fScale2,                   1,    0x04, 0x40 },\r
+{   fIndx | fScale4,                   1,    0x04, 0x80 },\r
+{   fIndx | fScale8,                   1,    0x04, 0xC0 },\r
+{   fDisp32,                           0,    0x05, 0x00 },\r
+{   fBase | fIndx | fScale2,           1,    0x04, 0x40 },\r
+{   fBase | fIndx | fScale4,           1,    0x04, 0x80 },\r
+{   fBase | fIndx | fScale8,           1,    0x04, 0xC0 },\r
+{   fBase | fDisp8,                    0,    0x40, 0x00 },\r
+{   fBase | fDisp32,                   0,    0x80, 0x00 },\r
+{   fBase | fIndx | fDisp8,            1,    0x44, 0x00 },\r
+{   fBase | fIndx | fDisp32,           1,    0x84, 0x00 },\r
+{   fBase | fIndx | fScale2 | fDisp8,  1,    0x44, 0x40 },\r
+{   fBase | fIndx | fScale4 | fDisp8,  1,    0x44, 0x80 },\r
+{   fBase | fIndx | fScale8 | fDisp8,  1,    0x44, 0xC0 },\r
+{   fBase | fIndx | fScale2 | fDisp32, 1,    0x84, 0x40 },\r
+{   fBase | fIndx | fScale4 | fDisp32, 1,    0x84, 0x80 },\r
+{   fBase | fIndx | fScale8 | fDisp32, 1,    0x84, 0xC0 },\r
+};\r
+\r
+\r
+/* The following 16 bit addressing modes are recognized: */\r
+/* UseSIB is always 0 in 16 bit addressing modes */\r
+\r
+#define nrgM16 24\r
+\r
+int rgM16[24][8] = {\r
+\r
+/*                                       UseSIB  Mod     SS */\r
+       {rBX,    rSI,    0,     0,   0,   0,     0,      0},\r
+       {rBX,    rDI,    0,     0,   0,   0,     0,      0},\r
+       {rBP,    rSI,    0,     0,   0,   0,     0,      0},\r
+       {rBP,    rDI,    0,     0,   0,   0,     0,      0},\r
+       {rSI,    0,      0,     0,   0,   0,     0,      0},\r
+       {rDI,    0,      0,     0,   0,   0,     0,      0},\r
+       {val16,  0,      0,     0,   0,   0,     0,      0},\r
+       {rBX,    0,      0,     0,   0,   0,     0,      0},\r
+       {rBX,    rSI,    val8,  0,   0,   0,     0,      0},\r
+       {rBX,    rDI,    val8,  0,   0,   0,     0,      0},\r
+       {rBP,    rSI,    val8,  0,   0,   0,     0,      0},\r
+       {rBP,    rDI,    val8,  0,   0,   0,     0,      0},\r
+       {rSI,    val8,   0,     0,   0,   0,     0,      0},\r
+       {rDI,    val8,   0,         0,   0,   0,     0,      0},\r
+       {rBP,    val8,   0,         0,   0,   0,     0,      0},\r
+       {rBX,    val8,   0,         0,   0,   0,     0,      0},\r
+       {rBX,    rSI,    val16, 0,   0,   0,     0,      0},\r
+       {rBX,    rDI,    val16, 0,   0,   0,     0,      0},\r
+       {rBP,    rSI,    val16, 0,   0,   0,     0,      0},\r
+       {rBP,    rDI,    val16, 0,   0,   0,     0,      0},\r
+       {rSI,    val16,  0,     0,   0,   0,     0,      0},\r
+       {rDI,    val16,  0,         0,   0,   0,     0,      0},\r
+       {rBP,    val16,  0,         0,   0,   0,     0,      0},\r
+       {rBX,    val16,  0,     0,   0,   0,     0,      0},\r
+       };\r
+\r
+/* End of memory Look-up tables */\r
+\r
+/* The following flag bits are used to determine memory operand size\r
+   either by looking at the register involved, or by seeing the user\r
+   force the size with WORD PTR (etc.).  They are put in variable\r
+   OpSize and used by the functions that encode the instruction.\r
+*/\r
+\r
+#define fByte  0x01\r
+#define fWord  0x02\r
+#define fDWord 0x04\r
+#define fFWord 0x08\r
+#define fNear  0x10\r
+#define fFar   0x20\r
+#define fShort 0x40\r
+#define fPtr   0x80            /* not currently used... */\r
+\r
+/* The following flag bits are used to determine if a register prefix\r
+   was specified as part of a memory address. The flag bits are set in\r
+   char variable OpPrefix.\r
+*/\r
+\r
+#define fDSp   0x01\r
+#define fESp   0x02\r
+#define fSSp   0x04\r
+#define fFSp   0x08\r
+#define fGSp   0x10\r
+#define fCSp   0x20\r
+\r
+/*  END OF HEADER FILE */\r