home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / OBJASM.ZIP / OUTABLE.C < prev    next >
C/C++ Source or Header  |  1991-01-03  |  44KB  |  586 lines

  1. #include <stdio.h>
  2. #include "o.h"
  3.  
  4. INST_T  instr[] = {
  5.     mod_reg,        0,  "add",          /* ADD     mem/reg,reg (byte) [00] */
  6.     mod_reg,        1,  "add",          /* ADD     mem/reg,reg (word) [01] */
  7.     mod_reg,        2,  "add",          /* ADD     reg,mem/reg (byte) [02] */
  8.     mod_reg,        3,  "add",          /* ADD     reg,mem/reg (word) [03] */
  9.     two_byte,      AL,  "add",          /* ADD     AL,kk              [04] */
  10.     three_byte,    AX,  "add",          /* ADD     AX,jjkk            [05] */
  11.     one_byte,      ES,  "push",         /* PUSH    ES                 [06] */
  12.     one_byte,      ES,  "pop",          /* POP     ES                 [07] */
  13.     mod_reg,        0,  "or",           /* OR      mem/reg,reg (byte) [08] */
  14.     mod_reg,        1,  "or",           /* OR      mem/reg,reg (word) [09] */
  15.     mod_reg,        2,  "or",           /* OR      reg,mem/reg (byte) [0A] */
  16.     mod_reg,        3,  "or",           /* OR      reg,mem/reg (word) [0B] */
  17.     two_byte,      AL,  "or",           /* OR      AL,kk              [0C] */
  18.     three_byte,    AX,  "or",           /* OR      AX,jjkk            [0D] */
  19.     one_byte,      CS,  "push",         /* PUSH    CS                 [0E] */
  20.     extra,          0,  "",             /* not used                   [0F] */
  21.     mod_reg,        0,  "adc",          /* ADC     mem/reg,reg (byte) [10] */
  22.     mod_reg,        1,  "adc",          /* ADC     mem/reg,reg (word) [11] */
  23.     mod_reg,        2,  "adc",          /* ADC     reg,mem/reg (byte) [12] */
  24.     mod_reg,        3,  "adc",          /* ADC     reg,mem/reg (word) [13] */
  25.     two_byte,      AL,  "adc",          /* ADC     AL,kk              [14] */
  26.     three_byte,    AX,  "adc",          /* ADC     AX,jjkk            [15] */
  27.     one_byte,      SS,  "push",         /* PUSH    SS                 [16] */
  28.     one_byte,      SS,  "pop",          /* POP     SS                 [17] */
  29.     mod_reg,        0,  "sbb",          /* SBB     mem/reg,reg (byte) [18] */
  30.     mod_reg,        1,  "sbb",          /* SBB     mem/reg,reg (word) [19] */
  31.     mod_reg,        2,  "sbb",          /* SBB     reg,mem/reg (byte) [1A] */
  32.     mod_reg,        3,  "sbb",          /* SBB     reg,mem/reg (word) [1B] */
  33.     two_byte,      AL,  "sbb",          /* SBB     AL,kk              [1C] */
  34.     three_byte,    AX,  "sbb",          /* SBB     AX,jjkk            [1D] */
  35.     one_byte,      DS,  "push",         /* PUSH    DS                 [1E] */
  36.     one_byte,      DS,  "pop",          /* POP     DS                 [1F] */
  37.     mod_reg,        0,  "and",          /* AND     mem/reg,reg (byte) [20] */
  38.     mod_reg,        1,  "and",          /* AND     mem/reg,reg (word) [21] */
  39.     mod_reg,        2,  "and",          /* AND     reg,mem/reg (byte) [22] */
  40.     mod_reg,        3,  "and",          /* AND     reg,mem/reg (word) [23] */
  41.     two_byte,      AL,  "and",          /* AND     AL,kk              [24] */
  42.     three_byte,    AX,  "and",          /* AND     AX,jjkk            [25] */
  43.     seg_over,       0,  "",             /* SEGMENT OVERIDE "ES"       [26] */
  44.     one_byte,    NREG,  "daa",          /* DAA                        [27] */
  45.     mod_reg,        0,  "sub",          /* SUB     mem/reg,reg (byte) [28] */
  46.     mod_reg,        1,  "sub",          /* SUB     mem/reg,reg (word) [29] */
  47.     mod_reg,        2,  "sub",          /* SUB     reg,mem/reg (byte) [2A] */
  48.     mod_reg,        3,  "sub",          /* SUB     reg,mem/reg (word) [2B] */
  49.     two_byte,      AL,  "sub",          /* SUB     AL,kk              [2C] */
  50.     three_byte,    AX,  "sub",          /* SUB     AX,jjkk            [2D] */
  51.     seg_over,       0,  "",             /* SEGMENT OVERIDE "CS"       [2E] */
  52.     one_byte,    NREG,  "das",          /* DAS                        [2F] */
  53.     mod_reg,        0,  "xor",          /* XOR     mem/reg,reg (byte) [30] */
  54.     mod_reg,        1,  "xor",          /* XOR     mem/reg,reg (word) [31] */
  55.     mod_reg,        2,  "xor",          /* XOR     reg,mem/reg (byte) [32] */
  56.     mod_reg,        3,  "xor",          /* XOR     reg,mem/reg (word) [33] */
  57.     two_byte,      AL,  "xor",          /* XOR     AL,kk              [34] */
  58.     three_byte,    AX,  "xor",          /* XOR     AX,jjkk            [35] */
  59.     seg_over,       0,  "",             /* SEGMENT OVERIDE "SS"       [36] */
  60.     one_byte,    NREG,  "aaa",          /* AAA                        [37] */
  61.     mod_reg,        0,  "cmp",          /* CMP     mem/reg,reg (byte) [38] */
  62.     mod_reg,        1,  "cmp",          /* CMP     mem/reg,reg (word) [39] */
  63.     mod_reg,        2,  "cmp",          /* CMP     reg,mem/reg (byte) [3A] */
  64.     mod_reg,        3,  "cmp",          /* CMP     reg,mem/reg (word) [3B] */
  65.     two_byte,      AL,  "cmp",          /* CMP     AL,kk              [3C] */
  66.     three_byte,    AX,  "cmp",          /* CMP     AX,jjkk            [3D] */
  67.     seg_over,       0,  "",             /* SEGMENT OVERIDE "DS"       [3E] */
  68.     one_byte,    NREG,  "aas",          /* AAS                        [3F] */
  69.     one_byte,      AX,  "inc",          /* INC     AX                 [40] */
  70.     one_byte,      CX,  "inc",          /* INC     CX                 [41] */
  71.     one_byte,      DX,  "inc",          /* INC     DX                 [42] */
  72.     one_byte,      BX,  "inc",          /* INC     BX                 [43] */
  73.     one_byte,      SP,  "inc",          /* INC     SP                 [44] */
  74.     one_byte,      BP,  "inc",          /* INC     BP                 [45] */
  75.     one_byte,      SI,  "inc",          /* INC     SI                 [46] */
  76.     one_byte,      DI,  "inc",          /* INC     DI                 [47] */
  77.     one_byte,      AX,  "dec",          /* DEC     AX                 [48] */
  78.     one_byte,      CX,  "dec",          /* DEC     CX                 [49] */
  79.     one_byte,      DX,  "dec",          /* DEC     DX                 [4A] */
  80.     one_byte,      BX,  "dec",          /* DEC     BX                 [4B] */
  81.     one_byte,      SP,  "dec",          /* DEC     SP                 [4C] */
  82.     one_byte,      BP,  "dec",          /* DEC     BP                 [4D] */
  83.     one_byte,      SI,  "dec",          /* DEC     SI                 [4E] */
  84.     one_byte,      DI,  "dec",          /* DEC     DI                 [4F] */
  85.     one_byte,      AX,  "push",         /* PUSH    AX                 [50] */
  86.     one_byte,      CX,  "push",         /* PUSH    CX                 [51] */
  87.     one_byte,      DX,  "push",         /* PUSH    DX                 [52] */
  88.     one_byte,      BX,  "push",         /* PUSH    BX                 [53] */
  89.     one_byte,      SP,  "push",         /* PUSH    SP                 [54] */
  90.     one_byte,      BP,  "push",         /* PUSH    BP                 [55] */
  91.     one_byte,      SI,  "push",         /* PUSH    SI                 [56] */
  92.     one_byte,      DI,  "push",         /* PUSH    DI                 [57] */
  93.     one_byte,      AX,  "pop",          /* POP     AX                 [58] */
  94.     one_byte,      CX,  "pop",          /* POP     CX                 [59] */
  95.     one_byte,      DX,  "pop",          /* POP     DX                 [5A] */
  96.     one_byte,      BX,  "pop",          /* POP     BX                 [5B] */
  97.     one_byte,      SP,  "pop",          /* POP     SP                 [5C] */
  98.     one_byte,      BP,  "pop",          /* POP     BP                 [5D] */
  99.     one_byte,      SI,  "pop",          /* POP     SI                 [5E] */
  100.     one_byte,      DI,  "pop",          /* POP     DI                 [5F] */
  101.     one_byte,    NREG,  "pusha",        /* PUSHA (PUSHAD on 386)      [60] */
  102.     one_byte,    NREG,  "popa",         /* POPA (POPAD on 386)        [61] */
  103.     mod_reg,       17,  "bound",        /* BOUND                      [62] */
  104.     mod_reg,        1,  "arpl",         /* ARPL                       [63] */
  105.     seg_over,       0,  "",             /* SEGMENT OVERIDE "FS" on 386[64] */
  106.     seg_over,       0,  "",             /* SEGMENT OVERIDE "GS" on 386[65] */
  107.     opsize_over,    0,  "",             /* OPERAND SIZE OVERIDE on 386[66] */
  108.     adrsize_over,   0,  "",             /* ADDRESS SIZE OVERIDE on 386[67] */
  109.     three_byte,  NREG,  "push",         /* PUSH (immediate word)      [68] */
  110.     mod_reg,       24,  "imul",         /* IMUL reg,mem/reg,imm. word [69] */
  111.     two_ubyte,      0,  "push\t",       /* PUSH (immed. signed byte)  [6A] */
  112.     mod_reg,       25,  "imul",         /* IMUL reg,mem/reg,imm. byte [6B] */
  113.     one_byte,    NREG,  "insb",         /* INS     BYTE               [6C] */
  114.     one_byte,    NREG,  "insw",         /* INS     WORD               [6D] */
  115.     one_byte,    NREG,  "outsb",        /* OUTS    BYTE               [6E] */
  116.     one_byte,    NREG,  "outsw",        /* OUTS    WORD               [6F] */
  117.     disp8,          0,  "jo",           /* JO      <Label>            [70] */
  118.     disp8,          0,  "jno",          /* JNO     <Label>            [71] */
  119.     disp8,          0,  "jc",           /* JC      <Label>            [72] */
  120.     disp8,          0,  "jnc",          /* JNC     <Label>            [73] */
  121.     disp8,          0,  "jz",           /* JZ      <Label>            [74] */
  122.     disp8,          0,  "jnz",          /* JNZ     <Label>            [75] */
  123.     disp8,          0,  "jbe",          /* JBE     <Label>            [76] */
  124.     disp8,          0,  "jnbe",         /* JNBE    <Label>            [77] */
  125.     disp8,          0,  "js",           /* JS      <Label>            [78] */
  126.     disp8,          0,  "jns",          /* JNS     <Label>            [79] */
  127.     disp8,          0,  "jp",           /* JP      <Label>            [7A] */
  128.     disp8,          0,  "jnp",          /* JNP     <Label>            [7B] */
  129.     disp8,          0,  "jl",           /* JL      <Label>            [7C] */
  130.     disp8,          0,  "jnl",          /* JNL     <Label>            [7D] */
  131.     disp8,          0,  "jng",          /* JG      <Label>            [7E] */
  132.     disp8,          0,  "jg",           /* JNG     <Label>            [7F] */
  133.     mod_reg,        4,  "",             /* Special mem/reg,kk         [80] */
  134.     mod_reg,        5,  "",             /* Special mem/reg,jjkk       [81] */
  135.     stub,           0,  "",             /* not used                   [82] */
  136.     mod_reg,        6,  "",             /* Special mem/reg,kk (word)  [83] */
  137.     mod_reg,        2,  "test",         /* TEST    mem/reg,reg (byte) [84] */
  138.     mod_reg,        3,  "test",         /* TEST    mem/reg,reg (word) [85] */
  139.     mod_reg,        2,  "xchg",         /* XCHG    reg,mem/reg (byte) [86] */
  140.     mod_reg,        3,  "xchg",         /* XCHG    reg,mem/reg (word) [87] */
  141.     mod_reg,        0,  "mov",          /* MOV     mem/reg,reg (byte) [88] */
  142.     mod_reg,        1,  "mov",          /* MOV     mem/reg,reg (word) [89] */
  143.     mod_reg,        2,  "mov",          /* MOV     reg,mem/reg (byte) [8A] */
  144.     mod_reg,        3,  "mov",          /* MOV     reg,mem/reg (word) [8B] */
  145.     mod_reg,        7,  "mov",          /* MOV     mem/reg,segreg     [8C] */
  146.     mod_reg,        9,  "lea",          /* LEA     reg,mem/reg        [8D] */
  147.     mod_reg,        8,  "mov",          /* MOV     segreg,mem/reg     [8E] */
  148.     mod_reg,       10,  "",             /* POP     mem/reg (Special)  [8F] */
  149.     one_byte,    NREG,  "nop",          /* NOP                        [90] */
  150.     one_a,         CX,  "xchg",         /* XCHG    AX,CX              [91] */
  151.     one_a,         DX,  "xchg",         /* XCHG    AX,DX              [92] */
  152.     one_a,         BX,  "xchg",         /* XCHG    AX,BX              [93] */
  153.     one_a,         SP,  "xchg",         /* XCHG    AX,SP              [94] */
  154.     one_a,         BP,  "xchg",         /* XCHG    AX,BP              [95] */
  155.     one_a,         SI,  "xchg",         /* XCHG    AX,SI              [96] */
  156.     one_a,         DI,  "xchg",         /* XCHG    AX,DI              [97] */
  157.     one_byte,    NREG,  "cbw",          /* CBW                        [98] */
  158.     one_byte,    NREG,  "cwd",          /* CWD                        [99] */
  159.     five_byte,      0,  "call",         /* CALL    <Label>            [9A] */
  160.     wait,           0,  "wait",         /* WAIT                       [9B] */
  161.     one_byte,    NREG,  "pushf",        /* PUSHF                      [9C] */
  162.     one_byte,    NREG,  "popf",         /* POPF                       [9D] */
  163.     one_byte,    NREG,  "sahf",         /* SAHF                       [9E] */
  164.     one_byte,    NREG,  "lahf",         /* LAHF                       [9F] */
  165.     three_a,        0,  "mov",          /* MOV     AL,addr            [A0] */
  166.     three_a,        0,  "mov",          /* MOV     AX,addr            [A1] */
  167.     three_a,        0,  "mov",          /* MOV     addr,AL            [A2] */
  168.     three_a,        0,  "mov",          /* MOV     addr,AX            [A3] */
  169.     string_byte,    0,  "movs",         /* MOVS    BYTE               [A4] */
  170.     string_byte,    0,  "movs",         /* MOVS    WORD               [A5] */
  171.     string_byte,    0,  "cmps",         /* CMPS    BYTE               [A6] */
  172.     string_byte,    0,  "cmps",         /* CMPS    WORD               [A7] */
  173.     two_byte,      AL,  "test",         /* TEST    AL,addr            [A8] */
  174.     three_byte,    AX,  "test",         /* TEST    AX,addr            [A9] */
  175.     string_byte,    0,  "stos",         /* STOS    BYTE               [AA] */
  176.     string_byte,    0,  "stos",         /* STOS    WORD               [AB] */
  177.     string_byte,    0,  "lods",         /* LODS    BYTE               [AC] */
  178.     string_byte,    0,  "lods",         /* LODS    WORD               [AD] */
  179.     string_byte,    0,  "scas",         /* SCAS    BYTE               [AE] */
  180.     string_byte,    0,  "scas",         /* SCAS    WORD               [AF] */
  181.     two_byte,      AL,  "mov",          /* MOV     AL,kk              [B0] */
  182.     two_byte,      CL,  "mov",          /* MOV     CL,kk              [B1] */
  183.     two_byte,      DL,  "mov",          /* MOV     DL,kk              [B2] */
  184.     two_byte,      BL,  "mov",          /* MOV     BL,kk              [B3] */
  185.     two_byte,      AH,  "mov",          /* MOV     AH,kk              [B4] */
  186.     two_byte,      CH,  "mov",          /* MOV     CH,kk              [B5] */
  187.     two_byte,      DH,  "mov",          /* MOV     DH,kk              [B6] */
  188.     two_byte,      BH,  "mov",          /* MOV     BH,kk              [B7] */
  189.     three_byte,    AX,  "mov",          /* MOV     AX,kk              [B8] */
  190.     three_byte,    CX,  "mov",          /* MOV     CX,kk              [B9] */
  191.     three_byte,    DX,  "mov",          /* MOV     DX,kk              [BA] */
  192.     three_byte,    BX,  "mov",          /* MOV     BX,kk              [BB] */
  193.     three_byte,    SP,  "mov",          /* MOV     SP,kk              [BC] */
  194.     three_byte,    BP,  "mov",          /* MOV     BP,kk              [BD] */
  195.     three_byte,    SI,  "mov",          /* MOV     SI,kk              [BE] */
  196.     three_byte,    DI,  "mov",          /* MOV     DI,kk              [BF] */
  197.     mod_reg,       11,  "",             /* Special mem/reg,kk  (byte) [C0] */
  198.     mod_reg,       12,  "",             /* Special mem/reg,kk  (word) [C1] */
  199.     three_byte,  NREG,  "ret",          /* RET     jjkk               [C2] */
  200.     one_byte,    NREG,  "ret",          /* RET                        [C3] */
  201.     mod_reg,       17,  "les",          /* LES     reg,mem            [C4] */
  202.     mod_reg,       17,  "lds",          /* LDS     reg,mem            [C5] */
  203.     mod_reg,       18,  "",             /* MOV     mem,kk   (Special) [C6] */
  204.     mod_reg,       19,  "",             /* MOV     mem,jjkk (Special) [C7] */
  205.     enter,          0,  "enter",        /* ENTER   im. word,im. byte  [C8] */
  206.     one_byte,    NREG,  "leave",        /* LEAVE                      [C9] */
  207.     three_byte,  NREG,  "retf",         /* RETF    jjkk               [CA] */
  208.     one_byte,    NREG,  "retf",         /* RETF                       [CB] */
  209.     one_byte,    NREG,  "int\t3",       /* INT     3                  [CC] */
  210.     two_byte,    NREG,  "int",          /* INT     type               [CD] */
  211.     one_byte,    NREG,  "into",         /* INTO                       [CE] */
  212.     one_byte,    NREG,  "iret",         /* IRET                       [CF] */
  213.     mod_reg,       13,  "",             /* Special mem/reg,1  (byte)  [D0] */
  214.     mod_reg,       14,  "",             /* Special mem/reg,1  (word)  [D1] */
  215.     mod_reg,       15,  "",             /* Special mem/reg,CL (byte)  [D2] */
  216.     mod_reg,       16,  "",             /* Special mem/reg,CL (word)  [D3] */
  217.     two_bcd,        0,  "aam",          /* AAM                        [D4] */
  218.     two_bcd,        0,  "aad",          /* AAD                        [D5] */
  219.     stub,           0,  "",             /* not used                   [D6] */
  220.     one_byte,    NREG,  "xlat",         /* XLAT                       [D7] */
  221.     esc,            0,  "esc",          /* ESC  (Special)             [D8] */
  222.     esc,            0,  "esc",          /* ESC  (Special)             [D9] */
  223.     esc,            0,  "esc",          /* ESC  (Special)             [DA] */
  224.     esc,            0,  "esc",          /* ESC  (Special)             [DB] */
  225.     esc,            0,  "esc",          /* ESC  (Special)             [DC] */
  226.     esc,            0,  "esc",          /* ESC  (Special)             [DD] */
  227.     esc,            0,  "esc",          /* ESC  (Special)             [DE] */
  228.     esc,            0,  "esc",          /* ESC  (Special)             [DF] */
  229.     disp8,          0,  "loopnz",       /* LOOPNZ                     [E0] */
  230.     disp8,          0,  "loopz",        /* LOOPZ                      [E1] */
  231.     disp8,          0,  "loop",         /* LOOP                       [E2] */
  232.     disp8,          0,  "jcxz",         /* JCXZ                       [E3] */
  233.     two_byte,      AL,  "in",           /* IN      AL,kk              [E4] */
  234.     two_byte,      AX,  "in",           /* IN      AX,kk              [E5] */
  235.     two_a,          0,  "out",          /* OUT     kk,AL              [E6] */
  236.     two_a,          0,  "out",          /* OUT     kk,AX              [E7] */
  237.     disp16,         0,  "call",         /* CALL    <Label>            [E8] */
  238.     disp16,         0,  "jmp",          /* JMP     <Label>            [E9] */
  239.     five_byte,      0,  "jmp",          /* JMP     <Label>            [EA] */
  240.     disp8,          0,  "jmp",          /* JMP     SHORT <Label>      [EB] */
  241.     in_out,        DX,  "in",           /* IN      AL,DX              [EC] */
  242.     in_out,        DX,  "in",           /* IN      AX,DX              [ED] */
  243.     in_out,        DX,  "out",          /* OUT     DX,AL              [EE] */
  244.     in_out,        DX,  "out",          /* OUT     DX,AX              [EF] */
  245.     prefix,         0,  "lock",         /* LOCK                       [F0] */
  246.     stub,           0,  "",             /* not used                   [F1] */
  247.     prefix,         0,  "repnz",        /* REPNZ                      [F2] */
  248.     prefix,         0,  "repz",         /* REPZ                       [F3] */
  249.     one_byte,       0,  "hlt",          /* HLT                        [F4] */
  250.     one_byte,       0,  "cmc",          /* CMC                        [F5] */
  251.     mod_reg,       20,  "",             /* Special (byte) (Group 3)   [F6] */
  252.     mod_reg,       21,  "",             /* Special (word) (Group 3)   [F7] */
  253.     one_byte,       0,  "clc",          /* CLC                        [F8] */
  254.     one_byte,       0,  "stc",          /* STC                        [F9] */
  255.     one_byte,       0,  "cli",          /* CLI                        [FA] */
  256.     one_byte,       0,  "sti",          /* STI                        [FB] */
  257.     one_byte,       0,  "cld",          /* CLD                        [FC] */
  258.     one_byte,       0,  "std",          /* STD                        [FD] */
  259.     mod_reg,       22,  "",             /* Special (Group 4)          [FE] */
  260.     mod_reg,       23,  ""         };   /* Special (Group 4)          [FF] */
  261.  
  262. char *esc_inst[] = {
  263.     "fadd",         /* FADD (DWord Ptr)   [00] */
  264.     "fmul",         /* FMUL (DWord Ptr)   [01] */
  265.     "fcom",         /* FCOM (DWord Ptr)   [02] */
  266.     "fcomp",        /* FCOMP (DWord Ptr)  [03] */
  267.     "fsub",         /* FSUB (DWord Ptr)   [04] */
  268.     "fsubr",        /* FSUBR (DWord Ptr)  [05] */
  269.     "fdiv",         /* FDIV (DWord Ptr)   [06] */
  270.     "fdivr",        /* FDIVR (DWord Ptr)  [07] */
  271.     "fld",          /* FLD (DWord Ptr)    [08] */
  272.     "",             /* ESC 09h            [09] */
  273.     "fst",          /* FST (DWord Ptr)    [0A] */
  274.     "fstp",         /* FSTP (DWord Ptr)   [0B] */
  275.     "fldenv",       /* FLDENV             [0C] */
  276.     "fldcw",        /* FLDCW              [0D] */
  277.     "fnstenv",      /* FSTENV             [0E] */
  278.     "fnstcw",       /* FSTCW              [0F] */
  279.     "fiadd",        /* FIADD (DWord Ptr)  [10] */
  280.     "fimul",        /* FIMUL (DWord Ptr)  [11] */
  281.     "ficom",        /* FICOM (DWord Ptr)  [12] */
  282.     "ficomp",       /* FICOMP (DWord Ptr) [13] */
  283.     "fisub",        /* FISUB (DWord Ptr)  [14] */
  284.     "fisubr",       /* FISUBR (DWord Ptr) [15] */
  285.     "fidiv",        /* FIDIV (DWord Ptr)  [16] */
  286.     "fidivr",       /* FIDIVR (DWord Ptr) [17] */
  287.     "fild",         /* FILD (DWord Ptr)   [18] */
  288.     "",             /* ESC 19h            [19] */
  289.     "fist",         /* FIST (DWord Ptr)   [1A] */
  290.     "fistp",        /* FISTP (DWord Ptr)  [1B] */
  291.     "",             /* ESC 1Ch            [1C] */
  292.     "fld",          /* FLD (TByte Ptr)    [1D] */
  293.     "",             /* ESC 1Eh            [1E] */
  294.     "fstp",         /* FSTP (TByte Ptr)   [1F] */
  295.     "fadd",         /* FADD (QWord Ptr)   [20] */
  296.     "fmul",         /* FMUL (QWord Ptr)   [21] */
  297.     "fcom",         /* FCOM (QWord Ptr)   [22] */
  298.     "fcomp",        /* FCOMP (QWord Ptr)  [23] */
  299.     "fsub",         /* FSUB (QWord Ptr)   [24] */
  300.     "fsubr",        /* FSUBR (QWord Ptr)  [25] */
  301.     "fdiv",         /* FDIV (QWord Ptr)   [26] */
  302.     "fdivr",        /* FDIVR (QWord Ptr)  [27] */
  303.     "fld",          /* FLD (QWord Ptr)    [28] */
  304.     "",             /* ESC 29h            [29] */
  305.     "fst",          /* FST (QWord Ptr)    [2A] */
  306.     "fstp",         /* FSTP (QWord Ptr)   [2B] */
  307.     "frstor",       /* FRSTOR             [2C] */
  308.     "",             /* ESC 2Dh            [2D] */
  309.     "fnsave",       /* FSAVE              [2E] */
  310.     "fnstsw",       /* FSTSW              [2F] */
  311.     "fiadd",        /* FIADD (Word Ptr)   [30] */
  312.     "fimul",        /* FIMUL (Word Ptr)   [31] */
  313.     "ficom",        /* FICOM (Word Ptr)   [32] */
  314.     "ficomp",       /* FICOMP (Word Ptr)  [33] */
  315.     "fisub",        /* FISUB (Word Ptr)   [34] */
  316.     "fisubr",       /* FISUBR (Word Ptr)  [35] */
  317.     "fidiv",        /* FIDIV (Word Ptr)   [36] */
  318.     "fidivr",       /* FIDIVR (Word Ptr)  [37] */
  319.     "fild",         /* FILD (Word Ptr)    [38] */
  320.     "",             /* ESC 39h            [39] */
  321.     "fist",         /* FIST (Word Ptr)    [3A] */
  322.     "fistp",        /* FISTP (Word Ptr)   [3B] */
  323.     "fbld",         /* FBLD (TByte Ptr)   [3C] */
  324.     "fild",         /* FILD (QWord Ptr)   [3D] */
  325.     "fbstp",        /* FBSTP (QWord Ptr)  [3E] */
  326.     "fistp",   };   /* FISTP (QWord Ptr)  [3F] */
  327.  
  328. INST_T  ex_instr[] = {
  329.     mod_reg,       26,  "",             /* Spec. (word) (grp 6)   [0F] [00] */
  330.     mod_reg,       27,  "",             /* Spec. (dword) (grp 7)  [0F] [01] */
  331.     mod_reg,       28,  "lar",          /* LAR                    [0F] [02] */
  332.     mod_reg,       28,  "lsl",          /* LSL                    [0F] [03] */
  333.     stub,           0,  "",             /* not used               [0F] [04] */
  334.     stub,           0,  "",             /* not used               [0F] [05] */
  335.     one_byte,    NREG,  "clts",         /* not used               [0F] [06] */
  336.     stub,           0,  "",             /* not used               [0F] [07] */
  337.     one_byte,    NREG,  "",             /* INVD (486 only)        [0F] [08] */
  338.     one_byte,    NREG,  "",             /* WBINVD (486 only)      [0F] [09] */
  339.     stub,           0,  "",             /* not used               [0F] [0A] */
  340.     stub,           0,  "",             /* not used               [0F] [0B] */
  341.     stub,           0,  "",             /* not used               [0F] [0C] */
  342.     stub,           0,  "",             /* not used               [0F] [0D] */
  343.     stub,           0,  "",             /* not used               [0F] [0E] */
  344.     stub,           0,  "",             /* not used               [0F] [0F] */
  345.     stub,           0,  "",             /* not used               [0F] [10] */
  346.     stub,           0,  "",             /* not used               [0F] [11] */
  347.     stub,           0,  "",             /* not used               [0F] [12] */
  348.     stub,           0,  "",             /* not used               [0F] [13] */
  349.     stub,           0,  "",             /* not used               [0F] [14] */
  350.     stub,           0,  "",             /* not used               [0F] [15] */
  351.     stub,           0,  "",             /* not used               [0F] [16] */
  352.     stub,           0,  "",             /* not used               [0F] [17] */
  353.     stub,           0,  "",             /* not used               [0F] [18] */
  354.     stub,           0,  "",             /* not used               [0F] [19] */
  355.     stub,           0,  "",             /* not used               [0F] [1A] */
  356.     stub,           0,  "",             /* not used               [0F] [1B] */
  357.     stub,           0,  "",             /* not used               [0F] [1C] */
  358.     stub,           0,  "",             /* not used               [0F] [1D] */
  359.     stub,           0,  "",             /* not used               [0F] [1E] */
  360.     stub,           0,  "",             /* not used               [0F] [1F] */
  361.     mod_reg,       31,  "mov",          /* MOV      r32,CRx       [0F] [20] */
  362.     mod_reg,       32,  "mov",          /* MOV      CRx,r32       [0F] [21] */
  363.     mod_reg,       33,  "mov",          /* MOV      r32,DRx       [0F] [22] */
  364.     mod_reg,       34,  "mov",          /* MOV      DRx,r32       [0F] [23] */
  365.     mod_reg,       35,  "mov",          /* MOV      r32,TRx       [0F] [24] */
  366.     stub,           0,  "",             /* not used               [0F] [25] */
  367.     mod_reg,       36,  "mov",          /* MOV      TRx,r32       [0F] [26] */
  368.     stub,           0,  "",             /* not used               [0F] [27] */
  369.     stub,           0,  "",             /* not used               [0F] [28] */
  370.     stub,           0,  "",             /* not used               [0F] [29] */
  371.     stub,           0,  "",             /* not used               [0F] [2A] */
  372.     stub,           0,  "",             /* not used               [0F] [2B] */
  373.     stub,           0,  "",             /* not used               [0F] [2C] */
  374.     stub,           0,  "",             /* not used               [0F] [2D] */
  375.     stub,           0,  "",             /* not used               [0F] [2E] */
  376.     stub,           0,  "",             /* not used               [0F] [2F] */
  377.     stub,           0,  "",             /* not used               [0F] [30] */
  378.     stub,           0,  "",             /* not used               [0F] [31] */
  379.     stub,           0,  "",             /* not used               [0F] [32] */
  380.     stub,           0,  "",             /* not used               [0F] [33] */
  381.     stub,           0,  "",             /* not used               [0F] [34] */
  382.     stub,           0,  "",             /* not used               [0F] [05] */
  383.     stub,           0,  "",             /* not used               [0F] [36] */
  384.     stub,           0,  "",             /* not used               [0F] [37] */
  385.     stub,           0,  "",             /* not used               [0F] [38] */
  386.     stub,           0,  "",             /* not used               [0F] [39] */
  387.     stub,           0,  "",             /* not used               [0F] [3A] */
  388.     stub,           0,  "",             /* not used               [0F] [3B] */
  389.     stub,           0,  "",             /* not used               [0F] [3C] */
  390.     stub,           0,  "",             /* not used               [0F] [3D] */
  391.     stub,           0,  "",             /* not used               [0F] [3E] */
  392.     stub,           0,  "",             /* not used               [0F] [3F] */
  393.     stub,           0,  "",             /* not used               [0F] [40] */
  394.     stub,           0,  "",             /* not used               [0F] [41] */
  395.     stub,           0,  "",             /* not used               [0F] [42] */
  396.     stub,           0,  "",             /* not used               [0F] [43] */
  397.     stub,           0,  "",             /* not used               [0F] [44] */
  398.     stub,           0,  "",             /* not used               [0F] [45] */
  399.     stub,           0,  "",             /* not used               [0F] [46] */
  400.     stub,           0,  "",             /* not used               [0F] [47] */
  401.     stub,           0,  "",             /* not used               [0F] [48] */
  402.     stub,           0,  "",             /* not used               [0F] [49] */
  403.     stub,           0,  "",             /* not used               [0F] [4A] */
  404.     stub,           0,  "",             /* not used               [0F] [4B] */
  405.     stub,           0,  "",             /* not used               [0F] [4C] */
  406.     stub,           0,  "",             /* not used               [0F] [4D] */
  407.     stub,           0,  "",             /* not used               [0F] [4E] */
  408.     stub,           0,  "",             /* not used               [0F] [4F] */
  409.     stub,           0,  "",             /* not used               [0F] [50] */
  410.     stub,           0,  "",             /* not used               [0F] [51] */
  411.     stub,           0,  "",             /* not used               [0F] [52] */
  412.     stub,           0,  "",             /* not used               [0F] [53] */
  413.     stub,           0,  "",             /* not used               [0F] [54] */
  414.     stub,           0,  "",             /* not used               [0F] [55] */
  415.     stub,           0,  "",             /* not used               [0F] [56] */
  416.     stub,           0,  "",             /* not used               [0F] [57] */
  417.     stub,           0,  "",             /* not used               [0F] [58] */
  418.     stub,           0,  "",             /* not used               [0F] [59] */
  419.     stub,           0,  "",             /* not used               [0F] [5A] */
  420.     stub,           0,  "",             /* not used               [0F] [5B] */
  421.     stub,           0,  "",             /* not used               [0F] [5C] */
  422.     stub,           0,  "",             /* not used               [0F] [5D] */
  423.     stub,           0,  "",             /* not used               [0F] [5E] */
  424.     stub,           0,  "",             /* not used               [0F] [5F] */
  425.     stub,           0,  "",             /* not used               [0F] [60] */
  426.     stub,           0,  "",             /* not used               [0F] [61] */
  427.     stub,           0,  "",             /* not used               [0F] [62] */
  428.     stub,           0,  "",             /* not used               [0F] [63] */
  429.     stub,           0,  "",             /* not used               [0F] [64] */
  430.     stub,           0,  "",             /* not used               [0F] [65] */
  431.     stub,           0,  "",             /* not used               [0F] [66] */
  432.     stub,           0,  "",             /* not used               [0F] [67] */
  433.     stub,           0,  "",             /* not used               [0F] [68] */
  434.     stub,           0,  "",             /* not used               [0F] [69] */
  435.     stub,           0,  "",             /* not used               [0F] [6A] */
  436.     stub,           0,  "",             /* not used               [0F] [6B] */
  437.     stub,           0,  "",             /* not used               [0F] [6C] */
  438.     stub,           0,  "",             /* not used               [0F] [6D] */
  439.     stub,           0,  "",             /* not used               [0F] [6E] */
  440.     stub,           0,  "",             /* not used               [0F] [6F] */
  441.     stub,           0,  "",             /* not used               [0F] [70] */
  442.     stub,           0,  "",             /* not used               [0F] [71] */
  443.     stub,           0,  "",             /* not used               [0F] [72] */
  444.     stub,           0,  "",             /* not used               [0F] [73] */
  445.     stub,           0,  "",             /* not used               [0F] [74] */
  446.     stub,           0,  "",             /* not used               [0F] [75] */
  447.     stub,           0,  "",             /* not used               [0F] [76] */
  448.     stub,           0,  "",             /* not used               [0F] [77] */
  449.     stub,           0,  "",             /* not used               [0F] [78] */
  450.     stub,           0,  "",             /* not used               [0F] [79] */
  451.     stub,           0,  "",             /* not used               [0F] [7A] */
  452.     stub,           0,  "",             /* not used               [0F] [7B] */
  453.     stub,           0,  "",             /* not used               [0F] [7C] */
  454.     stub,           0,  "",             /* not used               [0F] [7D] */
  455.     stub,           0,  "",             /* not used               [0F] [7E] */
  456.     stub,           0,  "",             /* not used               [0F] [7F] */
  457.     disp16,         0,  "jo",           /* JO       <Label>       [0F] [80] */
  458.     disp16,         0,  "jno",          /* JNO      <Label>       [0F] [81] */
  459.     disp16,         0,  "jb",           /* JB       <Label>       [0F] [82] */
  460.     disp16,         0,  "jnb",          /* JNB      <Label>       [0F] [83] */
  461.     disp16,         0,  "jz",           /* JO       <Label>       [0F] [84] */
  462.     disp16,         0,  "jnz",          /* JNO      <Label>       [0F] [85] */
  463.     disp16,         0,  "jbe",          /* JBE      <Label>       [0F] [86] */
  464.     disp16,         0,  "jnbe",         /* JNBE     <Label>       [0F] [87] */
  465.     disp16,         0,  "js",           /* JS       <Label>       [0F] [88] */
  466.     disp16,         0,  "jns",          /* JNS      <Label>       [0F] [89] */
  467.     disp16,         0,  "jp",           /* JP       <Label>       [0F] [8A] */
  468.     disp16,         0,  "jnp",          /* JNP      <Label>       [0F] [8B] */
  469.     disp16,         0,  "jl",           /* JL       <Label>       [0F] [8C] */
  470.     disp16,         0,  "jnl",          /* JNL      <Label>       [0F] [8D] */
  471.     disp16,         0,  "jle",          /* JLE      <Label>       [0F] [8E] */
  472.     disp16,         0,  "jnle",         /* JNLE     <Label>       [0F] [8F] */
  473.     mod_reg,       30,  "seto",         /* SETO     mem/reg       [0F] [90] */
  474.     mod_reg,       30,  "setno",        /* SETNO    mem/reg       [0F] [91] */
  475.     mod_reg,       30,  "setb",         /* SETB     mem/reg       [0F] [92] */
  476.     mod_reg,       30,  "setnb",        /* SETNB    mem/reg       [0F] [93] */
  477.     mod_reg,       30,  "setz",         /* SETZ     mem/reg       [0F] [94] */
  478.     mod_reg,       30,  "setnz",        /* SETNZ    mem/reg       [0F] [95] */
  479.     mod_reg,       30,  "setbe",        /* SETNE    mem/reg       [0F] [96] */
  480.     mod_reg,       30,  "setnbe",       /* SETNBE   mem/reg       [0F] [97] */
  481.     mod_reg,       30,  "sets",         /* SETS     mem/reg       [0F] [98] */
  482.     mod_reg,       30,  "setns",        /* SETNS    mem/reg       [0F] [99] */
  483.     mod_reg,       30,  "setp",         /* SETP     mem/reg       [0F] [9A] */
  484.     mod_reg,       30,  "setnp",        /* SETNP    mem/reg       [0F] [9B] */
  485.     mod_reg,       30,  "setl",         /* SETL     mem/reg       [0F] [9C] */
  486.     mod_reg,       30,  "setnl",        /* SETNL    mem/reg       [0F] [9D] */
  487.     mod_reg,       30,  "setle",        /* SETLE    mem/reg       [0F] [9E] */
  488.     mod_reg,       30,  "setnle",       /* SETNLE   mem/reg       [0F] [9F] */
  489.     one_byte,      FS,  "push",         /* PUSH FS                [0F] [A0] */
  490.     one_byte,      FS,  "pop",          /* POP FS                 [0F] [A1] */
  491.     stub,           0,  "",             /* not used               [0F] [A2] */
  492.     mod_reg,        1,  "bt",           /* BT       mem/reg,reg   [0F] [A3] */
  493.     mod_reg,       39,  "shld",         /* SHLD     mem,reg,immb  [0F] [A4] */
  494.     mod_reg,       40,  "shld",         /* SHLD     mem,reg,cl    [0F] [A5] */
  495.     mod_reg,        0,  "",             /* CMPXCHG                [0F] [A6] */
  496.     mod_reg,        1,  "",             /* CMPXCHG                [0F] [A7] */
  497.     one_byte,      GS,  "push",         /* PUSH GS                [0F] [A8] */
  498.     one_byte,      GS,  "pop",          /* POP GS                 [0F] [A9] */
  499.     stub,           0,  "",             /* not used               [0F] [AA] */
  500.     mod_reg,        1,  "bts",          /* BTS      mem/reg,reg   [0F] [AB] */
  501.     mod_reg,       39,  "shrd",         /* SHRD     mem,reg,immb  [0F] [AC] */
  502.     mod_reg,       40,  "shrd",         /* SHRD     mem,reg,cl    [0F] [AD] */
  503.     stub,           0,  "",             /* not used               [0F] [AE] */
  504.     mod_reg,        3,  "imul",         /* IMUL     reg,mem/reg   [0F] [AF] */
  505.     stub,           0,  "",             /* not used               [0F] [B0] */
  506.     stub,           0,  "",             /* not used               [0F] [B1] */
  507.     mod_reg,       17,  "lss",          /* LSS      reg,mem       [0F] [B2] */
  508.     mod_reg,        1,  "btr",          /* BTR      mem/reg,reg   [0F] [B3] */
  509.     mod_reg,       17,  "lfs",          /* LFS      reg,mem       [0F] [B4] */
  510.     mod_reg,       17,  "lgs",          /* LGS      reg,mem       [0F] [B5] */
  511.     mod_reg,       37,  "movzx",        /* MOVZX    reg,mem (b)   [0F] [B6] */
  512.     mod_reg,       38,  "movzx",        /* MOVZX    reg,mem (w)   [0F] [B7] */
  513.     stub,           0,  "",             /* not used               [0F] [B8] */
  514.     stub,           0,  "",             /* not used               [0F] [B9] */
  515.     mod_reg,       29,  "",             /* Spec. (byte) (Group 8) [0F] [BA] */
  516.     mod_reg,        1,  "btc",          /* BTC      mem/reg,reg   [0F] [BB] */
  517.     mod_reg,        3,  "bsf",          /* BSF      reg,mem/reg   [0F] [BC] */
  518.     mod_reg,        3,  "bsr",          /* BSR      reg,mem/reg   [0F] [BD] */
  519.     mod_reg,       37,  "movsx",        /* MOVSX    reg,mem (b)   [0F] [BE] */
  520.     mod_reg,       38,  "movsx",        /* MOVSX    reg,mem (w)   [0F] [BF] */
  521.     mod_reg,        0,  "",             /* XADD (486 only)        [0F] [C0] */
  522.     mod_reg,        1,  "",             /* XADD (486 only)        [0F] [C1] */
  523.     stub,           0,  "",             /* not used               [0F] [C2] */
  524.     stub,           0,  "",             /* not used               [0F] [C3] */
  525.     stub,           0,  "",             /* not used               [0F] [C4] */
  526.     stub,           0,  "",             /* not used               [0F] [C5] */
  527.     stub,           0,  "",             /* not used               [0F] [C6] */
  528.     stub,           0,  "",             /* not used               [0F] [C7] */
  529.     one_byte,      AX,  "",             /* BSWAP AX (486 only)    [0F] [C8] */
  530.     one_byte,      CX,  "",             /* BSWAP CX (486 only)    [0F] [C9] */
  531.     one_byte,      DX,  "",             /* BSWAP DX (486 only)    [0F] [CA] */
  532.     one_byte,      BX,  "",             /* BSWAP BX (486 only)    [0F] [CB] */
  533.     one_byte,      SP,  "",             /* BSWAP SP (486 only)    [0F] [CC] */
  534.     one_byte,      BP,  "",             /* BSWAP BP (486 only)    [0F] [CD] */
  535.     one_byte,      SI,  "",             /* BSWAP SI (486 only)    [0F] [CE] */
  536.     one_byte,      DI,  "",             /* BSWAP DI (486 only)    [0F] [CF] */
  537.     stub,           0,  "",             /* not used               [0F] [D0] */
  538.     stub,           0,  "",             /* not used               [0F] [D1] */
  539.     stub,           0,  "",             /* not used               [0F] [D2] */
  540.     stub,           0,  "",             /* not used               [0F] [D3] */
  541.     stub,           0,  "",             /* not used               [0F] [D4] */
  542.     stub,           0,  "",             /* not used               [0F] [D5] */
  543.     stub,           0,  "",             /* not used               [0F] [D6] */
  544.     stub,           0,  "",             /* not used               [0F] [D7] */
  545.     stub,           0,  "",             /* not used               [0F] [D8] */
  546.     stub,           0,  "",             /* not used               [0F] [D9] */
  547.     stub,           0,  "",             /* not used               [0F] [DA] */
  548.     stub,           0,  "",             /* not used               [0F] [DB] */
  549.     stub,           0,  "",             /* not used               [0F] [DC] */
  550.     stub,           0,  "",             /* not used               [0F] [DD] */
  551.     stub,           0,  "",             /* not used               [0F] [DE] */
  552.     stub,           0,  "",             /* not used               [0F] [DF] */
  553.     stub,           0,  "",             /* not used               [0F] [E0] */
  554.     stub,           0,  "",             /* not used               [0F] [E1] */
  555.     stub,           0,  "",             /* not used               [0F] [E2] */
  556.     stub,           0,  "",             /* not used               [0F] [E3] */
  557.     stub,           0,  "",             /* not used               [0F] [E4] */
  558.     stub,           0,  "",             /* not used               [0F] [E5] */
  559.     stub,           0,  "",             /* not used               [0F] [E6] */
  560.     stub,           0,  "",             /* not used               [0F] [E7] */
  561.     stub,           0,  "",             /* not used               [0F] [E8] */
  562.     stub,           0,  "",             /* not used               [0F] [E9] */
  563.     stub,           0,  "",             /* not used               [0F] [EA] */
  564.     stub,           0,  "",             /* not used               [0F] [EB] */
  565.     stub,           0,  "",             /* not used               [0F] [EC] */
  566.     stub,           0,  "",             /* not used               [0F] [ED] */
  567.     stub,           0,  "",             /* not used               [0F] [EE] */
  568.     stub,           0,  "",             /* not used               [0F] [EF] */
  569.     stub,           0,  "",             /* not used               [0F] [F0] */
  570.     stub,           0,  "",             /* not used               [0F] [F1] */
  571.     stub,           0,  "",             /* not used               [0F] [F2] */
  572.     stub,           0,  "",             /* not used               [0F] [F3] */
  573.     stub,           0,  "",             /* not used               [0F] [F4] */
  574.     stub,           0,  "",             /* not used               [0F] [F5] */
  575.     stub,           0,  "",             /* not used               [0F] [F6] */
  576.     stub,           0,  "",             /* not used               [0F] [F7] */
  577.     stub,           0,  "",             /* not used               [0F] [F8] */
  578.     stub,           0,  "",             /* not used               [0F] [F9] */
  579.     stub,           0,  "",             /* not used               [0F] [FA] */
  580.     stub,           0,  "",             /* not used               [0F] [FB] */
  581.     stub,           0,  "",             /* not used               [0F] [FC] */
  582.     stub,           0,  "",             /* not used               [0F] [FD] */
  583.     stub,           0,  "",             /* not used               [0F] [FE] */
  584.     stub,           0,  "",             /* not used               [0F] [FF] */
  585. };
  586.