home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sd386v50.zip / sd386src.zip / A86MNEM.C < prev    next >
Text File  |  1989-08-07  |  36KB  |  846 lines

  1.  
  2. /***-START-OF-SPECIFICATIONS-****************************************
  3. ***                                                               ***
  4. ***        CP/386 Experimental Operating System                   ***
  5. ***                                                               ***
  6. ***        Task Level Debugger                                    ***
  7. ***                                                               ***
  8. ***        COPYRIGHT   I B M   CORPORATION  1983, 1984, 1985      ***
  9. ***                                   1986, 1987, 1988, 1989      ***
  10. ***                                                               ***
  11. ***        LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M        ***
  12. ***                                                               ***
  13. ***        REFER TO COPYRIGHT INSTRUCTIONS: FORM G120-2083        ***
  14. ***                                                               ***
  15. *********************************************************************
  16. *                                                                   *
  17. *                                                                   *
  18. *   MODULE-NAME = MASMMNEM                                          *
  19. *                                                                   *
  20. *   DESCRIPTIVE-NAME = ASM/86 mnemonics for the dis-assembler.      *
  21. *                      this is included into TLDUNPIK.C.            *
  22. *                                                                   *
  23. *                      Note that the mnemonic tables have the       *
  24. *                      format of a data table for the routine       *
  25. *                      "lookup", so it can be used for the          *
  26. *                      assembler.                                   *
  27. *                                                                   *
  28. *                                                                   *
  29. *   STATUS = Version 3 Release 2                                    *
  30. *                                                                   *
  31. *                                                                   *
  32. *   CHANGE-ACTIVITY = translated from PLS/286 March 1989 by         *
  33. *                     D. C. Toll, IBM Research, Yorktown Heights    *
  34. *                                                                   *
  35. *   05/02/89,       = extra orders for the 486 added.               *
  36. *   D. C. Toll                                                      *
  37. *                                                                   *
  38. *                                                                   *
  39. ****-END-OF-SPECIFICATIONS-*****************************************/
  40.  
  41.  
  42. #define _ASM86_   1                 /*  note that this file is present  */
  43.  
  44.  
  45. /*************************************************************************
  46. *                                                                        *
  47. *   The following table holds the ASM/86 mnemonics:  these are accessed  *
  48. *   by mnemonic number, not by instruction value.                        *
  49. *                                                                        *
  50. *   Note that these vectors all have names starting with "a86".          *
  51. *                                                                        *
  52. *************************************************************************/
  53.  
  54.  
  55.  
  56. CHAR a86mnem[] = {
  57.        1,1,'A',
  58.        3,3,'A','A','A',                 /*   2  */
  59.        3,3,'A','A','D',
  60.        3,3,'A','A','M',                 /*   4  */
  61.        3,3,'A','A','S',
  62.        2,2,'A','C',                     /*   6  */
  63.        3,3,'A','C','I',
  64.        4,4,'A','C','I','B',             /*   8  */
  65.        4,4,'A','C','I','D',
  66.        4,4,'A','C','I','W',             /*  10  */
  67.        2,2,'A','I',
  68.        3,3,'A','I','B',                 /*  12  */
  69.        3,3,'A','I','D',
  70.        3,3,'A','I','W',                 /*  14  */
  71.        4,4,'A','R','P','L',
  72.        5,5,'B','C','K','W','D',         /*  16  */
  73.        5,5,'B','O','U','N','D',
  74.        3,3,'B','S','F',                 /*  18  */
  75.        3,3,'B','S','R',
  76.        2,2,'B','T',                     /*  20  */
  77.        3,3,'B','T','C',
  78.        3,3,'B','T','R',                 /*  22  */
  79.        3,3,'B','T','S',
  80.        1,1,'C',                         /*  24  */
  81.        4,4,'C','A','L','L',
  82.        5,5,'C','A','L','L','F',         /*  26  */
  83.        6,6,'C','A','L','L','F','I',
  84.        7,7,'C','A','L','L','F','I','D', /*  28  */
  85.        7,7,'C','A','L','L','F','I','W',
  86.        5,5,'C','A','L','L','I',         /*  30  */
  87.        2,2,'C','B',
  88.        2,2,'C','D',                     /*  32  */
  89.        2,2,'C','I',
  90.        3,3,'C','I','B',                 /*  34  */
  91.        3,3,'C','I','D',
  92.        3,3,'C','I','W',                 /*  36  */
  93.        5,5,'C','L','R','C','F',
  94.        3,3,'C','P','L',                 /*  38  */
  95.        4,4,'C','P','L','B',
  96.        4,4,'C','P','L','C',             /*  40  */
  97.        4,4,'C','P','L','D',
  98.        4,4,'C','P','L','W',             /*  42  */
  99.        4,4,'C','L','T','S',
  100.        4,4,'C','V','B','W',             /*  44  */
  101.        4,4,'C','V','D','Q',
  102.        4,4,'C','V','W','D',             /*  46  */
  103.        2,2,'C','W',
  104.        4,4,'C','W','D','E',             /*  48  */
  105.        3,3,'D','A','A',
  106.        3,3,'D','A','S',                 /*  50  */
  107.        3,3,'D','E','C',
  108.        4,4,'D','E','C','B',             /*  52  */
  109.        4,4,'D','E','C','D',
  110.        4,4,'D','E','C','W',             /*  54  */
  111.        2,2,'D','V',
  112.        3,3,'D','V','B',                 /*  56  */
  113.        3,3,'D','V','D',
  114.        3,3,'D','V','S',                 /*  58  */
  115.        4,4,'D','V','S','B',
  116.        4,4,'D','V','S','D',             /*  60  */
  117.        4,4,'D','V','S','W',
  118.        3,3,'D','V','W',                 /*  62  */
  119.        3,3,'E','N','B',
  120.        5,5,'E','N','T','E','R',         /*  64  */
  121.        6,6,'E','S','C','A','P','E',
  122.        5,5,'F','O','R','W','D',         /*  66  */
  123.        4,4,'H','A','L','T',
  124.        3,3,'I','N','B',                 /*  68  */
  125.        3,3,'I','N','C',
  126.        4,4,'I','N','C','B',             /*  70  */
  127.        4,4,'I','N','C','D',
  128.        4,4,'I','N','C','W',             /*  72  */
  129.        3,3,'I','N','D',
  130.        3,3,'I','N','H',                 /*  74  */
  131.        4,4,'I','N','S','B',
  132.        4,4,'I','N','S','D',             /*  76  */
  133.        4,4,'I','N','S','W',
  134.        3,3,'I','N','T',                 /*  78  */
  135.        4,4,'I','N','T','3',
  136.        4,4,'I','N','T','O',             /*  80  */
  137.        6,6,'I','N','T','R','E','T',
  138.        7,7,'I','N','T','R','E','T','D', /*  82  */
  139.        3,3,'I','N','W',
  140.        1,1,'J',                         /*  84  */
  141.        4,4,'J','C','X','Z',
  142.        5,5,'J','E','C','X','Z',         /*  86  */
  143.        2,2,'J','F',
  144.        3,3,'J','F','I',                 /*  88  */
  145.        4,4,'J','F','I','D',
  146.        4,4,'J','F','I','W',             /*  90  */
  147.        2,2,'J','H',
  148.        2,2,'J','I',                     /*  92  */
  149.        2,2,'J','L',
  150.        2,2,'J','M',                     /*  94  */
  151.        3,3,'J','N','H',
  152.        3,3,'J','N','L',                 /*  96  */
  153.        3,3,'J','N','M',
  154.        3,3,'J','N','O',                 /*  98  */
  155.        3,3,'J','N','P',
  156.        3,3,'J','N','S',                 /* 100  */
  157.        3,3,'J','N','Z',
  158.        2,2,'J','O',                     /* 102  */
  159.        2,2,'J','P',
  160.        3,3,'J','P','E',                 /* 104  */
  161.        3,3,'J','P','O',
  162.        2,2,'J','S',                     /* 106  */
  163.        2,2,'J','Z',
  164.        1,1,'L',                         /* 108  */
  165.        2,2,'L','A',
  166.        4,4,'L','A','H','F',             /* 110  */
  167.        3,3,'L','A','R',
  168.        2,2,'L','B',                     /* 112  */
  169.        2,2,'L','D',
  170.        3,3,'L','D','S',                 /* 114  */
  171.        5,5,'L','E','A','V','E',
  172.        3,3,'L','E','S',                 /* 116  */
  173.        3,3,'L','F','S',
  174.        4,4,'L','G','D','T',             /* 118  */
  175.        3,3,'L','G','S',
  176.        2,2,'L','I',                     /* 120  */
  177.        4,4,'L','I','D','T',
  178.        4,4,'L','L','D','T',             /* 122  */
  179.        4,4,'L','M','S','W',
  180.        7,7,'L','O','C','K','B','U','S', /* 124  */
  181.        4,4,'L','O','O','P',
  182.        6,6,'L','O','O','P','N','Z',     /* 126  */
  183.        5,5,'L','O','O','P','Z',
  184.        3,3,'L','S','L',                 /* 128  */
  185.        3,3,'L','S','S',
  186.        3,3,'L','T','R',                 /* 130  */
  187.        2,2,'L','W',
  188.        1,1,'M',                         /* 132  */
  189.        2,2,'M','B',
  190.        2,2,'M','D',                     /* 134  */
  191.        5,5,'M','O','V','S','X',
  192.        6,6,'M','O','V','S','X','B',     /* 136  */
  193.        6,6,'M','O','V','S','X','W',
  194.        5,5,'M','O','V','Z','X',         /* 138  */
  195.        6,6,'M','O','V','Z','X','B',
  196.        6,6,'M','O','V','Z','X','W',     /* 140  */
  197.        2,2,'M','S',
  198.        3,3,'M','S','B',                 /* 142  */
  199.        3,3,'M','S','D',
  200.        3,3,'M','S','I',                 /* 144  */
  201.        4,4,'M','S','I','W',
  202.        3,3,'M','S','R',                 /* 146  */
  203.        3,3,'M','S','W',
  204.        3,3,'M','V','B',                 /* 148  */
  205.        3,3,'M','V','D',
  206.        4,4,'M','V','I','B',             /* 150  */
  207.        4,4,'M','V','I','D',
  208.        4,4,'M','V','I','W',             /* 152  */
  209.        3,3,'M','V','W',
  210.        2,2,'M','W',                     /* 154  */
  211.        1,1,'N',
  212.        2,2,'N','I',                     /* 156  */
  213.        3,3,'N','I','B',
  214.        3,3,'N','I','D',                 /* 158  */
  215.        3,3,'N','I','W',
  216.        3,3,'N','O','P',                 /* 160  */
  217.        3,3,'N','O','T',
  218.        4,4,'N','O','T','B',             /* 162  */
  219.        4,4,'N','O','T','D',
  220.        4,4,'N','O','T','W',             /* 164  */
  221.        1,1,'O',
  222.        2,2,'O','I',                     /* 166  */
  223.        3,3,'O','I','B',
  224.        3,3,'O','I','D',                 /* 168  */
  225.        3,3,'O','I','W',
  226.        4,4,'O','U','T','B',             /* 170  */
  227.        4,4,'O','U','T','D',
  228.        5,5,'O','U','T','S','B',         /* 172  */
  229.        5,5,'O','U','T','S','D',
  230.        5,5,'O','U','T','S','W',         /* 174  */
  231.        4,4,'O','U','T','W',
  232.        3,3,'P','O','P',                 /* 176  */
  233.        4,4,'P','O','P','A',
  234.        5,5,'P','O','P','A','D',         /* 178  */
  235.        4,4,'P','O','P','D',
  236.        4,4,'P','O','P','F',             /* 180  */
  237.        5,5,'P','O','P','F','D',
  238.        4,4,'P','O','P','W',             /* 182  */
  239.        4,4,'P','U','S','H',
  240.        5,5,'P','U','S','H','A',         /* 184  */
  241.        6,6,'P','U','S','H','A','D',
  242.        5,5,'P','U','S','H','D',         /* 186  */
  243.        5,5,'P','U','S','H','F',
  244.        6,6,'P','U','S','H','F','D',     /* 188  */
  245.        5,5,'P','U','S','H','I',
  246.        6,6,'P','U','S','H','I','D',     /* 190  */
  247.        6,6,'P','U','S','H','I','W',
  248.        5,5,'P','U','S','H','W',         /* 192  */
  249.        3,3,'R','E','P',
  250.        5,5,'R','E','P','N','Z',         /* 194  */
  251.        4,4,'R','E','P','Z',
  252.        3,3,'R','E','T',                 /* 196  */
  253.        4,4,'R','E','T','F',
  254.        5,5,'R','E','T','F','D',         /* 198  */
  255.        5,5,'R','E','T','F','W',
  256.        4,4,'R','O','C','L',             /* 200  */
  257.        5,5,'R','O','C','L','B',
  258.        5,5,'R','O','C','L','D',         /* 202  */
  259.        5,5,'R','O','C','L','W',
  260.        4,4,'R','O','C','R',             /* 204  */
  261.        5,5,'R','O','C','R','B',
  262.        5,5,'R','O','C','R','D',         /* 206  */
  263.        5,5,'R','O','C','R','W',
  264.        3,3,'R','O','L',                 /* 208  */
  265.        4,4,'R','O','L','B',
  266.        4,4,'R','O','L','D',             /* 210  */
  267.        4,4,'R','O','L','W',
  268.        3,3,'R','O','R',                 /* 212  */
  269.        4,4,'R','O','R','B',
  270.        4,4,'R','O','R','D',             /* 214  */
  271.        4,4,'R','O','R','W',
  272.        1,1,'S',                         /* 216  */
  273.        2,2,'S','B',
  274.        3,3,'S','B','I',                 /* 218  */
  275.        4,4,'S','B','I','B',
  276.        4,4,'S','B','I','D',             /* 220  */
  277.        4,4,'S','B','I','W',
  278.        3,3,'S','C','B',                 /* 222  */
  279.        3,3,'S','C','D',
  280.        3,3,'S','C','W',                 /* 224  */
  281.        5,5,'S','E','G','O','V',
  282.        5,5,'S','E','T','C','F',         /* 226  */
  283.        4,4,'S','E','T','H',
  284.        4,4,'S','E','T','L',             /* 228  */
  285.        4,4,'S','E','T','M',
  286.        5,5,'S','E','T','N','C',         /* 230  */
  287.        5,5,'S','E','T','N','H',
  288.        5,5,'S','E','T','N','M',         /* 232  */
  289.        5,5,'S','E','T','N','O',
  290.        5,5,'S','E','T','N','P',         /* 234  */
  291.        5,5,'S','E','T','N','S',
  292.        5,5,'S','E','T','N','Z',         /* 236  */
  293.        4,4,'S','E','T','O',
  294.        4,4,'S','E','T','P',             /* 238  */
  295.        5,5,'S','E','T','P','E',
  296.        5,5,'S','E','T','P','O',         /* 240  */
  297.        4,4,'S','E','T','S',
  298.        4,4,'S','E','T','Z',             /* 242  */
  299.        4,4,'S','G','D','T',
  300.        4,4,'S','H','L','D',             /* 244  */
  301.        4,4,'S','H','R','D',
  302.        2,2,'S','I',                     /* 246  */
  303.        3,3,'S','I','B',
  304.        3,3,'S','I','D',                 /* 248  */
  305.        4,4,'S','I','D','T',
  306.        3,3,'S','I','W',                 /* 250  */
  307.        3,3,'S','L','A',
  308.        4,4,'S','L','A','B',             /* 252  */
  309.        4,4,'S','L','A','D',
  310.        4,4,'S','L','A','W',             /* 254  */
  311.        4,4,'S','L','D','T',
  312.        3,3,'S','L','L',                 /* 256  */
  313.        4,4,'S','L','L','B',
  314.        4,4,'S','L','L','D',             /* 258  */
  315.        4,4,'S','L','L','W',
  316.        4,4,'S','M','S','W',             /* 260  */
  317.        3,3,'S','R','A',
  318.        4,4,'S','R','A','B',             /* 262  */
  319.        4,4,'S','R','A','D',
  320.        4,4,'S','R','A','W',             /* 264  */
  321.        3,3,'S','R','L',
  322.        4,4,'S','R','L','B',             /* 266  */
  323.        4,4,'S','R','L','D',
  324.        4,4,'S','R','L','W',             /* 268  */
  325.        2,2,'S','T',
  326.        5,5,'S','T','A','H','F',         /* 270  */
  327.        3,3,'S','T','B',
  328.        3,3,'S','T','D',                 /* 272  */
  329.        3,3,'S','T','R',
  330.        3,3,'S','T','W',                 /* 274  */
  331.        4,4,'S','Y','N','C',
  332.        1,1,'T',                         /* 276  */
  333.        2,2,'T','I',
  334.        3,3,'T','I','B',                 /* 278  */
  335.        3,3,'T','I','D',
  336.        3,3,'T','I','W',                 /* 280  */
  337.        4,4,'V','E','R','R',
  338.        4,4,'V','E','R','W',             /* 282  */
  339.        1,1,'X',
  340.        4,4,'X','C','H','G',             /* 284  */
  341.        2,2,'X','I',
  342.        3,3,'X','I','B',                 /* 286  */
  343.        3,3,'X','I','D',
  344.        3,3,'X','I','W',                 /* 288  */
  345.        4,4,'X','L','A','T',
  346.        4,4,'?','?','?','?',             /* 290  */
  347.        5,5,'B','S','W','A','P',
  348.        7,7,'C','M','P','X','C','H','G', /* 292  */
  349.        4,4,'I','N','V','D',
  350.        6,6,'I','N','V','L','P','G',     /* 294  */
  351.        6,6,'W','B','I','N','V','D',
  352.        4,4,'X','A','D','D',             /* 296  */
  353.        0                     };         /*  the terminator  */
  354.  
  355.  
  356.  
  357.    /*  the following table holds the mnemonics for the 80387
  358.        numerics processor.                                    */
  359.  
  360. CHAR a86m387[] = {
  361.      4,4,'$','A','B','S',
  362.      4,4,'$','A','D','D',               /*   2  */
  363.      5,5,'$','A','D','D','L',
  364.      5,5,'$','A','D','D','P',           /*   4  */
  365.      5,5,'$','A','D','D','S',
  366.      4,4,'$','B','L','D',               /*   6  */
  367.      5,5,'$','B','S','T','P',
  368.      4,4,'$','C','H','S',               /*   8  */
  369.      5,5,'$','C','L','E','X',
  370.      4,4,'$','C','O','M',               /*  10  */
  371.      5,5,'$','C','O','M','L',
  372.      5,5,'$','C','O','M','P',           /*  12  */
  373.      6,6,'$','C','O','M','P','L',
  374.      6,6,'$','C','O','M','P','P',       /*  14  */
  375.      6,6,'$','C','O','M','P','S',
  376.      5,5,'$','C','O','M','S',           /*  16  */
  377.      7,7,'$','D','E','C','S','T','P',
  378.      5,5,'$','D','I','S','I',           /*  18  */
  379.      4,4,'$','D','I','V',
  380.      5,5,'$','D','I','V','L',           /*  20  */
  381.      5,5,'$','D','I','V','P',
  382.      5,5,'$','D','I','V','R',           /*  22  */
  383.      6,6,'$','D','I','V','R','L',
  384.      6,6,'$','D','I','V','R','P',       /*  24  */
  385.      6,6,'$','D','I','V','R','S',
  386.      5,5,'$','D','I','V','S',           /*  26  */
  387.      4,4,'$','E','N','I',
  388.      5,5,'$','F','R','E','E',           /*  28  */
  389.      6,6,'$','I','A','D','D','S',
  390.      6,6,'$','I','A','D','D','W',       /*  30  */
  391.      6,6,'$','I','C','O','M','S',
  392.      6,6,'$','I','C','O','M','W',       /*  32  */
  393.      7,7,'$','I','C','O','M','P','S',
  394.      7,7,'$','I','C','O','M','P','W',   /*  34  */
  395.      6,6,'$','I','D','I','V','S',
  396.      6,6,'$','I','D','I','V','W',       /*  36  */
  397.      7,7,'$','I','D','I','V','R','S',
  398.      7,7,'$','I','D','I','V','R','W',   /*  38  */
  399.      5,5,'$','I','L','D','L',
  400.      5,5,'$','I','L','D','S',           /*  40  */
  401.      5,5,'$','I','L','D','W',
  402.      6,6,'$','I','M','U','L','S',       /*  42  */
  403.      6,6,'$','I','M','U','L','W',
  404.      7,7,'$','I','N','C','S','T','P',   /*  44  */
  405.      5,5,'$','I','N','I','T',
  406.      6,6,'$','I','S','T','P','L',       /*  46  */
  407.      6,6,'$','I','S','T','P','S',
  408.      6,6,'$','I','S','T','P','W',       /*  48  */
  409.      5,5,'$','I','S','T','S',
  410.      5,5,'$','I','S','T','W',           /*  50  */
  411.      7,7,'$','I','S','U','B','R','S',
  412.      7,7,'$','I','S','U','B','R','W',   /*  52  */
  413.      6,6,'$','I','S','U','B','S',
  414.      6,6,'$','I','S','U','B','W',       /*  54  */
  415.      3,3,'$','L','D',
  416.      5,5,'$','L','D','C','W',           /*  56  */
  417.      6,6,'$','L','D','E','N','V',
  418.      4,4,'$','L','D','L',               /*  58  */
  419.      6,6,'$','L','D','L','G','2',
  420.      6,6,'$','L','D','L','N','2',       /*  60  */
  421.      6,6,'$','L','D','L','2','E',
  422.      6,6,'$','L','D','L','2','T',       /*  62  */
  423.      5,5,'$','L','D','P','I',
  424.      4,4,'$','L','D','S',               /*  64  */
  425.      4,4,'$','L','D','T',
  426.      4,4,'$','L','D','Z',               /*  66  */
  427.      4,4,'$','L','D','1',
  428.      4,4,'$','M','U','L',               /*  68  */
  429.      5,5,'$','M','U','L','L',
  430.      5,5,'$','M','U','L','P',           /*  70  */
  431.      5,5,'$','M','U','L','S',
  432.      4,4,'$','N','O','P',               /*  72  */
  433.      6,6,'$','P','A','T','A','N',
  434.      5,5,'$','P','R','E','M',           /*  74  */
  435.      5,5,'$','P','T','A','N',
  436.      7,7,'$','R','N','D','I','N','T',   /*  76  */
  437.      6,6,'$','R','S','T','O','R',
  438.      5,5,'$','S','A','V','E',           /*  78  */
  439.      6,6,'$','S','C','A','L','E',
  440.      6,6,'$','S','E','T','P','M',       /*  80  */
  441.      5,5,'$','S','Q','R','T',
  442.      3,3,'$','S','T',                   /*  82  */
  443.      5,5,'$','S','T','C','W',
  444.      6,6,'$','S','T','E','N','V',       /*  84  */
  445.      4,4,'$','S','T','L',
  446.      4,4,'$','S','T','P',               /*  86  */
  447.      5,5,'$','S','T','P','L',
  448.      5,5,'$','S','T','P','S',           /*  88  */
  449.      5,5,'$','S','T','P','T',
  450.      4,4,'$','S','T','S',               /*  90  */
  451.      5,5,'$','S','T','S','W',
  452.      4,4,'$','S','U','B',               /*  92  */
  453.      5,5,'$','S','U','B','L',
  454.      5,5,'$','S','U','B','P',           /*  94  */
  455.      5,5,'$','S','U','B','R',
  456.      6,6,'$','S','U','B','R','L',       /*  96  */
  457.      6,6,'$','S','U','B','R','P',
  458.      6,6,'$','S','U','B','R','S',       /*  98  */
  459.      5,5,'$','S','U','B','S',
  460.      4,4,'$','T','S','T',               /* 100  */
  461.      4,4,'$','X','A','M',
  462.      4,4,'$','X','C','H',               /* 102  */
  463.      7,7,'$','X','T','R','A','C','T',
  464.      5,5,'$','Y','L','2','X',           /* 104  */
  465.      7,7,'$','Y','L','2','X','P','1',
  466.      5,5,'$','2','X','M','1',           /* 106  */
  467.      4,4,'?','?','?','?',
  468.      6,6,'$','F','R','E','E','P',       /* 108  */
  469.      4,4,'$','C','O','S',
  470.      6,6,'$','P','R','E','M','1',       /* 110  */
  471.      4,4,'$','S','I','N',
  472.      7,7,'$','S','I','N','C','O','S',   /* 112  */
  473.      5,5,'$','U','C','O','M',
  474.      6,6,'$','U','C','O','M','P',       /* 114  */
  475.      7,7,'$','U','C','O','M','P','P',
  476.      0                     };           /*  the terminator  */
  477.  
  478.  
  479.  
  480.    /*  mnemonic numbers for each instruction - a value of "odd" in
  481.        this table implies a special case of some sort, and the
  482.        mnemonic is not to be printed automatically without looking
  483.        further
  484.                                                                      */
  485. USHORT a86mnem_16[256] = {
  486.          1, 1, 1, 1, 11, 11, 183, 176,            /*   0  */
  487.          165, 165, 165, 165, 166, 166, 183, odd,  /*   8  */
  488.          6, 6, 6, 6, 7, 7, 183, 176,              /*  10  */
  489.          217, 217, 217, 217, 218, 218, 183, 176,  /*  18  */
  490.          155, 155, 155, 155, 156, 156, odd, 49,   /*  20  */
  491.          216, 216, 216, 216, 246, 246, odd, 50,   /*  28  */
  492.          283, 283, 283, 283, 285, 285, odd, 2,    /*  30  */
  493.          24, 24, 24, 24, 33, 33, odd, 5,          /*  38  */
  494.          69, 69, 69, 69, 69, 69, 69, 69,          /*  40  */
  495.          51, 51, 51, 51, 51, 51, 51, 51,          /*  48  */
  496.          183, 183, 183, 183, 183, 183, 183, 183,  /*  50  */
  497.          176, 176, 176, 176, 176, 176, 176, 176,  /*  58  */
  498.          184, 177, 17, 15, odd, odd, odd, odd,    /*  60  */
  499.          191, 144, 191, 144, 75, 77, 172, 174,    /*  68  */
  500.          102, 98, 93, 96, 107, 101, 95, 91,       /*  70  */
  501.          106, 100, 104, 105, 94, 97, 99, 103,     /*  78  */
  502.          odd, odd, odd, odd, 276, 276, 284, 284,  /*  80  */
  503.          269, 269, 108, 108, odd, 109, odd, odd,  /*  88  */
  504.          160, 284, 284, 284, 284, 284, 284, 284,  /*  90  */
  505.          44, 46, 26, 275, 187, 180, 270, 110,     /*  98  */
  506.          108, 108, 269, 269, 148, 153, 31, 47,    /*  A0  */
  507.          277, 277, 271, 274, 112, 131, 222, 224,  /*  A8  */
  508.          120, 120, 120, 120, 120, 120, 120, 120,  /*  B0  */
  509.          120, 120, 120, 120, 120, 120, 120, 120,  /*  B8  */
  510.          odd, odd, 196, 196, 116, 114, odd, odd,  /*  C0  */
  511.          64, 115, 199, 199, 79, 78, 80, 81,       /*  C8  */
  512.          odd, odd, odd, odd, odd, odd, odd, 289,  /*  D0  */
  513.          odd, odd, odd, odd, odd, odd, odd, odd,  /*  D8  */
  514.          126, 127, 125, 85, 68, 83, 170, 175,     /*  E0  */
  515.          25, 84, 87, 84, 68, 83, 170, 175,        /*  E8  */
  516.          124, odd, odd, odd, 67, 40, odd, odd,    /*  F0  */
  517.          37, 226, 74, 63, 66, 16, odd, odd     }; /*  F8  */
  518.  
  519. USHORT a86mnem_32[256] = {
  520.          1, 1, 1, 1, 11, 11, 183, 176,            /*   0  */
  521.          165, 165, 165, 165, 166, 166, 183, odd,  /*   8  */
  522.          6, 6, 6, 6, 7, 7, 183, 176,              /*  10  */
  523.          217, 217, 217, 217, 218, 218, 183, 176,  /*  18  */
  524.          155, 155, 155, 155, 156, 156, odd, 49,   /*  20  */
  525.          216, 216, 216, 216, 246, 246, odd, 50,   /*  28  */
  526.          283, 283, 283, 283, 285, 285, odd, 2,    /*  30  */
  527.          24, 24, 24, 24, 33, 33, odd, 5,          /*  38  */
  528.          69, 69, 69, 69, 69, 69, 69, 69,          /*  40  */
  529.          51, 51, 51, 51, 51, 51, 51, 51,          /*  48  */
  530.          183, 183, 183, 183, 183, 183, 183, 183,  /*  50  */
  531.          176, 176, 176, 176, 176, 176, 176, 176,  /*  58  */
  532.          185, 178, 17, 15, odd, odd, odd, odd,    /*  60  */
  533.          190, 144, 190, 144, 75, 76, 172, 173,    /*  68  */
  534.          102, 98, 93, 96, 107, 101, 95, 91,       /*  70  */
  535.          106, 100, 104, 105, 94, 97, 99, 103,     /*  78  */
  536.          odd, odd, odd, odd, 276, 276, 284, 284,  /*  80  */
  537.          269, 269, 108, 108, odd, 109, odd, odd,  /*  88  */
  538.          160, 284, 284, 284, 284, 284, 284, 284,  /*  90  */
  539.          48, 45, 26, 275, 188, 181, 270, 110,     /*  98  */
  540.          108, 108, 269, 269, 148, 149, 31, 32,    /*  A0  */
  541.          277, 277, 271, 272, 112, 113, 222, 223,  /*  A8  */
  542.          120, 120, 120, 120, 120, 120, 120, 120,  /*  B0  */
  543.          120, 120, 120, 120, 120, 120, 120, 120,  /*  B8  */
  544.          odd, odd, 196, 196, 116, 114, odd, odd,  /*  C0  */
  545.          64, 115, 198, 198, 79, 78, 80, 82,       /*  C8  */
  546.          odd, odd, odd, odd, odd, odd, odd, 289,  /*  D0  */
  547.          odd, odd, odd, odd, odd, odd, odd, odd,  /*  D8  */
  548.          126, 127, 125, 86, 68, 73, 170, 171,     /*  E0  */
  549.          25, 84, 87, 84, 68, 73, 170, 171,        /*  E8  */
  550.          124, odd, odd, odd, 67, 40, odd, odd,    /*  F0  */
  551.          37, 226, 74, 63, 66, 16, odd, odd     }; /*  F8  */
  552.  
  553.  
  554.  
  555.    /*  mnemonic numbers for 80 and 81 instructions, for each value
  556.        of the "reg" field of the following byte.                     */
  557.  
  558. USHORT a86mnem8081_16[24] = {
  559.              12, 167,  8, 219, 157, 247, 286, 34,
  560.              14, 169, 10, 221, 159, 250, 288, 36,
  561.              11, 166,  7, 218, 156, 246, 285, 33  };
  562.  
  563. USHORT a86mnem8081_32[24] = {
  564.              12, 167,  8, 219, 157, 247, 286, 34,
  565.              13, 168,  9, 220, 158, 248, 287, 35,
  566.              11, 166,  7, 218, 156, 246, 285, 33  };
  567.  
  568.  
  569.    /*  mnemonic numbers for D4, D5 orders  */
  570.  
  571. USHORT a86mnemAA[2] = {4, 3};
  572.  
  573.  
  574.  
  575.    /*  mnemonic numbers for C6, C7 instructions  */
  576.  
  577. USHORT a86mnemC6C7_16[3] = {150, 152, 120};
  578.  
  579. USHORT a86mnemC6C7_32[3] = {150, 151, 120};
  580.  
  581.  
  582.  
  583.    /*  mnemonic numbers for F6, F7 orders, for reg = 2 to 7, and
  584.        for FE, FF orders, for reg = 0 and reg = 1.                */
  585.  
  586. USHORT a86mnemF6F7_16[24] = {
  587.               70, 52, 162, 39, 133, 142, 56, 59,
  588.               72, 54, 164, 42, 154, 147, 62, 61,
  589.               69, 51, 161, 38, 132, 141, 55, 58  };
  590.  
  591. USHORT a86mnemF6F7_32[24] = {
  592.               70, 52, 162, 39, 133, 142, 56, 59,
  593.               71, 53, 163, 41, 134, 143, 57, 60,
  594.               69, 51, 161, 38, 132, 141, 55, 58  };
  595.  
  596.  
  597.  
  598.    /*  mnemonic numbers for FF orders, reg = 2 to reg = 6  */
  599.  
  600. USHORT a86mnemFF_16[5] = { 30, 27, 92, 88, 192 };
  601.  
  602. USHORT a86mnemFF_32[5] = { 30, 27, 92, 88, 186 };
  603.  
  604.  
  605.  
  606.    /*  mnemonic numbers for shift instructions    */
  607.  
  608. USHORT a86shiftmnem_16[24] = {
  609.      208, 209, 211,    /*  ROL  */
  610.      212, 213, 215,    /*  ROR  */
  611.      200, 201, 203,    /*  ROCL  */
  612.      204, 205, 207,    /*  ROCR  */
  613.      256, 257, 259,    /*  SLL  */
  614.      265, 266, 268,    /*  SRL  */
  615.      290, 290, 290,    /*  not used  */
  616.      261, 262, 264 };  /*  SRA  */
  617.  
  618. USHORT a86shiftmnem_32[24] = {
  619.      208, 209, 210,    /*  ROL  */
  620.      212, 213, 214,    /*  ROR  */
  621.      200, 201, 202,    /*  ROCL  */
  622.      204, 205, 206,    /*  ROCR  */
  623.      256, 257, 258,    /*  SLL  */
  624.      265, 266, 267,    /*  SRL  */
  625.      290, 290, 290,    /*  not used  */
  626.      261, 262, 263 };  /*  SRA  */
  627.  
  628.  
  629.  
  630.    /*  mnemonic numbers for REP prefix orders  */
  631.  
  632. USHORT a86repmnem[3] = { 193, 194, 195 };
  633.  
  634.  
  635.    /*  mnemonic numbers for 0F orders  */
  636.  
  637. USHORT a86mnem0F[256] = {
  638.        odd, odd, 111, 128, odd, odd,  43, odd,      /*  00  */
  639.        293, 295, odd, odd, odd, odd, odd, odd,      /*  08  */
  640.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  10  */
  641.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  18  */
  642.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  20  */
  643.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  28  */
  644.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  30  */
  645.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  38  */
  646.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  40  */
  647.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  48  */
  648.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  50  */
  649.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  58  */
  650.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  60  */
  651.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  68  */
  652.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  70  */
  653.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  78  */
  654.        102,  98,  93,  96, 107, 101,  95,  91,      /*  80  */
  655.        106, 100, 104, 105,  94,  97,  99, 103,      /*  88  */
  656.        237, 233, 228, 230, 242, 236, 231, 227,      /*  90  */
  657.        241, 235, 239, 240, 229, 232, 234, 238,      /*  98  */
  658.        183, 176, odd,  20, 244, 244, 292, 292,      /*  A0  */
  659.        183, 176, odd,  23, 245, 245, odd, 141,      /*  A8  */
  660.        odd, odd, 129,  22, 117, 119, odd, odd,      /*  B0  */
  661.        odd, odd, odd,  21,  18,  19, odd, odd,      /*  B8  */
  662.        296, 296, odd, odd, odd, odd, odd, odd,      /*  C0  */
  663.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  C8  */
  664.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  D0  */
  665.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  D8  */
  666.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  E0  */
  667.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  E8  */
  668.        odd, odd, odd, odd, odd, odd, odd, odd,      /*  F0  */
  669.        odd, odd, odd, odd, odd, odd, odd, odd  };   /*  F8  */
  670.  
  671.  
  672.    /*  mnemonic numbers for 0F 00 orders  */
  673.  
  674. USHORT a86mnem0F00[6] = {
  675.      255, 273, 122, 130, 281, 282 };
  676.  
  677.  
  678.    /*  mnemonic numbers for 0F 01 orders  */
  679.  
  680. USHORT a86mnem0F01[8] = {
  681.      243, 249, 118, 121, 260, 290, 123, 294 };
  682.  
  683.  
  684.    /*  mnemonic numbers for 0F B6,B7 orders  */
  685.  
  686. USHORT a86mnem0FB6[3] = { 139, 140, 138 };
  687.  
  688.  
  689.    /*  mnemonic numbers for 0F BA orders  */
  690.  
  691. USHORT a86mnem0FBA[4] = { 20, 23, 22, 21 };
  692.  
  693.  
  694.    /*  mnemonic numbers for 0F BE,BF orders  */
  695.  
  696. USHORT a86mnem0FBE[3] = { 136, 137, 135 };
  697.  
  698.  
  699.  
  700.    /*  the following table is the mnemonic table for memory access
  701.        387 instructions                                              */
  702.  
  703. USHORT a86m387mem[64] = {
  704.      5,  71, 16, 15,  99,  98,  26, 25,       /*   0  (D8)  */
  705.     64, 107, 90, 88,  57,  56,  84, 83,       /*   8  (D9)  */
  706.     29,  42, 31, 33,  53,  51,  35, 37,       /*  10  (DA)  */
  707.     40, 107, 49, 47, 107,  65, 107, 89,       /*  18  (DB)  */
  708.      3,  69, 11, 13,  93,  96,  20, 23,       /*  20  (DC)  */
  709.     58, 107, 85, 87,  77, 107,  78, 91,       /*  28  (DD)  */
  710.     30,  43, 32, 34,  54,  52,  36, 38,       /*  30  (DE)  */
  711.     41, 107, 50, 48,   6,  39,   7, 46  };    /*  38  (DF)  */
  712.  
  713.  
  714.    /*  the following table is the mnemonic table for 387
  715.        instructions with a reg field                                 */
  716.  
  717. USHORT a86m387reg[64] = {
  718.       2,  68,  10,  12,  92,  95,  19,  22,   /*   0  (D8)  */
  719.      55, 102, odd,  86, odd, odd, odd, odd,   /*   8  (D9)  */
  720.     107, 107, 107, 107, 107, 107, 107, 107,   /*  10  (DA)  */
  721.     107, 107, 107, 107, odd, 107, 107, 107,   /*  18  (DB)  */
  722.       2,  68,  10,  12,  92,  95,  19,  22,   /*  20  (DC)  */
  723.      28, 102,  82,  86, 113, 114, 107, 107,   /*  28  (DD)  */
  724.       4,  70,  12, odd,  97,  94,  21,  24,   /*  30  (DE)  */
  725.     108, 102,  86,  86, odd, 107, 107, 107 }; /*  38  (DF)  */
  726.  
  727.  
  728.  
  729.    /*  the following table is the mnemonic table for 387
  730.        orders D9, mod = 3, regf = 4-7                                */
  731.  
  732. USHORT a86mnemD94[32] = {
  733.       8,   1, odd, odd, 100, 101, odd, odd,
  734.      67,  62,  61,  63,  59,  60,  66, odd,
  735.     106, 104,  75,  73, 103, 110,  17,  44,
  736.      74, 105,  81, 112,  76,  79, 111, 109   };
  737.  
  738.  
  739.  
  740.    /*  the following table is the mnemonic table for 387
  741.        orders DB, mod = 3, regf = 4                                  */
  742.  
  743. USHORT a86mnemDB4[8] = { 27, 18, 9, 45, 80, odd, odd, odd };
  744.  
  745.  
  746.  
  747.  /********************************************************************
  748.  *                                                                   *
  749.  *    The following are structures to enable use to choose either    *
  750.  *    16-bit or 32-bit dis-assembly when generating ASM/86 format    *
  751.  *    instructions                                                   *
  752.  *                                                                   *
  753.  ********************************************************************/
  754.  
  755.  
  756. struct {
  757.   CHAR *p1[2];
  758.   USHORT *p2[16];
  759.   USHORT w1[19];
  760.   CHAR m;
  761. } ASM286_16 = {
  762.                 a86mnem,
  763.                 a86m387,
  764.                 a86mnem_16,
  765.                 a86mnem8081_16,
  766.                 a86mnemAA,
  767.                 a86mnemC6C7_16,
  768.                 a86mnemF6F7_16,
  769.                 a86mnemFF_16,
  770.                 a86shiftmnem_16,
  771.                 a86repmnem,
  772.                 a86mnem0F00,
  773.                 a86mnem0F01,
  774.                 a86m387mem,
  775.                 a86m387reg,
  776.                 a86mnemD94,
  777.                 a86mnemDB4,
  778.                 a86mnem0F,
  779.                 a86mnem0FBA,
  780.                 65,                       /*  index of mnemonic ESCAPE  */
  781.                 176,                         /*  index of mnemonic POP  */
  782.                 182,                    /*  index of mnemonic POP word  */
  783.                 179,                   /*  index of mnemonic POP dword  */
  784.                 225,                       /*  index of mnemonic SEGOV  */
  785.                 108,                           /*  index of mnemonic L  */
  786.                 269,                          /*  index of mnemonic ST  */
  787.                 290,              /*  index of mnemonic ???? (illegal)  */
  788.                 277,                          /*  index of mnemonic TI  */
  789.                 278,                         /*  index of mnemonic TIB  */
  790.                 280,                         /*  index of mnemonic TIW  */
  791.                 183,                        /*  index of mnemonic PUSH  */
  792.                 291,                       /*  index of mnemonic BSWAP  */
  793.                 1,                      /*  index of 387 mnemonic FABS  */
  794.                 72,                     /*  index of 387 mnemonic FNOP  */
  795.                 14,                   /*  index of 387 mnemonic FCOMPP  */
  796.                 115,                 /*  index of 387 mnemonic FUCOMPP  */
  797.                 91,                    /*  index of 387 mnemonic FSTSW  */
  798.                 107,          /*  index of 387 mnemonic ???? (illegal)  */
  799.                 0     };           /*  set to 1 if this is MASM format  */
  800.  
  801.  
  802. struct {
  803.   CHAR *p1[2];
  804.   USHORT *p2[16];
  805.   USHORT w1[19];
  806.   CHAR m;
  807. } ASM286_32 = {
  808.                 a86mnem,
  809.                 a86m387,
  810.                 a86mnem_32,
  811.                 a86mnem8081_32,
  812.                 a86mnemAA,
  813.                 a86mnemC6C7_32,
  814.                 a86mnemF6F7_32,
  815.                 a86mnemFF_32,
  816.                 a86shiftmnem_32,
  817.                 a86repmnem,
  818.                 a86mnem0F00,
  819.                 a86mnem0F01,
  820.                 a86m387mem,
  821.                 a86m387reg,
  822.                 a86mnemD94,
  823.                 a86mnemDB4,
  824.                 a86mnem0F,
  825.                 a86mnem0FBA,
  826.                 65,                       /*  index of mnemonic ESCAPE  */
  827.                 176,                         /*  index of mnemonic POP  */
  828.                 182,                    /*  index of mnemonic POP word  */
  829.                 179,                   /*  index of mnemonic POP dword  */
  830.                 225,                       /*  index of mnemonic SEGOV  */
  831.                 108,                           /*  index of mnemonic L  */
  832.                 269,                          /*  index of mnemonic ST  */
  833.                 290,              /*  index of mnemonic ???? (illegal)  */
  834.                 277,                          /*  index of mnemonic TI  */
  835.                 278,                         /*  index of mnemonic TIB  */
  836.                 279,                         /*  index of mnemonic TID  */
  837.                 183,                        /*  index of mnemonic PUSH  */
  838.                 291,                       /*  index of mnemonic BSWAP  */
  839.                 1,                      /*  index of 387 mnemonic FABS  */
  840.                 72,                     /*  index of 387 mnemonic FNOP  */
  841.                 14,                   /*  index of 387 mnemonic FCOMPP  */
  842.                 115,                 /*  index of 387 mnemonic FUCOMPP  */
  843.                 91,                    /*  index of 387 mnemonic FSTSW  */
  844.                 107,          /*  index of 387 mnemonic ???? (illegal)  */
  845.                 0     };           /*  set to 1 if this is MASM format  */
  846.