home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sd386v50.zip / sd386src.zip / MASMMNEM.C < prev    next >
Text File  |  1989-08-11  |  30KB  |  651 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 = MASM mnemonics for the dis-assembler.  This  *
  21. *                      is included into TLDUNPIK.C.                 *
  22. *                                                                   *
  23. *                      Note that the mnemonic tables are 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.  
  43.  
  44. /*************************************************************************
  45. *                                                                        *
  46. *   The following table holds the MASM mnemonics:  these are accessed    *
  47. *   by mnemonic number, not by instruction value.                        *
  48. *                                                                        *
  49. *   Note that these vectors all have names starting with "masm".         *
  50. *                                                                        *
  51. *************************************************************************/
  52.  
  53.  
  54. CHAR masmmnem[] = {
  55.         3,3,'A','A','A',
  56.         3,3,'A','A','D',                 /*   2  */
  57.         3,3,'A','A','M',
  58.         3,3,'A','A','S',                 /*   4  */
  59.         3,3,'A','D','C',
  60.         3,3,'A','D','D',                 /*   6  */
  61.         3,3,'A','N','D',
  62.         4,4,'A','R','P','L',             /*   8  */
  63.         5,5,'B','O','U','N','D',
  64.         3,3,'B','S','F',                 /*  10  */
  65.         3,3,'B','S','R',
  66.         2,2,'B','T',                     /*  12  */
  67.         3,3,'B','T','C',
  68.         3,3,'B','T','R',                 /*  14  */
  69.         3,3,'B','T','S',
  70.         4,4,'C','A','L','L',             /*  16  */
  71.         3,3,'C','B','W',
  72.         3,3,'C','D','Q',                 /*  18  */
  73.         3,3,'C','L','C',
  74.         3,3,'C','L','D',                 /*  20  */
  75.         3,3,'C','L','I',
  76.         4,4,'C','L','T','S',             /*  22  */
  77.         3,3,'C','M','C',
  78.         3,3,'C','M','P',                 /*  24  */
  79.         5,5,'C','M','P','S','B',
  80.         5,5,'C','M','P','S','D',         /*  26  */
  81.         5,5,'C','M','P','S','W',
  82.         3,3,'C','W','D',                 /*  28  */
  83.         4,4,'C','W','D','E',
  84.         3,3,'D','A','A',                 /*  30  */
  85.         3,3,'D','A','S',
  86.         3,3,'D','E','C',                 /*  32  */
  87.         3,3,'D','I','V',
  88.         5,5,'E','N','T','E','R',         /*  34  */
  89.         3,3,'E','S','C',
  90.         3,3,'H','L','T',                 /*  36  */
  91.         4,4,'I','D','I','V',
  92.         4,4,'I','M','U','L',             /*  38  */
  93.         2,2,'I','N',
  94.         3,3,'I','N','C',                 /*  40  */
  95.         4,4,'I','N','S','B',
  96.         4,4,'I','N','S','D',             /*  42  */
  97.         4,4,'I','N','S','W',
  98.         3,3,'I','N','T',                 /*  44  */
  99.         4,4,'I','N','T','O',
  100.         4,4,'I','R','E','T',             /*  46  */
  101.         5,5,'I','R','E','T','D',
  102.         2,2,'J','A',                     /*  48  */
  103.         2,2,'J','B',
  104.         4,4,'J','C','X','Z',             /*  50  */
  105.         5,5,'J','E','C','X','Z',
  106.         2,2,'J','G',                     /*  52  */
  107.         2,2,'J','L',
  108.         3,3,'J','M','P',                 /*  54  */
  109.         3,3,'J','N','A',
  110.         3,3,'J','N','B',                 /*  56  */
  111.         3,3,'J','N','G',
  112.         3,3,'J','N','L',                 /*  58  */
  113.         3,3,'J','N','O',
  114.         3,3,'J','N','S',                 /*  60  */
  115.         3,3,'J','N','Z',
  116.         2,2,'J','O',                     /*  62  */
  117.         3,3,'J','P','E',
  118.         3,3,'J','P','O',                 /*  64  */
  119.         2,2,'J','S',
  120.         2,2,'J','Z',                     /*  66  */
  121.         4,4,'L','A','H','F',
  122.         3,3,'L','A','R',                 /*  68  */
  123.         3,3,'L','D','S',
  124.         3,3,'L','E','A',                 /*  70  */
  125.         5,5,'L','E','A','V','E',
  126.         3,3,'L','E','S',                 /*  72  */
  127.         3,3,'L','F','S',
  128.         4,4,'L','G','D','T',             /*  74  */
  129.         3,3,'L','G','S',
  130.         4,4,'L','I','D','T',             /*  76  */
  131.         4,4,'L','L','D','T',
  132.         4,4,'L','M','S','W',             /*  78  */
  133.         4,4,'L','O','C','K',
  134.         5,5,'L','O','D','S','B',         /*  80  */
  135.         5,5,'L','O','D','S','D',
  136.         5,5,'L','O','D','S','W',         /*  82  */
  137.         4,4,'L','O','O','P',
  138.         6,6,'L','O','O','P','N','Z',     /*  84  */
  139.         5,5,'L','O','O','P','Z',
  140.         3,3,'L','S','L',                 /*  86  */
  141.         3,3,'L','S','S',
  142.         3,3,'L','T','R',                 /*  88  */
  143.         3,3,'M','O','V',
  144.         5,5,'M','O','V','S','B',         /*  90  */
  145.         5,5,'M','O','V','S','D',
  146.         5,5,'M','O','V','S','W',         /*  92  */
  147.         5,5,'M','O','V','S','X',
  148.         5,5,'M','O','V','Z','X',         /*  94  */
  149.         3,3,'M','U','L',
  150.         3,3,'N','E','G',                 /*  96  */
  151.         3,3,'N','O','P',
  152.         3,3,'N','O','T',                 /*  98  */
  153.         2,2,'O','R',
  154.         3,3,'O','U','T',                 /* 100  */
  155.         5,5,'O','U','T','S','B',
  156.         5,5,'O','U','T','S','D',         /* 102  */
  157.         5,5,'O','U','T','S','W',
  158.         3,3,'P','O','P',                 /* 104  */
  159.         4,4,'P','O','P','A',
  160.         5,5,'P','O','P','A','D',         /* 106  */
  161.         4,4,'P','O','P','F',
  162.         5,5,'P','O','P','F','D',         /* 108  */
  163.         4,4,'P','U','S','H',
  164.         5,5,'P','U','S','H','A',         /* 110  */
  165.         6,6,'P','U','S','H','A','D',
  166.         5,5,'P','U','S','H','F',         /* 112  */
  167.         6,6,'P','U','S','H','F','D',
  168.         5,5,'P','U','S','H','I',         /* 114  */
  169.         3,3,'R','C','L',
  170.         3,3,'R','C','R',                 /* 116  */
  171.         3,3,'R','E','P',
  172.         5,5,'R','E','P','N','Z',         /* 118  */
  173.         4,4,'R','E','P','Z',
  174.         3,3,'R','E','T',                 /* 120  */
  175.         3,3,'R','O','L',
  176.         3,3,'R','O','R',                 /* 122  */
  177.         4,4,'S','A','H','F',
  178.         3,3,'S','A','L',                 /* 124  */
  179.         3,3,'S','A','R',
  180.         3,3,'S','B','B',                 /* 126  */
  181.         5,5,'S','C','A','S','B',
  182.         5,5,'S','C','A','S','D',         /* 128  */
  183.         5,5,'S','C','A','S','W',
  184.         3,3,'S','E','G',                 /* 130  */
  185.         4,4,'S','E','T','A',
  186.         5,5,'S','E','T','A','E',         /* 132  */
  187.         4,4,'S','E','T','B',
  188.         5,5,'S','E','T','B','E',         /* 134  */
  189.         4,4,'S','E','T','G',
  190.         5,5,'S','E','T','G','E',         /* 136  */
  191.         4,4,'S','E','T','L',
  192.         5,5,'S','E','T','L','E',         /* 138  */
  193.         5,5,'S','E','T','N','O',
  194.         5,5,'S','E','T','N','S',         /* 140  */
  195.         5,5,'S','E','T','N','Z',
  196.         5,5,'S','E','T','P','E',         /* 142  */
  197.         5,5,'S','E','T','P','O',
  198.         4,4,'S','E','T','O',             /* 144  */
  199.         4,4,'S','E','T','S',
  200.         4,4,'S','E','T','Z',             /* 146  */
  201.         4,4,'S','G','D','T',
  202.         3,3,'S','H','L',                 /* 148  */
  203.         4,4,'S','H','L','D',
  204.         3,3,'S','H','R',                 /* 150  */
  205.         4,4,'S','H','R','D',
  206.         4,4,'S','I','D','T',             /* 152  */
  207.         4,4,'S','L','D','T',
  208.         4,4,'S','M','S','W',             /* 154  */
  209.         3,3,'S','T','C',
  210.         3,3,'S','T','D',                 /* 156  */
  211.         3,3,'S','T','I',
  212.         5,5,'S','T','O','S','B',         /* 158  */
  213.         5,5,'S','T','O','S','D',
  214.         5,5,'S','T','O','S','W',         /* 160  */
  215.         3,3,'S','T','R',
  216.         3,3,'S','U','B',                 /* 162  */
  217.         4,4,'T','E','S','T',
  218.         4,4,'W','A','I','T',             /* 164  */
  219.         4,4,'V','E','R','R',
  220.         4,4,'V','E','R','W',             /* 166  */
  221.         4,4,'X','C','H','G',
  222.         4,4,'X','L','A','T',             /* 168  */
  223.         3,3,'X','O','R',
  224.         4,4,'?','?','?','?',             /* 170  */
  225.         5,5,'B','S','W','A','P',
  226.         7,7,'C','M','P','X','C','H','G', /* 172  */
  227.         4,4,'I','N','V','D',
  228.         6,6,'I','N','V','L','P','G',     /* 174  */
  229.         6,6,'W','B','I','N','V','D',
  230.         4,4,'X','A','D','D',             /* 176  */
  231.         0                   };           /* the terminator  */
  232.  
  233.  
  234.    /*  the following table holds the mnemonics for the 80387
  235.        numerics processor.                                           */
  236.  
  237. CHAR masmm387[] = {
  238.         4,4,'F','A','B','S',
  239.         4,4,'F','A','D','D',                /*   2  */
  240.         5,5,'F','A','D','D','P',
  241.         4,4,'F','B','L','D',                /*   4  */
  242.         5,5,'F','B','S','T','P',
  243.         4,4,'F','C','H','S',                /*   6  */
  244.         5,5,'F','C','L','E','X',
  245.         4,4,'F','C','O','M',                /*   8  */
  246.         5,5,'F','C','O','M','P',
  247.         6,6,'F','C','O','M','P','P',        /*  10  */
  248.         7,7,'F','D','E','C','S','T','P',
  249.         5,5,'F','D','I','S','I',            /*  12  */
  250.         4,4,'F','D','I','V',
  251.         5,5,'F','D','I','V','P',            /*  14  */
  252.         5,5,'F','D','I','V','R',
  253.         6,6,'F','D','I','V','R','P',        /*  16  */
  254.         4,4,'F','E','N','I',
  255.         5,5,'F','F','R','E','E',            /*  18  */
  256.         5,5,'F','I','A','D','D',
  257.         5,5,'F','I','C','O','M',            /*  20  */
  258.         6,6,'F','I','C','O','M','P',
  259.         5,5,'F','I','D','I','V',            /*  22  */
  260.         6,6,'F','I','D','I','V','R',
  261.         4,4,'F','I','L','D',                /*  24  */
  262.         5,5,'F','I','M','U','L',
  263.         7,7,'F','I','N','C','S','T','P',    /*  26  */
  264.         5,5,'F','I','N','I','T',
  265.         4,4,'F','I','S','T',                /*  28  */
  266.         5,5,'F','I','S','T','P',
  267.         5,5,'F','I','S','U','B',            /*  30  */
  268.         6,6,'F','I','S','U','B','R',
  269.         3,3,'F','L','D',                    /*  32  */
  270.         5,5,'F','L','D','C','W',
  271.         6,6,'F','L','D','E','N','V',        /*  34  */
  272.         6,6,'F','L','D','L','G','2',
  273.         6,6,'F','L','D','L','N','2',        /*  36  */
  274.         6,6,'F','L','D','L','2','E',
  275.         6,6,'F','L','D','L','2','T',        /*  38  */
  276.         5,5,'F','L','D','P','I',
  277.         4,4,'F','L','D','Z',                /*  40  */
  278.         4,4,'F','L','D','1',
  279.         4,4,'F','M','U','L',                /*  42  */
  280.         5,5,'F','M','U','L','P',
  281.         6,6,'F','N','C','L','E','X',        /*  44  */
  282.         6,6,'F','N','D','I','S','I',
  283.         5,5,'F','N','E','N','I',            /*  46  */
  284.         6,6,'F','N','I','N','I','T',
  285.         4,4,'F','N','O','P',                /*  48  */
  286.         6,6,'F','N','S','A','V','E',
  287.         6,6,'F','N','S','T','C','W',        /*  50  */
  288.         7,7,'F','N','S','T','E','N','V',
  289.         6,6,'F','N','S','T','S','W',        /*  52  */
  290.         6,6,'F','P','A','T','A','N',
  291.         5,5,'F','P','R','E','M',            /*  54  */
  292.         5,5,'F','P','T','A','N',
  293.         7,7,'F','R','N','D','I','N','T',    /*  56  */
  294.         6,6,'F','R','S','T','O','R',
  295.         5,5,'F','S','A','V','E',            /*  58  */
  296.         6,6,'F','S','C','A','L','E',
  297.         6,6,'F','S','E','T','P','M',        /*  60  */
  298.         5,5,'F','S','Q','R','T',
  299.         3,3,'F','S','T',                    /*  62  */
  300.         5,5,'F','S','T','C','W',
  301.         6,6,'F','S','T','E','N','V',        /*  64  */
  302.         4,4,'F','S','T','P',
  303.         5,5,'F','S','T','S','W',            /*  66  */
  304.         4,4,'F','S','U','B',
  305.         5,5,'F','S','U','B','P',            /*  68  */
  306.         5,5,'F','S','U','B','R',
  307.         6,6,'F','S','U','B','R','P',        /*  70  */
  308.         4,4,'F','T','S','T',
  309.         5,5,'F','W','A','I','T',            /*  72  */
  310.         4,4,'F','X','A','M',
  311.         4,4,'F','X','C','H',                /*  74  */
  312.         7,7,'F','X','T','R','A','C','T',
  313.         5,5,'F','Y','L','2','X',            /*  76  */
  314.         7,7,'F','Y','L','2','X','P','1',
  315.         5,5,'F','2','X','M','1',            /*  78  */
  316.         4,4,'?','?','?','?',
  317.         6,6,'F','F','R','E','E','P',        /*  80  */
  318.         4,4,'F','C','O','S',
  319.         6,6,'F','P','R','E','M','1',        /*  82  */
  320.         4,4,'F','S','I','N',
  321.         7,7,'F','S','I','N','C','O','S',    /*  84  */
  322.         5,5,'F','U','C','O','M',
  323.         6,6,'F','U','C','O','M','P',        /*  86  */
  324.         7,7,'F','U','C','O','M','P','P',
  325.         0                              };   /*  the terminator  */
  326.  
  327.  
  328.  
  329.    /*  mnemonic numbers for each instruction - a value of "odd" in
  330.        this table implies a special case of some sort, and the
  331.        mnemonic is not to be printed automatically without looking
  332.        further                                                      */
  333.  
  334.  
  335. #define odd 0xFFFF                      /*  mnemonic number to cause
  336.                                             special action to be taken  */
  337.  
  338. USHORT masmmnem_16[256] = {
  339.          6, 6, 6, 6, 6, 6, 109, 104,                  /*   0  */
  340.          99, 99, 99, 99, 99, 99, 109, odd,            /*   8  */
  341.          5, 5, 5, 5, 5, 5, 109, 104,                  /*  10  */
  342.          126, 126, 126, 126, 126, 126, 109, 104,      /*  18  */
  343.          7, 7, 7, 7, 7, 7, odd, 30,                   /*  20  */
  344.          162, 162, 162, 162, 162, 162, odd, 31,       /*  28  */
  345.          169, 169, 169, 169, 169, 169, odd, 1,        /*  30  */
  346.          24, 24, 24, 24, 24, 24, odd, 4,              /*  38  */
  347.          40, 40, 40, 40, 40, 40, 40, 40,              /*  40  */
  348.          32, 32, 32, 32, 32, 32, 32, 32,              /*  48  */
  349.          109, 109, 109, 109, 109, 109, 109, 109,      /*  50  */
  350.          104, 104, 104, 104, 104, 104, 104, 104,      /*  58  */
  351.          110, 105, 9, 8, odd, odd, odd, odd,          /*  60  */
  352.          109, 38, 109, 38, 41, 43, 101, 103,          /*  68  */
  353.          62, 59, 49, 56, 66, 61, 55, 48,              /*  70  */
  354.          65, 60, 63, 64, 53, 58, 57, 52,              /*  78  */
  355.          odd, odd, odd, odd, 163, 163, 167, 167,      /*  80  */
  356.          89, 89, 89, 89, odd, 70, odd, odd,           /*  88  */
  357.          97, 167, 167, 167, 167, 167, 167, 167,       /*  90  */
  358.          17, 28, 16, 164, 112, 107, 123, 67,          /*  98  */
  359.          89, 89, 89, 89, 90, 92, 25, 27,              /*  A0  */
  360.          163, 163, 158, 160, 80, 82, 127, 129,        /*  A8  */
  361.          89, 89, 89, 89, 89, 89, 89, 89,              /*  B0  */
  362.          89, 89, 89, 89, 89, 89, 89, 89,              /*  B8  */
  363.          odd, odd, 120, 120, 72, 69, odd, odd,        /*  C0  */
  364.          34, 71, 120, 120, 44, 44, 45, 46,            /*  C8  */
  365.          odd, odd, odd, odd, odd, odd, odd, 168,      /*  D0  */
  366.          odd, odd, odd, odd, odd, odd, odd, odd,      /*  D8  */
  367.          84, 85, 83, 50, 39, 39, 100, 100,            /*  E0  */
  368.          16, 54, 54, 54, 39, 39, 100, 100,            /*  E8  */
  369.          79, odd, odd, odd, 36, 23, odd, odd,         /*  F0  */
  370.          19, 155, 21, 157, 20, 156, odd, odd  };      /*  F8  */
  371.  
  372. USHORT masmmnem_32[256] = {
  373.          6, 6, 6, 6, 6, 6, 109, 104,                  /*   0  */
  374.          99, 99, 99, 99, 99, 99, 109, odd,            /*   8  */
  375.          5, 5, 5, 5, 5, 5, 109, 104,                  /*  10  */
  376.          126, 126, 126, 126, 126, 126, 109, 104,      /*  18  */
  377.          7, 7, 7, 7, 7, 7, odd, 30,                   /*  20  */
  378.          162, 162, 162, 162, 162, 162, odd, 31,       /*  28  */
  379.          169, 169, 169, 169, 169, 169, odd, 1,        /*  30  */
  380.          24, 24, 24, 24, 24, 24, odd, 4,              /*  38  */
  381.          40, 40, 40, 40, 40, 40, 40, 40,              /*  40  */
  382.          32, 32, 32, 32, 32, 32, 32, 32,              /*  48  */
  383.          109, 109, 109, 109, 109, 109, 109, 109,      /*  50  */
  384.          104, 104, 104, 104, 104, 104, 104, 104,      /*  58  */
  385.          111, 106, 9, 8, odd, odd, odd, odd,          /*  60  */
  386.          109, 38, 109, 38, 41, 42, 101, 102,          /*  68  */
  387.          62, 59, 49, 56, 66, 61, 55, 48,              /*  70  */
  388.          65, 60, 63, 64, 53, 58, 57, 52,              /*  78  */
  389.          odd, odd, odd, odd, 163, 163, 167, 167,      /*  80  */
  390.          89, 89, 89, 89, odd, 70, odd, odd,           /*  88  */
  391.          97, 167, 167, 167, 167, 167, 167, 167,       /*  90  */
  392.          29, 18, 16, 164, 113, 108, 123, 67,          /*  98  */
  393.          89, 89, 89, 89, 90, 91, 25, 26,              /*  A0  */
  394.          163, 163, 158, 159, 80, 81, 127, 128,        /*  A8  */
  395.          89, 89, 89, 89, 89, 89, 89, 89,              /*  B0  */
  396.          89, 89, 89, 89, 89, 89, 89, 89,              /*  B8  */
  397.          odd, odd, 120, 120, 72, 69, odd, odd,        /*  C0  */
  398.          34, 71, 120, 120, 44, 44, 45, 47,            /*  C8  */
  399.          odd, odd, odd, odd, odd, odd, odd, 168,      /*  D0  */
  400.          odd, odd, odd, odd, odd, odd, odd, odd,      /*  D8  */
  401.          84, 85, 83, 51, 39, 39, 100, 100,            /*  E0  */
  402.          16, 54, 54, 54, 39, 39, 100, 100,            /*  E8  */
  403.          79, odd, odd, odd, 36, 23, odd, odd,         /*  F0  */
  404.          19, 155, 21, 157, 20, 156, odd, odd  };      /*  F8  */
  405.  
  406.  
  407.    /*  mnemonic numbers for 80 and 81 instructions, for each value
  408.        of the "reg" field of the following byte.                    */
  409.  
  410. USHORT masmmnem8081[24] = {
  411.          6, 99, 5, 126, 7, 162, 169, 24,
  412.          6, 99, 5, 126, 7, 162, 169, 24,
  413.          6, 99, 5, 126, 7, 162, 169, 24  };
  414.  
  415.  
  416.    /*  mnemonic numbers for D4, D5 orders  */
  417.  
  418. USHORT masmmnemAA[2] = { 3, 2 };
  419.  
  420.  
  421.    /*  mnemonic numbers for F6, F7 orders, for reg = 2 to 7,
  422.        and for FE, FF orders, for reg = 0 and reg = 1.        */
  423.  
  424. USHORT masmmnemF6F7[8] = {
  425.          40, 32, 98, 96, 95, 38, 33, 37  };
  426.  
  427.  
  428.    /*  mnemonic numbers for FF orders, reg = 2 to reg = 6  */
  429.  
  430. USHORT masmmnemFF[5] = { 16, 16, 54, 54, 109 };
  431.  
  432.  
  433.  
  434.    /*  mnemonic numbers for shift instructions  */
  435.  
  436. USHORT masmshiftmnem[24] = {
  437.          121, 121, 121,    /*  ROL  */
  438.          122, 122, 122,    /*  ROR  */
  439.          115, 115, 115,    /*  RCL  */
  440.          116, 116, 116,    /*  RCR  */
  441.          148, 148, 148,    /*  SHL  */
  442.          150, 150, 150,    /*  SHR  */
  443.          170, 170, 170,    /*  not used  */
  444.          125, 125, 125 };  /*  SAR  */
  445.  
  446.  
  447.    /*  mnemonic numbers for REP prefix orders  */
  448.  
  449. USHORT masmrepmnem[3] = { 117, 118, 119 };
  450.  
  451.  
  452.    /*  mnemonic numbers for 0F orders  */
  453.  
  454. USHORT masmmnem0F[256] = {
  455.        odd, odd,  68,  86, odd, odd, 22,  odd,    /*  00  */
  456.        173, 175, odd, odd, odd, odd, odd, odd,    /*  08  */
  457.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  10  */
  458.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  18  */
  459.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  20  */
  460.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  28  */
  461.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  30  */
  462.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  38  */
  463.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  40  */
  464.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  48  */
  465.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  50  */
  466.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  58  */
  467.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  60  */
  468.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  68  */
  469.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  70  */
  470.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  78  */
  471.         62,  59,  49,  56,  66,  61,  55,  48,    /*  80  */
  472.         65,  60,  63,  64,  53,  58,  57,  52,    /*  88  */
  473.        144, 139, 133, 132, 146, 141, 134, 131,    /*  90  */
  474.        145, 140, 142, 143, 137, 136, 138, 135,    /*  98  */
  475.        109, 104, odd,  12, 149, 149, 172, 172,    /*  A0  */
  476.        109, 104, odd,  15, 151, 151, odd,  38,    /*  A8  */
  477.        odd, odd,  87,  14,  73,  75,  94,  94,    /*  B0  */
  478.        odd, odd, odd,  13,  10,  11,  93,  93,    /*  B8  */
  479.        176, 176, odd, odd, odd, odd, odd, odd,    /*  C0  */
  480.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  C8  */
  481.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  D0  */
  482.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  D8  */
  483.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  E0  */
  484.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  E8  */
  485.        odd, odd, odd, odd, odd, odd, odd, odd,    /*  F0  */
  486.        odd, odd, odd, odd, odd, odd, odd, odd };  /*  F8  */
  487.  
  488.  
  489.    /*  mnemonic numbers for 0F 00 orders  */
  490.  
  491. USHORT masmmnem0F00[6] = {
  492.          153, 161, 77, 88, 165, 166 };
  493.  
  494.  
  495.    /*  mnemonic numbers for 0F BA orders  */
  496.  
  497. USHORT masmmnem0FBA[4] = { 12, 15, 14, 13 };
  498.  
  499.  
  500.    /*  mnemonic numbers for 0F 01 orders  */
  501.  
  502. USHORT masmmnem0F01[8] = {
  503.          147, 152, 74, 76, 154, 170, 78, 174 };
  504.  
  505.  
  506.    /*  the following table is the mnemonic table for memory access
  507.        387 instructions                                              */
  508.  
  509. USHORT masmm387mem[64] = {
  510.      2, 42,  8,  9, 67, 69, 13, 15,     /*   0  (D8)  */
  511.     32, 79, 62, 65, 34, 33, 64, 63,     /*   8  (D9)  */
  512.     19, 25, 20, 21, 30, 31, 22, 23,     /*  10  (DA)  */
  513.     24, 79, 28, 29, 79, 32, 79, 65,     /*  18  (DB)  */
  514.      2, 42,  8,  9, 67, 69, 13, 15,     /*  20  (DC)  */
  515.     32, 79, 62, 65, 57, 79, 58, 66,     /*  28  (DD)  */
  516.     19, 25, 20, 21, 30, 31, 22, 23,     /*  30  (DE)  */
  517.     24, 79, 28, 29,  4, 24,  5, 29  };  /*  38  (DF)  */
  518.  
  519.  
  520.    /*  the following table is the mnemonic table for 387
  521.        instructions with a reg field                                 */
  522.  
  523. USHORT masmm387reg[64] = {
  524.      2, 42,   8,   9,  67,  69,  13,  15,    /*   0  (D8)  */
  525.     32, 74, odd,  65, odd, odd, odd, odd,    /*   8  (D9)  */
  526.     79, 79,  79,  79,  79,  79,  79,  79,    /*  10  (DA)  */
  527.     79, 79,  79,  79,  79,  79,  79,  79,    /*  18  (DB)  */
  528.      2, 42,   8,   9,  67,  69,  13,  15,    /*  20  (DC)  */
  529.     18, 74,  62,  65,  85,  86,  79,  79,    /*  28  (DD)  */
  530.      3, 43,   9, odd,  70,  68,  14,  16,    /*  30  (DE)  */
  531.     80, 74,  65,  65, odd,  79,  79,  79 };  /*  38  (DF)  */
  532.  
  533.  
  534.    /*  the following table is the mnemonic table for 387
  535.        orders D9, mod = 3, regf = 4-7                                */
  536.  
  537. USHORT masmmnemD94[32] = {
  538.      6,  1, odd, odd, 71, 73, odd, odd,
  539.     41, 38,  37,  39, 35, 36,  40, odd,
  540.     78, 76,  55,  53, 75, 82,  11,  26,
  541.     54, 77,  61,  84, 56, 59,  83,  81  };
  542.  
  543.  
  544.    /*  the following table is the mnemonic table for 387
  545.        orders DB, mod = 3, regf = 4                                  */
  546.  
  547. USHORT masmmnemDB4[8] = {
  548.     17, 12, 7, 27, 60, odd, odd, odd  };
  549.  
  550.  
  551.  
  552.  /********************************************************************
  553.  *                                                                   *
  554.  *    The following are structures to enable use to choose either    *
  555.  *    16-bit or 32-bit dis-assembly when generating ASM/86 format    *
  556.  *    instructions                                                   *
  557.  *                                                                   *
  558.  ********************************************************************/
  559.  
  560.  
  561. struct {
  562.   CHAR *p1[2];
  563.   USHORT *p2[16];
  564.   USHORT w1[19];
  565.   CHAR m;
  566. } MASM_16   = {
  567.                 masmmnem,
  568.                 masmm387,
  569.                 masmmnem_16,
  570.                 masmmnem8081,
  571.                 masmmnemAA,
  572.                 0,                          /*  C6C7 not used for MASM  */
  573.                 masmmnemF6F7,
  574.                 masmmnemFF,
  575.                 masmshiftmnem,
  576.                 masmrepmnem,
  577.                 masmmnem0F00,
  578.                 masmmnem0F01,
  579.                 masmm387mem,
  580.                 masmm387reg,
  581.                 masmmnemD94,
  582.                 masmmnemDB4,
  583.                 masmmnem0F,
  584.                 masmmnem0FBA,
  585.                 35,                       /*  index of mnemonic ESCAPE  */
  586.                 104,                         /*  index of mnemonic POP  */
  587.                 104,                    /*  index of mnemonic POP word  */
  588.                 104,                   /*  index of mnemonic POP dword  */
  589.                 130,                       /*  index of mnemonic SEGOV  */
  590.                 89,                            /*  index of mnemonic L  */
  591.                 89,                           /*  index of mnemonic ST  */
  592.                 170,              /*  index of mnemonic ???? (illegal)  */
  593.                 163,                          /*  index of mnemonic TI  */
  594.                 163,                         /*  index of mnemonic TIB  */
  595.                 163,                         /*  index of mnemonic TIW  */
  596.                 109,                        /*  index of mnemonic PUSH  */
  597.                 171,                       /*  index of mnemonic BSWAP  */
  598.                 1,                      /*  index of 387 mnemonic FABS  */
  599.                 48,                     /*  index of 387 mnemonic FNOP  */
  600.                 10,                   /*  index of 387 mnemonic FCOMPP  */
  601.                 87,                  /*  index of 387 mnemonic FUCOMPP  */
  602.                 66,                    /*  index of 387 mnemonic FSTSW  */
  603.                 79,           /*  index of 387 mnemonic ???? (illegal)  */
  604.                 1     };           /*  set to 1 if this is MASM format  */
  605.  
  606.  
  607. struct {
  608.   CHAR *p1[2];
  609.   USHORT *p2[16];
  610.   USHORT w1[19];
  611.   CHAR m;
  612. } MASM_32   = {
  613.                 masmmnem,
  614.                 masmm387,
  615.                 masmmnem_32,
  616.                 masmmnem8081,
  617.                 masmmnemAA,
  618.                 0,                          /*  C6C7 not used for MASM  */
  619.                 masmmnemF6F7,
  620.                 masmmnemFF,
  621.                 masmshiftmnem,
  622.                 masmrepmnem,
  623.                 masmmnem0F00,
  624.                 masmmnem0F01,
  625.                 masmm387mem,
  626.                 masmm387reg,
  627.                 masmmnemD94,
  628.                 masmmnemDB4,
  629.                 masmmnem0F,
  630.                 masmmnem0FBA,
  631.                 35,                       /*  index of mnemonic ESCAPE  */
  632.                 104,                         /*  index of mnemonic POP  */
  633.                 104,                    /*  index of mnemonic POP word  */
  634.                 104,                   /*  index of mnemonic POP dword  */
  635.                 130,                       /*  index of mnemonic SEGOV  */
  636.                 89,                            /*  index of mnemonic L  */
  637.                 89,                           /*  index of mnemonic ST  */
  638.                 170,              /*  index of mnemonic ???? (illegal)  */
  639.                 163,                          /*  index of mnemonic TI  */
  640.                 163,                         /*  index of mnemonic TIB  */
  641.                 163,                         /*  index of mnemonic TIW  */
  642.                 109,                        /*  index of mnemonic PUSH  */
  643.                 171,                       /*  index of mnemonic BSWAP  */
  644.                 1,                      /*  index of 387 mnemonic FABS  */
  645.                 48,                     /*  index of 387 mnemonic FNOP  */
  646.                 10,                   /*  index of 387 mnemonic FCOMPP  */
  647.                 87,                  /*  index of 387 mnemonic FUCOMPP  */
  648.                 66,                    /*  index of 387 mnemonic FSTSW  */
  649.                 79,           /*  index of 387 mnemonic ???? (illegal)  */
  650.                 1     };           /*  set to 1 if this is MASM format  */
  651.