Previous 199869 Revisions Next

r33305 Sunday 9th November, 2014 at 17:17:59 UTC by Olivier Galibert
i386: MMX disassembly fixes [O. Galibert]
[src/emu/cpu/i386]i386dasm.c

trunk/src/emu/cpu/i386/i386dasm.c
r241816r241817
1717   PARAM_REG3264,      /* 32-bit or 64-bit register */
1818   PARAM_REG2_32,      /* 32-bit register */
1919   PARAM_MMX,          /* MMX register */
20   PARAM_MMX2,         /* MMX register in modrm */
2021   PARAM_XMM,          /* XMM register */
2122   PARAM_RM,           /* 16 or 32-bit memory or register */
2223   PARAM_RM8,          /* 8-bit memory or register */
r241816r241817
739740      "cmpsd\0"
740741      "cmpss",            MODRM|VAR_NAME4,PARAM_XMM,          PARAM_XMMM,         0               },
741742   {"movnti",          MODRM,          PARAM_RM,           PARAM_REG,          0               },
742   {"pinsrw",          MODRM,          PARAM_MMX,          PARAM_MMXM,         PARAM_UI8       },
743   {"pinsrw",          MODRM,          PARAM_MMX,          PARAM_RM,           PARAM_UI8       },
743744   {"pextrw",          MODRM,          PARAM_MMX,          PARAM_MMXM,         PARAM_UI8       },
744745   {"shufps\0"
745746      "shufpd\0"
r241816r241817
18251826{
18261827   {"???",             0,              0,                  0,                  0               },
18271828   {"???",             0,              0,                  0,                  0               },
1828   {"psrlw",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1829   {"psrlw",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
18291830   {"???",             0,              0,                  0,                  0               },
1830   {"psraw",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1831   {"psraw",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
18311832   {"???",             0,              0,                  0,                  0               },
1832   {"psllw",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1833   {"psllw",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
18331834   {"???",             0,              0,                  0,                  0               }
18341835};
18351836
r241816r241817
18371838{
18381839   {"???",             0,              0,                  0,                  0               },
18391840   {"???",             0,              0,                  0,                  0               },
1840   {"psrld",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1841   {"psrldq",          0,              PARAM_MMX,          PARAM_UI8,          0               },
1841   {"psrld",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
18421842   {"???",             0,              0,                  0,                  0               },
1843   {"psrad",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
18431844   {"???",             0,              0,                  0,                  0               },
1844   {"pslld",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1845   {"pslldq",          0,              PARAM_MMX,          PARAM_UI8,          0               },
1845   {"pslld",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
1846   {"???",             0,              0,                  0,                  0               }
18461847};
18471848
18481849static const I386_OPCODE group0F73_table[8] =
18491850{
18501851   {"???",             0,              0,                  0,                  0               },
18511852   {"???",             0,              0,                  0,                  0               },
1852   {"psrlq",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1853   {"psrlq",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
1854   {"psrldq",          0,              PARAM_MMX2,         PARAM_UI8,          0               },
18531855   {"???",             0,              0,                  0,                  0               },
1854   {"psraq",           0,              PARAM_MMX,          PARAM_UI8,          0               },
18551856   {"???",             0,              0,                  0,                  0               },
1856   {"psllq",           0,              PARAM_MMX,          PARAM_UI8,          0               },
1857   {"???",             0,              0,                  0,                  0               }
1857   {"psllq",           0,              PARAM_MMX2,         PARAM_UI8,          0               },
1858   {"pslldq",          0,              PARAM_MMX2,         PARAM_UI8,          0               },
18581859};
18591860
18601861static const I386_OPCODE group0FAE_table[8] =
r241816r241817
22162217            s += sprintf( s, "mm%d", MODRM_REG1 | regex );
22172218         break;
22182219
2220      case PARAM_MMX2:
2221         if (pre0f == 0x66 || pre0f == 0xf2 || pre0f == 0xf3)
2222            s += sprintf( s, "xmm%d", MODRM_REG2 | regex );
2223         else
2224            s += sprintf( s, "mm%d", MODRM_REG2 | regex );
2225         break;
2226
22192227      case PARAM_XMM:
22202228         s += sprintf( s, "xmm%d", MODRM_REG1 | regex );
22212229         break;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team