diff options
Diffstat (limited to 'src/emu/cpu/i386/i386dasm.c')
-rw-r--r-- | src/emu/cpu/i386/i386dasm.c | 3236 |
1 files changed, 1618 insertions, 1618 deletions
diff --git a/src/emu/cpu/i386/i386dasm.c b/src/emu/cpu/i386/i386dasm.c index 5a9b408612c..3d422b30f80 100644 --- a/src/emu/cpu/i386/i386dasm.c +++ b/src/emu/cpu/i386/i386dasm.c @@ -8,44 +8,44 @@ enum { - PARAM_REG = 1, /* 16 or 32-bit register */ - PARAM_REG8, /* 8-bit register */ - PARAM_REG16, /* 16-bit register */ - PARAM_REG32, /* 32-bit register */ - PARAM_REG3264, /* 32-bit or 64-bit register */ - PARAM_REG2_32, /* 32-bit register */ - PARAM_MMX, /* MMX register */ - PARAM_XMM, /* XMM register */ - PARAM_RM, /* 16 or 32-bit memory or register */ - PARAM_RM8, /* 8-bit memory or register */ - PARAM_RM16, /* 16-bit memory or register */ - PARAM_RM32, /* 32-bit memory or register */ - PARAM_RMPTR, /* 16 or 32-bit memory or register */ - PARAM_RMPTR8, /* 8-bit memory or register */ - PARAM_RMPTR16, /* 16-bit memory or register */ - PARAM_RMPTR32, /* 32-bit memory or register */ - PARAM_RMXMM, /* 32 or 64-bit memory or register */ - PARAM_REGORXMM, /* 32 or 64-bit register or XMM register */ - PARAM_M64, /* 64-bit memory */ - PARAM_M64PTR, /* 64-bit memory */ - PARAM_MMXM, /* 64-bit memory or MMX register */ - PARAM_XMMM, /* 128-bit memory or XMM register */ - PARAM_I4, /* 4-bit signed immediate */ - PARAM_I8, /* 8-bit signed immediate */ - PARAM_I16, /* 16-bit signed immediate */ - PARAM_UI8, /* 8-bit unsigned immediate */ - PARAM_UI16, /* 16-bit unsigned immediate */ - PARAM_IMM, /* 16 or 32-bit immediate */ - PARAM_IMM64, /* 16, 32 or 64-bit immediate */ - PARAM_ADDR, /* 16:16 or 16:32 address */ - PARAM_REL, /* 16 or 32-bit PC-relative displacement */ - PARAM_REL8, /* 8-bit PC-relative displacement */ - PARAM_MEM_OFFS, /* 16 or 32-bit mem offset */ - PARAM_SREG, /* segment register */ - PARAM_CREG, /* control register */ - PARAM_DREG, /* debug register */ - PARAM_TREG, /* test register */ - PARAM_1, /* used by shift/rotate instructions */ + PARAM_REG = 1, /* 16 or 32-bit register */ + PARAM_REG8, /* 8-bit register */ + PARAM_REG16, /* 16-bit register */ + PARAM_REG32, /* 32-bit register */ + PARAM_REG3264, /* 32-bit or 64-bit register */ + PARAM_REG2_32, /* 32-bit register */ + PARAM_MMX, /* MMX register */ + PARAM_XMM, /* XMM register */ + PARAM_RM, /* 16 or 32-bit memory or register */ + PARAM_RM8, /* 8-bit memory or register */ + PARAM_RM16, /* 16-bit memory or register */ + PARAM_RM32, /* 32-bit memory or register */ + PARAM_RMPTR, /* 16 or 32-bit memory or register */ + PARAM_RMPTR8, /* 8-bit memory or register */ + PARAM_RMPTR16, /* 16-bit memory or register */ + PARAM_RMPTR32, /* 32-bit memory or register */ + PARAM_RMXMM, /* 32 or 64-bit memory or register */ + PARAM_REGORXMM, /* 32 or 64-bit register or XMM register */ + PARAM_M64, /* 64-bit memory */ + PARAM_M64PTR, /* 64-bit memory */ + PARAM_MMXM, /* 64-bit memory or MMX register */ + PARAM_XMMM, /* 128-bit memory or XMM register */ + PARAM_I4, /* 4-bit signed immediate */ + PARAM_I8, /* 8-bit signed immediate */ + PARAM_I16, /* 16-bit signed immediate */ + PARAM_UI8, /* 8-bit unsigned immediate */ + PARAM_UI16, /* 16-bit unsigned immediate */ + PARAM_IMM, /* 16 or 32-bit immediate */ + PARAM_IMM64, /* 16, 32 or 64-bit immediate */ + PARAM_ADDR, /* 16:16 or 16:32 address */ + PARAM_REL, /* 16 or 32-bit PC-relative displacement */ + PARAM_REL8, /* 8-bit PC-relative displacement */ + PARAM_MEM_OFFS, /* 16 or 32-bit mem offset */ + PARAM_SREG, /* segment register */ + PARAM_CREG, /* control register */ + PARAM_DREG, /* debug register */ + PARAM_TREG, /* test register */ + PARAM_1, /* used by shift/rotate instructions */ PARAM_AL, PARAM_CL, PARAM_DL, @@ -55,18 +55,18 @@ enum PARAM_DH, PARAM_BH, PARAM_DX, - PARAM_EAX, /* EAX or AX */ - PARAM_ECX, /* ECX or CX */ - PARAM_EDX, /* EDX or DX */ - PARAM_EBX, /* EBX or BX */ - PARAM_ESP, /* ESP or SP */ - PARAM_EBP, /* EBP or BP */ - PARAM_ESI, /* ESI or SI */ - PARAM_EDI, /* EDI or DI */ + PARAM_EAX, /* EAX or AX */ + PARAM_ECX, /* ECX or CX */ + PARAM_EDX, /* EDX or DX */ + PARAM_EBX, /* EBX or BX */ + PARAM_ESP, /* ESP or SP */ + PARAM_EBP, /* EBP or BP */ + PARAM_ESI, /* ESI or SI */ + PARAM_EDI, /* EDI or DI */ PARAM_XMM0, - PARAM_XMM64, /* 64-bit memory or XMM register */ - PARAM_XMM32, /* 32-bit memory or XMM register */ - PARAM_XMM16, /* 16-bit memory or XMM register */ + PARAM_XMM64, /* 64-bit memory or XMM register */ + PARAM_XMM32, /* 32-bit memory or XMM register */ + PARAM_XMM16, /* 16-bit memory or XMM register */ }; enum @@ -85,15 +85,15 @@ enum SEG_GS, SEG_SS, ISREX, - THREE_BYTE /* [prefix] 0f op1 op2 and then mod/rm */ + THREE_BYTE /* [prefix] 0f op1 op2 and then mod/rm */ }; -#define FLAGS_MASK 0x0ff -#define VAR_NAME 0x100 -#define VAR_NAME4 0x200 -#define ALWAYS64 0x400 -#define SPECIAL64 0x800 -#define SPECIAL64_ENT(x) (SPECIAL64 | ((x) << 24)) +#define FLAGS_MASK 0x0ff +#define VAR_NAME 0x100 +#define VAR_NAME4 0x200 +#define ALWAYS64 0x400 +#define SPECIAL64 0x800 +#define SPECIAL64_ENT(x) (SPECIAL64 | ((x) << 24)) struct I386_OPCODE { const char *mnemonic; @@ -115,1810 +115,1810 @@ static const UINT8 *opcode_ptr_base; static const I386_OPCODE i386_opcode_table1[256] = { // 0x00 - {"add", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"add", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"add", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"add", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"add", 0, PARAM_AL, PARAM_UI8, 0 }, - {"add", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"push es", 0, 0, 0, 0 }, - {"pop es", 0, 0, 0, 0 }, - {"or", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"or", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"or", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"or", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"or", 0, PARAM_AL, PARAM_UI8, 0 }, - {"or", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"push cs", 0, 0, 0, 0 }, - {"two_byte", TWO_BYTE, 0, 0, 0 }, + {"add", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"add", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"add", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"add", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"add", 0, PARAM_AL, PARAM_UI8, 0 }, + {"add", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"push es", 0, 0, 0, 0 }, + {"pop es", 0, 0, 0, 0 }, + {"or", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"or", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"or", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"or", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"or", 0, PARAM_AL, PARAM_UI8, 0 }, + {"or", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"push cs", 0, 0, 0, 0 }, + {"two_byte", TWO_BYTE, 0, 0, 0 }, // 0x10 - {"adc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"adc", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"adc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"adc", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"adc", 0, PARAM_AL, PARAM_UI8, 0 }, - {"adc", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"push ss", 0, 0, 0, 0 }, - {"pop ss", 0, 0, 0, 0 }, - {"sbb", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"sbb", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"sbb", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"sbb", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"sbb", 0, PARAM_AL, PARAM_UI8, 0 }, - {"sbb", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"push ds", 0, 0, 0, 0 }, - {"pop ds", 0, 0, 0, 0 }, + {"adc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"adc", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"adc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"adc", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"adc", 0, PARAM_AL, PARAM_UI8, 0 }, + {"adc", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"push ss", 0, 0, 0, 0 }, + {"pop ss", 0, 0, 0, 0 }, + {"sbb", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"sbb", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"sbb", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"sbb", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"sbb", 0, PARAM_AL, PARAM_UI8, 0 }, + {"sbb", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"push ds", 0, 0, 0, 0 }, + {"pop ds", 0, 0, 0, 0 }, // 0x20 - {"and", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"and", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"and", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"and", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"and", 0, PARAM_AL, PARAM_UI8, 0 }, - {"and", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"seg_es", SEG_ES, 0, 0, 0 }, - {"daa", 0, 0, 0, 0 }, - {"sub", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"sub", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"sub", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"sub", 0, PARAM_AL, PARAM_I8, 0 }, - {"sub", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"seg_cs", SEG_CS, 0, 0, 0 }, - {"das", 0, 0, 0, 0 }, + {"and", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"and", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"and", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"and", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"and", 0, PARAM_AL, PARAM_UI8, 0 }, + {"and", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"seg_es", SEG_ES, 0, 0, 0 }, + {"daa", 0, 0, 0, 0 }, + {"sub", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"sub", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"sub", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"sub", 0, PARAM_AL, PARAM_I8, 0 }, + {"sub", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"seg_cs", SEG_CS, 0, 0, 0 }, + {"das", 0, 0, 0, 0 }, // 0x30 - {"xor", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"xor", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"xor", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"xor", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"xor", 0, PARAM_AL, PARAM_UI8, 0 }, - {"xor", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"seg_ss", SEG_SS, 0, 0, 0 }, - {"aaa", 0, 0, 0, 0 }, - {"cmp", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"cmp", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"cmp", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"cmp", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmp", 0, PARAM_AL, PARAM_UI8, 0 }, - {"cmp", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"seg_ds", SEG_DS, 0, 0, 0 }, - {"aas", 0, 0, 0, 0 }, + {"xor", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"xor", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"xor", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"xor", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"xor", 0, PARAM_AL, PARAM_UI8, 0 }, + {"xor", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"seg_ss", SEG_SS, 0, 0, 0 }, + {"aaa", 0, 0, 0, 0 }, + {"cmp", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"cmp", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"cmp", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"cmp", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmp", 0, PARAM_AL, PARAM_UI8, 0 }, + {"cmp", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"seg_ds", SEG_DS, 0, 0, 0 }, + {"aas", 0, 0, 0, 0 }, // 0x40 - {"inc", ISREX, PARAM_EAX, 0, 0 }, - {"inc", ISREX, PARAM_ECX, 0, 0 }, - {"inc", ISREX, PARAM_EDX, 0, 0 }, - {"inc", ISREX, PARAM_EBX, 0, 0 }, - {"inc", ISREX, PARAM_ESP, 0, 0 }, - {"inc", ISREX, PARAM_EBP, 0, 0 }, - {"inc", ISREX, PARAM_ESI, 0, 0 }, - {"inc", ISREX, PARAM_EDI, 0, 0 }, - {"dec", ISREX, PARAM_EAX, 0, 0 }, - {"dec", ISREX, PARAM_ECX, 0, 0 }, - {"dec", ISREX, PARAM_EDX, 0, 0 }, - {"dec", ISREX, PARAM_EBX, 0, 0 }, - {"dec", ISREX, PARAM_ESP, 0, 0 }, - {"dec", ISREX, PARAM_EBP, 0, 0 }, - {"dec", ISREX, PARAM_ESI, 0, 0 }, - {"dec", ISREX, PARAM_EDI, 0, 0 }, + {"inc", ISREX, PARAM_EAX, 0, 0 }, + {"inc", ISREX, PARAM_ECX, 0, 0 }, + {"inc", ISREX, PARAM_EDX, 0, 0 }, + {"inc", ISREX, PARAM_EBX, 0, 0 }, + {"inc", ISREX, PARAM_ESP, 0, 0 }, + {"inc", ISREX, PARAM_EBP, 0, 0 }, + {"inc", ISREX, PARAM_ESI, 0, 0 }, + {"inc", ISREX, PARAM_EDI, 0, 0 }, + {"dec", ISREX, PARAM_EAX, 0, 0 }, + {"dec", ISREX, PARAM_ECX, 0, 0 }, + {"dec", ISREX, PARAM_EDX, 0, 0 }, + {"dec", ISREX, PARAM_EBX, 0, 0 }, + {"dec", ISREX, PARAM_ESP, 0, 0 }, + {"dec", ISREX, PARAM_EBP, 0, 0 }, + {"dec", ISREX, PARAM_ESI, 0, 0 }, + {"dec", ISREX, PARAM_EDI, 0, 0 }, // 0x50 - {"push", ALWAYS64, PARAM_EAX, 0, 0 }, - {"push", ALWAYS64, PARAM_ECX, 0, 0 }, - {"push", ALWAYS64, PARAM_EDX, 0, 0 }, - {"push", ALWAYS64, PARAM_EBX, 0, 0 }, - {"push", ALWAYS64, PARAM_ESP, 0, 0 }, - {"push", ALWAYS64, PARAM_EBP, 0, 0 }, - {"push", ALWAYS64, PARAM_ESI, 0, 0 }, - {"push", ALWAYS64, PARAM_EDI, 0, 0 }, - {"pop", ALWAYS64, PARAM_EAX, 0, 0 }, - {"pop", ALWAYS64, PARAM_ECX, 0, 0 }, - {"pop", ALWAYS64, PARAM_EDX, 0, 0 }, - {"pop", ALWAYS64, PARAM_EBX, 0, 0 }, - {"pop", ALWAYS64, PARAM_ESP, 0, 0 }, - {"pop", ALWAYS64, PARAM_EBP, 0, 0 }, - {"pop", ALWAYS64, PARAM_ESI, 0, 0 }, - {"pop", ALWAYS64, PARAM_EDI, 0, 0 }, + {"push", ALWAYS64, PARAM_EAX, 0, 0 }, + {"push", ALWAYS64, PARAM_ECX, 0, 0 }, + {"push", ALWAYS64, PARAM_EDX, 0, 0 }, + {"push", ALWAYS64, PARAM_EBX, 0, 0 }, + {"push", ALWAYS64, PARAM_ESP, 0, 0 }, + {"push", ALWAYS64, PARAM_EBP, 0, 0 }, + {"push", ALWAYS64, PARAM_ESI, 0, 0 }, + {"push", ALWAYS64, PARAM_EDI, 0, 0 }, + {"pop", ALWAYS64, PARAM_EAX, 0, 0 }, + {"pop", ALWAYS64, PARAM_ECX, 0, 0 }, + {"pop", ALWAYS64, PARAM_EDX, 0, 0 }, + {"pop", ALWAYS64, PARAM_EBX, 0, 0 }, + {"pop", ALWAYS64, PARAM_ESP, 0, 0 }, + {"pop", ALWAYS64, PARAM_EBP, 0, 0 }, + {"pop", ALWAYS64, PARAM_ESI, 0, 0 }, + {"pop", ALWAYS64, PARAM_EDI, 0, 0 }, // 0x60 - {"pusha\0pushad\0<invalid>",VAR_NAME,0, 0, 0 }, - {"popa\0popad\0<invalid>", VAR_NAME,0, 0, 0 }, - {"bound", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"arpl", MODRM | SPECIAL64_ENT(0),PARAM_RM, PARAM_REG16, 0 }, - {"seg_fs", SEG_FS, 0, 0, 0 }, - {"seg_gs", SEG_GS, 0, 0, 0 }, - {"op_size", OP_SIZE, 0, 0, 0 }, - {"addr_size", ADDR_SIZE, 0, 0, 0 }, - {"push", 0, PARAM_IMM, 0, 0 }, - {"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_IMM }, - {"push", 0, PARAM_I8, 0, 0 }, - {"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_I8 }, - {"insb", 0, 0, 0, 0 }, - {"insw\0insd\0insd",VAR_NAME, 0, 0, 0 }, - {"outsb", 0, 0, 0, 0 }, - {"outsw\0outsd\0outsd",VAR_NAME, 0, 0, 0 }, + {"pusha\0pushad\0<invalid>",VAR_NAME,0, 0, 0 }, + {"popa\0popad\0<invalid>", VAR_NAME,0, 0, 0 }, + {"bound", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"arpl", MODRM | SPECIAL64_ENT(0),PARAM_RM, PARAM_REG16, 0 }, + {"seg_fs", SEG_FS, 0, 0, 0 }, + {"seg_gs", SEG_GS, 0, 0, 0 }, + {"op_size", OP_SIZE, 0, 0, 0 }, + {"addr_size", ADDR_SIZE, 0, 0, 0 }, + {"push", 0, PARAM_IMM, 0, 0 }, + {"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_IMM }, + {"push", 0, PARAM_I8, 0, 0 }, + {"imul", MODRM, PARAM_REG, PARAM_RM, PARAM_I8 }, + {"insb", 0, 0, 0, 0 }, + {"insw\0insd\0insd",VAR_NAME, 0, 0, 0 }, + {"outsb", 0, 0, 0, 0 }, + {"outsw\0outsd\0outsd",VAR_NAME, 0, 0, 0 }, // 0x70 - {"jo", 0, PARAM_REL8, 0, 0 }, - {"jno", 0, PARAM_REL8, 0, 0 }, - {"jb", 0, PARAM_REL8, 0, 0 }, - {"jae", 0, PARAM_REL8, 0, 0 }, - {"je", 0, PARAM_REL8, 0, 0 }, - {"jne", 0, PARAM_REL8, 0, 0 }, - {"jbe", 0, PARAM_REL8, 0, 0 }, - {"ja", 0, PARAM_REL8, 0, 0 }, - {"js", 0, PARAM_REL8, 0, 0 }, - {"jns", 0, PARAM_REL8, 0, 0 }, - {"jp", 0, PARAM_REL8, 0, 0 }, - {"jnp", 0, PARAM_REL8, 0, 0 }, - {"jl", 0, PARAM_REL8, 0, 0 }, - {"jge", 0, PARAM_REL8, 0, 0 }, - {"jle", 0, PARAM_REL8, 0, 0 }, - {"jg", 0, PARAM_REL8, 0, 0 }, + {"jo", 0, PARAM_REL8, 0, 0 }, + {"jno", 0, PARAM_REL8, 0, 0 }, + {"jb", 0, PARAM_REL8, 0, 0 }, + {"jae", 0, PARAM_REL8, 0, 0 }, + {"je", 0, PARAM_REL8, 0, 0 }, + {"jne", 0, PARAM_REL8, 0, 0 }, + {"jbe", 0, PARAM_REL8, 0, 0 }, + {"ja", 0, PARAM_REL8, 0, 0 }, + {"js", 0, PARAM_REL8, 0, 0 }, + {"jns", 0, PARAM_REL8, 0, 0 }, + {"jp", 0, PARAM_REL8, 0, 0 }, + {"jnp", 0, PARAM_REL8, 0, 0 }, + {"jl", 0, PARAM_REL8, 0, 0 }, + {"jge", 0, PARAM_REL8, 0, 0 }, + {"jle", 0, PARAM_REL8, 0, 0 }, + {"jg", 0, PARAM_REL8, 0, 0 }, // 0x80 - {"group80", GROUP, 0, 0, 0 }, - {"group81", GROUP, 0, 0, 0 }, - {"group80", GROUP, 0, 0, 0 }, - {"group83", GROUP, 0, 0, 0 }, - {"test", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"test", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"xchg", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"xchg", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"mov", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"mov", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"mov", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"mov", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"mov", MODRM, PARAM_RM, PARAM_SREG, 0 }, - {"lea", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"mov", MODRM, PARAM_SREG, PARAM_RM, 0 }, - {"pop", MODRM, PARAM_RM, 0, 0 }, + {"group80", GROUP, 0, 0, 0 }, + {"group81", GROUP, 0, 0, 0 }, + {"group80", GROUP, 0, 0, 0 }, + {"group83", GROUP, 0, 0, 0 }, + {"test", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"test", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"xchg", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"xchg", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"mov", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"mov", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"mov", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"mov", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"mov", MODRM, PARAM_RM, PARAM_SREG, 0 }, + {"lea", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"mov", MODRM, PARAM_SREG, PARAM_RM, 0 }, + {"pop", MODRM, PARAM_RM, 0, 0 }, // 0x90 - {"nop\0???\0???\0pause", VAR_NAME4, 0, 0, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_ECX, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_EDX, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_EBX, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_ESP, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_EBP, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_ESI, 0 }, - {"xchg", 0, PARAM_EAX, PARAM_EDI, 0 }, - {"cbw\0cwde\0cdqe", VAR_NAME, 0, 0, 0 }, - {"cwd\0cdq\0cqo", VAR_NAME, 0, 0, 0 }, - {"call", ALWAYS64, PARAM_ADDR, 0, 0, DASMFLAG_STEP_OVER}, - {"wait", 0, 0, 0, 0 }, - {"pushf\0pushfd\0pushfq",VAR_NAME, 0, 0, 0 }, - {"popf\0popfd\0popfq",VAR_NAME, 0, 0, 0 }, - {"sahf", 0, 0, 0, 0 }, - {"lahf", 0, 0, 0, 0 }, + {"nop\0???\0???\0pause", VAR_NAME4, 0, 0, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_ECX, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_EDX, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_EBX, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_ESP, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_EBP, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_ESI, 0 }, + {"xchg", 0, PARAM_EAX, PARAM_EDI, 0 }, + {"cbw\0cwde\0cdqe", VAR_NAME, 0, 0, 0 }, + {"cwd\0cdq\0cqo", VAR_NAME, 0, 0, 0 }, + {"call", ALWAYS64, PARAM_ADDR, 0, 0, DASMFLAG_STEP_OVER}, + {"wait", 0, 0, 0, 0 }, + {"pushf\0pushfd\0pushfq",VAR_NAME, 0, 0, 0 }, + {"popf\0popfd\0popfq",VAR_NAME, 0, 0, 0 }, + {"sahf", 0, 0, 0, 0 }, + {"lahf", 0, 0, 0, 0 }, // 0xa0 - {"mov", 0, PARAM_AL, PARAM_MEM_OFFS, 0 }, - {"mov", 0, PARAM_EAX, PARAM_MEM_OFFS, 0 }, - {"mov", 0, PARAM_MEM_OFFS, PARAM_AL, 0 }, - {"mov", 0, PARAM_MEM_OFFS, PARAM_EAX, 0 }, - {"movsb", 0, 0, 0, 0 }, - {"movsw\0movsd\0movsq",VAR_NAME, 0, 0, 0 }, - {"cmpsb", 0, 0, 0, 0 }, - {"cmpsw\0cmpsd\0cmpsq",VAR_NAME, 0, 0, 0 }, - {"test", 0, PARAM_AL, PARAM_UI8, 0 }, - {"test", 0, PARAM_EAX, PARAM_IMM, 0 }, - {"stosb", 0, 0, 0, 0 }, - {"stosw\0stosd\0stosq",VAR_NAME, 0, 0, 0 }, - {"lodsb", 0, 0, 0, 0 }, - {"lodsw\0lodsd\0lodsq",VAR_NAME, 0, 0, 0 }, - {"scasb", 0, 0, 0, 0 }, - {"scasw\0scasd\0scasq",VAR_NAME, 0, 0, 0 }, + {"mov", 0, PARAM_AL, PARAM_MEM_OFFS, 0 }, + {"mov", 0, PARAM_EAX, PARAM_MEM_OFFS, 0 }, + {"mov", 0, PARAM_MEM_OFFS, PARAM_AL, 0 }, + {"mov", 0, PARAM_MEM_OFFS, PARAM_EAX, 0 }, + {"movsb", 0, 0, 0, 0 }, + {"movsw\0movsd\0movsq",VAR_NAME, 0, 0, 0 }, + {"cmpsb", 0, 0, 0, 0 }, + {"cmpsw\0cmpsd\0cmpsq",VAR_NAME, 0, 0, 0 }, + {"test", 0, PARAM_AL, PARAM_UI8, 0 }, + {"test", 0, PARAM_EAX, PARAM_IMM, 0 }, + {"stosb", 0, 0, 0, 0 }, + {"stosw\0stosd\0stosq",VAR_NAME, 0, 0, 0 }, + {"lodsb", 0, 0, 0, 0 }, + {"lodsw\0lodsd\0lodsq",VAR_NAME, 0, 0, 0 }, + {"scasb", 0, 0, 0, 0 }, + {"scasw\0scasd\0scasq",VAR_NAME, 0, 0, 0 }, // 0xb0 - {"mov", 0, PARAM_AL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_CL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_DL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_BL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_AH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_CH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_DH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_BH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_EAX, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_ECX, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_EDX, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_EBX, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_ESP, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_EBP, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_ESI, PARAM_IMM64, 0 }, - {"mov", 0, PARAM_EDI, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_AL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_CL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_DL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_BL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_AH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_CH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_DH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_BH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_EAX, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_ECX, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_EDX, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_EBX, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_ESP, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_EBP, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_ESI, PARAM_IMM64, 0 }, + {"mov", 0, PARAM_EDI, PARAM_IMM64, 0 }, // 0xc0 - {"groupC0", GROUP, 0, 0, 0 }, - {"groupC1", GROUP, 0, 0, 0 }, - {"ret", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, - {"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, - {"les", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"lds", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"mov", MODRM, PARAM_RMPTR, PARAM_IMM, 0 }, - {"enter", 0, PARAM_I16, PARAM_UI8, 0 }, - {"leave", 0, 0, 0, 0 }, - {"retf", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, - {"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, - {"int 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER}, - {"int", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, - {"into", 0, 0, 0, 0 }, - {"iret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"groupC0", GROUP, 0, 0, 0 }, + {"groupC1", GROUP, 0, 0, 0 }, + {"ret", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, + {"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"les", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"lds", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"mov", MODRM, PARAM_RMPTR, PARAM_IMM, 0 }, + {"enter", 0, PARAM_I16, PARAM_UI8, 0 }, + {"leave", 0, 0, 0, 0 }, + {"retf", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, + {"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"int 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER}, + {"int", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, + {"into", 0, 0, 0, 0 }, + {"iret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, // 0xd0 - {"groupD0", GROUP, 0, 0, 0 }, - {"groupD1", GROUP, 0, 0, 0 }, - {"groupD2", GROUP, 0, 0, 0 }, - {"groupD3", GROUP, 0, 0, 0 }, - {"aam", 0, PARAM_I8, 0, 0 }, - {"aad", 0, PARAM_I8, 0, 0 }, - {"salc", 0, 0, 0, 0 }, //AMD docs name it - {"xlat", 0, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, + {"groupD0", GROUP, 0, 0, 0 }, + {"groupD1", GROUP, 0, 0, 0 }, + {"groupD2", GROUP, 0, 0, 0 }, + {"groupD3", GROUP, 0, 0, 0 }, + {"aam", 0, PARAM_I8, 0, 0 }, + {"aad", 0, PARAM_I8, 0, 0 }, + {"salc", 0, 0, 0, 0 }, //AMD docs name it + {"xlat", 0, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, // 0xe0 - {"loopne", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"loopz", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"loop", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"jcxz\0jecxz\0jrcxz",VAR_NAME, PARAM_REL8, 0, 0 }, - {"in", 0, PARAM_AL, PARAM_UI8, 0 }, - {"in", 0, PARAM_EAX, PARAM_UI8, 0 }, - {"out", 0, PARAM_UI8, PARAM_AL, 0 }, - {"out", 0, PARAM_UI8, PARAM_EAX, 0 }, - {"call", 0, PARAM_REL, 0, 0, DASMFLAG_STEP_OVER}, - {"jmp", 0, PARAM_REL, 0, 0 }, - {"jmp", 0, PARAM_ADDR, 0, 0 }, - {"jmp", 0, PARAM_REL8, 0, 0 }, - {"in", 0, PARAM_AL, PARAM_DX, 0 }, - {"in", 0, PARAM_EAX, PARAM_DX, 0 }, - {"out", 0, PARAM_DX, PARAM_AL, 0 }, - {"out", 0, PARAM_DX, PARAM_EAX, 0 }, + {"loopne", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"loopz", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"loop", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"jcxz\0jecxz\0jrcxz",VAR_NAME, PARAM_REL8, 0, 0 }, + {"in", 0, PARAM_AL, PARAM_UI8, 0 }, + {"in", 0, PARAM_EAX, PARAM_UI8, 0 }, + {"out", 0, PARAM_UI8, PARAM_AL, 0 }, + {"out", 0, PARAM_UI8, PARAM_EAX, 0 }, + {"call", 0, PARAM_REL, 0, 0, DASMFLAG_STEP_OVER}, + {"jmp", 0, PARAM_REL, 0, 0 }, + {"jmp", 0, PARAM_ADDR, 0, 0 }, + {"jmp", 0, PARAM_REL8, 0, 0 }, + {"in", 0, PARAM_AL, PARAM_DX, 0 }, + {"in", 0, PARAM_EAX, PARAM_DX, 0 }, + {"out", 0, PARAM_DX, PARAM_AL, 0 }, + {"out", 0, PARAM_DX, PARAM_EAX, 0 }, // 0xf0 - {"lock", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"repne", PREFIX, 0, 0, 0 }, - {"rep", PREFIX, 0, 0, 0 }, - {"hlt", 0, 0, 0, 0 }, - {"cmc", 0, 0, 0, 0 }, - {"groupF6", GROUP, 0, 0, 0 }, - {"groupF7", GROUP, 0, 0, 0 }, - {"clc", 0, 0, 0, 0 }, - {"stc", 0, 0, 0, 0 }, - {"cli", 0, 0, 0, 0 }, - {"sti", 0, 0, 0, 0 }, - {"cld", 0, 0, 0, 0 }, - {"std", 0, 0, 0, 0 }, - {"groupFE", GROUP, 0, 0, 0 }, - {"groupFF", GROUP, 0, 0, 0 } + {"lock", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"repne", PREFIX, 0, 0, 0 }, + {"rep", PREFIX, 0, 0, 0 }, + {"hlt", 0, 0, 0, 0 }, + {"cmc", 0, 0, 0, 0 }, + {"groupF6", GROUP, 0, 0, 0 }, + {"groupF7", GROUP, 0, 0, 0 }, + {"clc", 0, 0, 0, 0 }, + {"stc", 0, 0, 0, 0 }, + {"cli", 0, 0, 0, 0 }, + {"sti", 0, 0, 0, 0 }, + {"cld", 0, 0, 0, 0 }, + {"std", 0, 0, 0, 0 }, + {"groupFE", GROUP, 0, 0, 0 }, + {"groupFF", GROUP, 0, 0, 0 } }; static const I386_OPCODE x64_opcode_alt[] = { - {"movsxd", MODRM | ALWAYS64,PARAM_REG, PARAM_RMPTR32, 0 }, + {"movsxd", MODRM | ALWAYS64,PARAM_REG, PARAM_RMPTR32, 0 }, }; static const I386_OPCODE i386_opcode_table2[256] = { // 0x00 - {"group0F00", GROUP, 0, 0, 0 }, - {"group0F01", GROUP, 0, 0, 0 }, - {"lar", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"lsl", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"???", 0, 0, 0, 0 }, - {"syscall", 0, 0, 0, 0 }, - {"clts", 0, 0, 0, 0 }, - {"sysret", 0, 0, 0, 0 }, - {"invd", 0, 0, 0, 0 }, - {"wbinvd", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"ud2", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"group0F0D", GROUP, 0, 0, 0 }, //AMD only - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"group0F00", GROUP, 0, 0, 0 }, + {"group0F01", GROUP, 0, 0, 0 }, + {"lar", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"lsl", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"???", 0, 0, 0, 0 }, + {"syscall", 0, 0, 0, 0 }, + {"clts", 0, 0, 0, 0 }, + {"sysret", 0, 0, 0, 0 }, + {"invd", 0, 0, 0, 0 }, + {"wbinvd", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"ud2", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"group0F0D", GROUP, 0, 0, 0 }, //AMD only + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x10 {"movups\0" - "movupd\0" - "movsd\0" - "movss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "movupd\0" + "movsd\0" + "movss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"movups\0" - "movupd\0" - "movsd\0" - "movss", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, + "movupd\0" + "movsd\0" + "movss", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, {"movlps\0" - "movlpd\0" - "movddup\0" - "movsldup", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "movlpd\0" + "movddup\0" + "movsldup", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"movlps\0" - "movlpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, + "movlpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, {"unpcklps\0" - "unpcklpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "unpcklpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"unpckhps\0" - "unpckhpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "unpckhpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"movhps\0" - "movhpd\0" - "???\0" - "movshdup", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, + "movhpd\0" + "???\0" + "movshdup", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, {"movhps\0" - "movhpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, - {"group0F18", GROUP, 0, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, - {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + "movhpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + {"group0F18", GROUP, 0, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, + {"nop_hint", 0, PARAM_RMPTR8, 0, 0 }, // 0x20 - {"mov", MODRM, PARAM_REG2_32, PARAM_CREG, 0 }, - {"mov", MODRM, PARAM_REG2_32, PARAM_DREG, 0 }, - {"mov", MODRM, PARAM_CREG, PARAM_REG2_32, 0 }, - {"mov", MODRM, PARAM_DREG, PARAM_REG2_32, 0 }, - {"mov", MODRM, PARAM_REG2_32, PARAM_TREG, 0 }, - {"???", 0, 0, 0, 0 }, - {"mov", MODRM, PARAM_TREG, PARAM_REG2_32, 0 }, - {"???", 0, 0, 0, 0 }, + {"mov", MODRM, PARAM_REG2_32, PARAM_CREG, 0 }, + {"mov", MODRM, PARAM_REG2_32, PARAM_DREG, 0 }, + {"mov", MODRM, PARAM_CREG, PARAM_REG2_32, 0 }, + {"mov", MODRM, PARAM_DREG, PARAM_REG2_32, 0 }, + {"mov", MODRM, PARAM_REG2_32, PARAM_TREG, 0 }, + {"???", 0, 0, 0, 0 }, + {"mov", MODRM, PARAM_TREG, PARAM_REG2_32, 0 }, + {"???", 0, 0, 0, 0 }, {"movaps\0" - "movapd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "movapd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"movaps\0" - "movapd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, + "movapd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, {"cvtpi2ps\0" - "cvtpi2pd\0" - "cvtsi2sd\0" - "cvtsi2ss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_RMXMM, 0 }, + "cvtpi2pd\0" + "cvtsi2sd\0" + "cvtsi2ss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_RMXMM, 0 }, {"movntps\0" - "movntpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, + "movntpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMMM, PARAM_XMM, 0 }, {"cvttps2pi\0" - "cvttpd2pi\0" - "cvttsd2si\0" - "cvttss2si", MODRM|VAR_NAME4,PARAM_REGORXMM, PARAM_XMMM, 0 }, + "cvttpd2pi\0" + "cvttsd2si\0" + "cvttss2si", MODRM|VAR_NAME4,PARAM_REGORXMM, PARAM_XMMM, 0 }, {"cvtps2pi\0" - "cvtpd2pi\0" - "cvtsd2si\0" - "cvtss2si", MODRM|VAR_NAME4,PARAM_REGORXMM, PARAM_XMMM, 0 }, + "cvtpd2pi\0" + "cvtsd2si\0" + "cvtss2si", MODRM|VAR_NAME4,PARAM_REGORXMM, PARAM_XMMM, 0 }, {"ucomiss\0" - "ucomisd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "ucomisd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"comiss\0" - "comisd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "comisd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, // 0x30 - {"wrmsr", 0, 0, 0, 0 }, - {"rdtsc", 0, 0, 0, 0 }, - {"rdmsr", 0, 0, 0, 0 }, - {"rdpmc", 0, 0, 0, 0 }, - {"sysenter", 0, 0, 0, 0 }, - {"sysexit", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"three_byte", THREE_BYTE, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"three_byte", THREE_BYTE, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"wrmsr", 0, 0, 0, 0 }, + {"rdtsc", 0, 0, 0, 0 }, + {"rdmsr", 0, 0, 0, 0 }, + {"rdpmc", 0, 0, 0, 0 }, + {"sysenter", 0, 0, 0, 0 }, + {"sysexit", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"three_byte", THREE_BYTE, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"three_byte", THREE_BYTE, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x40 - {"cmovo", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovno", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovb", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovae", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmove", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovne", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovbe", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmova", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovs", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovns", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovpe", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovpo", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovl", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovge", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovle", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"cmovg", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovo", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovno", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovb", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovae", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmove", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovne", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovbe", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmova", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovs", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovns", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovpe", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovpo", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovl", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovge", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovle", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"cmovg", MODRM, PARAM_REG, PARAM_RM, 0 }, // 0x50 {"movmskps\0" - "movmskpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_REG3264, PARAM_XMMM, 0 }, + "movmskpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_REG3264, PARAM_XMMM, 0 }, {"sqrtps\0" - "sqrtpd\0" - "sqrtsd\0" - "sqrtss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "sqrtpd\0" + "sqrtsd\0" + "sqrtss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"rsqrtps\0" - "???\0" - "???\0" - "rsqrtss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "???\0" + "???\0" + "rsqrtss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"rcpps\0" - "???\0" - "???\0" - "rcpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "???\0" + "???\0" + "rcpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"andps\0" - "andpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "andpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"andnps\0" - "andnpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "andnpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"orps\0" - "orpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "orpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"xorps\0" - "xorpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "xorpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"addps\0" - "addpd\0" - "addsd\0" - "addss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "addpd\0" + "addsd\0" + "addss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"mulps\0" - "mulpd\0" - "mulsd\0" - "mulss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "mulpd\0" + "mulsd\0" + "mulss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"cvtps2pd\0" - "cvtpd2ps\0" - "cvtsd2ss\0" - "cvtss2sd", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "cvtpd2ps\0" + "cvtsd2ss\0" + "cvtss2sd", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"cvtdq2ps\0" - "cvtps2dq\0" - "???\0" - "cvttps2dq", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "cvtps2dq\0" + "???\0" + "cvttps2dq", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"subps\0" - "subpd\0" - "subsd\0" - "subss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "subpd\0" + "subsd\0" + "subss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"minps\0" - "minpd\0" - "minsd\0" - "minss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "minpd\0" + "minsd\0" + "minss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"divps\0" - "divpd\0" - "divsd\0" - "divss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "divpd\0" + "divsd\0" + "divss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"maxps\0" - "maxpd\0" - "maxsd\0" - "maxss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + "maxpd\0" + "maxsd\0" + "maxss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, // 0x60 - {"punpcklbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"punpcklwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"punpckldq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"packsswb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pcmpgtb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pcmpgtw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pcmpgtd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"packuswb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"punpckhbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"punpckhwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"punpckhdq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"packssdw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"???\0" - "punpcklqdq\0" - "???\0" - "???\0", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "punpckhqdq\0" - "???\0" - "???\0", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"movd", MODRM, PARAM_MMX, PARAM_RM, 0 }, + {"punpcklbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"punpcklwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"punpckldq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"packsswb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pcmpgtb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pcmpgtw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pcmpgtd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"packuswb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"punpckhbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"punpckhwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"punpckhdq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"packssdw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"???\0" + "punpcklqdq\0" + "???\0" + "???\0", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "punpckhqdq\0" + "???\0" + "???\0", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"movd", MODRM, PARAM_MMX, PARAM_RM, 0 }, {"movq\0" - "movdqa\0" - "???\0" - "movdqu", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, + "movdqa\0" + "???\0" + "movdqu", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, // 0x70 {"pshufw\0" - "pshufd\0" - "pshuflw\0" - "pshufhw", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, PARAM_I8 }, - {"group0F71", GROUP, 0, 0, 0 }, - {"group0F72", GROUP, 0, 0, 0 }, - {"group0F73", GROUP, 0, 0, 0 }, - {"pcmpeqb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pcmpeqw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pcmpeqd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"emms", 0, 0, 0, 0 }, - {"vmread", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"vmwrite", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "haddpd\0" - "haddps\0" - "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, - {"???\0" - "hsubpd\0" - "hsubps\0" - "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, + "pshufd\0" + "pshuflw\0" + "pshufhw", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, PARAM_I8 }, + {"group0F71", GROUP, 0, 0, 0 }, + {"group0F72", GROUP, 0, 0, 0 }, + {"group0F73", GROUP, 0, 0, 0 }, + {"pcmpeqb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pcmpeqw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pcmpeqd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"emms", 0, 0, 0, 0 }, + {"vmread", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"vmwrite", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "haddpd\0" + "haddps\0" + "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, + {"???\0" + "hsubpd\0" + "hsubps\0" + "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, {"movd\0" - "movd\0" - "???\0" - "movq", MODRM|VAR_NAME4,PARAM_RM, PARAM_MMX, 0 }, + "movd\0" + "???\0" + "movq", MODRM|VAR_NAME4,PARAM_RM, PARAM_MMX, 0 }, {"movq\0" - "movdqa\0" - "???\0" - "movdqu", MODRM|VAR_NAME4,PARAM_MMXM, PARAM_MMX, 0 }, + "movdqa\0" + "???\0" + "movdqu", MODRM|VAR_NAME4,PARAM_MMXM, PARAM_MMX, 0 }, // 0x80 - {"jo", 0, PARAM_REL, 0, 0 }, - {"jno", 0, PARAM_REL, 0, 0 }, - {"jb", 0, PARAM_REL, 0, 0 }, - {"jae", 0, PARAM_REL, 0, 0 }, - {"je", 0, PARAM_REL, 0, 0 }, - {"jne", 0, PARAM_REL, 0, 0 }, - {"jbe", 0, PARAM_REL, 0, 0 }, - {"ja", 0, PARAM_REL, 0, 0 }, - {"js", 0, PARAM_REL, 0, 0 }, - {"jns", 0, PARAM_REL, 0, 0 }, - {"jp", 0, PARAM_REL, 0, 0 }, - {"jnp", 0, PARAM_REL, 0, 0 }, - {"jl", 0, PARAM_REL, 0, 0 }, - {"jge", 0, PARAM_REL, 0, 0 }, - {"jle", 0, PARAM_REL, 0, 0 }, - {"jg", 0, PARAM_REL, 0, 0 }, + {"jo", 0, PARAM_REL, 0, 0 }, + {"jno", 0, PARAM_REL, 0, 0 }, + {"jb", 0, PARAM_REL, 0, 0 }, + {"jae", 0, PARAM_REL, 0, 0 }, + {"je", 0, PARAM_REL, 0, 0 }, + {"jne", 0, PARAM_REL, 0, 0 }, + {"jbe", 0, PARAM_REL, 0, 0 }, + {"ja", 0, PARAM_REL, 0, 0 }, + {"js", 0, PARAM_REL, 0, 0 }, + {"jns", 0, PARAM_REL, 0, 0 }, + {"jp", 0, PARAM_REL, 0, 0 }, + {"jnp", 0, PARAM_REL, 0, 0 }, + {"jl", 0, PARAM_REL, 0, 0 }, + {"jge", 0, PARAM_REL, 0, 0 }, + {"jle", 0, PARAM_REL, 0, 0 }, + {"jg", 0, PARAM_REL, 0, 0 }, // 0x90 - {"seto", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setno", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setb", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setae", MODRM, PARAM_RMPTR8, 0, 0 }, - {"sete", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setne", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setbe", MODRM, PARAM_RMPTR8, 0, 0 }, - {"seta", MODRM, PARAM_RMPTR8, 0, 0 }, - {"sets", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setns", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setp", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setnp", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setl", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setge", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setle", MODRM, PARAM_RMPTR8, 0, 0 }, - {"setg", MODRM, PARAM_RMPTR8, 0, 0 }, + {"seto", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setno", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setb", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setae", MODRM, PARAM_RMPTR8, 0, 0 }, + {"sete", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setne", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setbe", MODRM, PARAM_RMPTR8, 0, 0 }, + {"seta", MODRM, PARAM_RMPTR8, 0, 0 }, + {"sets", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setns", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setp", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setnp", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setl", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setge", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setle", MODRM, PARAM_RMPTR8, 0, 0 }, + {"setg", MODRM, PARAM_RMPTR8, 0, 0 }, // 0xa0 - {"push fs", 0, 0, 0, 0 }, - {"pop fs", 0, 0, 0, 0 }, - {"cpuid", 0, 0, 0, 0 }, - {"bt", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, - {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"push gs", 0, 0, 0, 0 }, - {"pop gs", 0, 0, 0, 0 }, - {"rsm", 0, 0, 0, 0 }, - {"bts", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, - {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, - {"group0FAE", GROUP, 0, 0, 0 }, - {"imul", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"push fs", 0, 0, 0, 0 }, + {"pop fs", 0, 0, 0, 0 }, + {"cpuid", 0, 0, 0, 0 }, + {"bt", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, + {"shld", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"push gs", 0, 0, 0, 0 }, + {"pop gs", 0, 0, 0, 0 }, + {"rsm", 0, 0, 0, 0 }, + {"bts", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_I8 }, + {"shrd", MODRM, PARAM_RM, PARAM_REG, PARAM_CL }, + {"group0FAE", GROUP, 0, 0, 0 }, + {"imul", MODRM, PARAM_REG, PARAM_RM, 0 }, // 0xb0 - {"cmpxchg", MODRM, PARAM_RM8, PARAM_REG, 0 }, - {"cmpxchg", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"lss", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"btr", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"lfs", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"lgs", MODRM, PARAM_REG, PARAM_RM, 0 }, - {"movzx", MODRM, PARAM_REG, PARAM_RMPTR8, 0 }, - {"movzx", MODRM, PARAM_REG, PARAM_RMPTR16, 0 }, - {"???\0" - "???\0" - "???\0" - "popcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM16, 0 }, - {"ud2", 0, 0, 0, 0 }, - {"group0FBA", GROUP, 0, 0, 0 }, - {"btc", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"cmpxchg", MODRM, PARAM_RM8, PARAM_REG, 0 }, + {"cmpxchg", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"lss", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"btr", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"lfs", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"lgs", MODRM, PARAM_REG, PARAM_RM, 0 }, + {"movzx", MODRM, PARAM_REG, PARAM_RMPTR8, 0 }, + {"movzx", MODRM, PARAM_REG, PARAM_RMPTR16, 0 }, + {"???\0" + "???\0" + "???\0" + "popcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM16, 0 }, + {"ud2", 0, 0, 0, 0 }, + {"group0FBA", GROUP, 0, 0, 0 }, + {"btc", MODRM, PARAM_RM, PARAM_REG, 0 }, {"bsf\0" - "???\0" - "???\0" - "tzcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM, 0 }, + "???\0" + "???\0" + "tzcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM, 0 }, {"bsr\0" - "???\0" - "???\0" - "lzcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM, 0, DASMFLAG_STEP_OVER}, - {"movsx", MODRM, PARAM_REG, PARAM_RMPTR8, 0 }, - {"movsx", MODRM, PARAM_REG, PARAM_RMPTR16, 0 }, + "???\0" + "???\0" + "lzcnt", MODRM|VAR_NAME4, PARAM_REG, PARAM_RM, 0, DASMFLAG_STEP_OVER}, + {"movsx", MODRM, PARAM_REG, PARAM_RMPTR8, 0 }, + {"movsx", MODRM, PARAM_REG, PARAM_RMPTR16, 0 }, // 0xc0 - {"xadd", MODRM, PARAM_RM8, PARAM_REG, 0 }, - {"xadd", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"xadd", MODRM, PARAM_RM8, PARAM_REG, 0 }, + {"xadd", MODRM, PARAM_RM, PARAM_REG, 0 }, {"cmpps\0" - "cmppd\0" - "cmpsd\0" - "cmpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, - {"movnti", MODRM, PARAM_RM, PARAM_REG, 0 }, - {"pinsrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, - {"pextrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, + "cmppd\0" + "cmpsd\0" + "cmpss", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + {"movnti", MODRM, PARAM_RM, PARAM_REG, 0 }, + {"pinsrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, + {"pextrw", MODRM, PARAM_MMX, PARAM_MMXM, PARAM_I8 }, {"shufps\0" - "shufpd\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, PARAM_I8 }, - {"group0FC7", GROUP, 0, 0, 0 }, - {"bswap", 0, PARAM_EAX, 0, 0 }, - {"bswap", 0, PARAM_ECX, 0, 0 }, - {"bswap", 0, PARAM_EDX, 0, 0 }, - {"bswap", 0, PARAM_EBX, 0, 0 }, - {"bswap", 0, PARAM_ESP, 0, 0 }, - {"bswap", 0, PARAM_EBP, 0, 0 }, - {"bswap", 0, PARAM_ESI, 0, 0 }, - {"bswap", 0, PARAM_EDI, 0, 0 }, + "shufpd\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, PARAM_I8 }, + {"group0FC7", GROUP, 0, 0, 0 }, + {"bswap", 0, PARAM_EAX, 0, 0 }, + {"bswap", 0, PARAM_ECX, 0, 0 }, + {"bswap", 0, PARAM_EDX, 0, 0 }, + {"bswap", 0, PARAM_EBX, 0, 0 }, + {"bswap", 0, PARAM_ESP, 0, 0 }, + {"bswap", 0, PARAM_EBP, 0, 0 }, + {"bswap", 0, PARAM_ESI, 0, 0 }, + {"bswap", 0, PARAM_EDI, 0, 0 }, // 0xd0 {"???\0" - "addsubpd\0" - "addsubps\0" - "???\0", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, - {"psrlw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psrld", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psrlq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmullw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"???\0" - "movq\0" - "movdq2q\0" - "movq2dq", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, - {"pmovmskb", MODRM, PARAM_REG3264, PARAM_MMXM, 0 }, - {"psubusb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psubusw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pminub", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pand", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddusb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddusw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmaxub", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pandn", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + "addsubpd\0" + "addsubps\0" + "???\0", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + {"psrlw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psrld", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psrlq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmullw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"???\0" + "movq\0" + "movdq2q\0" + "movq2dq", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, + {"pmovmskb", MODRM, PARAM_REG3264, PARAM_MMXM, 0 }, + {"psubusb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psubusw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pminub", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pand", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddusb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddusw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmaxub", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pandn", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, // 0xe0 - {"pavgb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psraw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psrad", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pavgw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmulhuw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmulhw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"???\0" - "cvttpd2dq\0" - "cvtpd2dq\0" - "cvtdq2pd", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + {"pavgb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psraw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psrad", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pavgw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmulhuw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmulhw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"???\0" + "cvttpd2dq\0" + "cvtpd2dq\0" + "cvtdq2pd", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, {"movntq\0" - "movntdq\0" - "???\0" - "???\0", MODRM|VAR_NAME4, PARAM_M64, PARAM_MMX, 0 }, - {"psubsb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psubsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pminsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"por", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddsb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmaxsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pxor", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + "movntdq\0" + "???\0" + "???\0", MODRM|VAR_NAME4, PARAM_M64, PARAM_MMX, 0 }, + {"psubsb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psubsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pminsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"por", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddsb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmaxsw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pxor", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, // 0xf0 {"???\0" - "???\0" - "lddqu\0" - "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, - {"psllw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pslld", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psllq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmuludq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"pmaddwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psadbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + "???\0" + "lddqu\0" + "???", MODRM|VAR_NAME4,PARAM_XMM, PARAM_XMMM, 0 }, + {"psllw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pslld", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psllq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmuludq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"pmaddwd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psadbw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, {"maskmovq\0" - "maskmovdqu\0" - "???\0" - "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, - {"psubb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psubw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psubd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"psubq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"paddd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, - {"???", 0, 0, 0, 0 } + "maskmovdqu\0" + "???\0" + "???", MODRM|VAR_NAME4,PARAM_MMX, PARAM_MMXM, 0 }, + {"psubb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psubw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psubd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"psubq", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddb", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddw", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"paddd", MODRM, PARAM_MMX, PARAM_MMXM, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE i386_opcode_table0F38[256] = { // 0x00 {"pshufb\0" - "pshufb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pshufb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phaddw\0" - "phaddw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phaddw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phaddd\0" - "phadd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phadd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phaddsw\0" - "phaddsw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phaddsw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"pmaddubsw\0" - "pmaddubsw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pmaddubsw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phsubw\0" - "phsubw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phsubw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phsubd\0" - "phsubd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phsubd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"phsubsw\0" - "phsubsw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "phsubsw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"psignb\0" - "psignb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "psignb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"psignw\0" - "psignw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "psignw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"psignd\0" - "psignd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "psignd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"pmulhrsw\0" - "pmulhrsw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pmulhrsw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x10 {"???\0" - "pblendvb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "blendvps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, - {"???\0" - "blendvpd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "ptest\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pblendvb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "blendvps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, + {"???\0" + "blendvpd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_XMM0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "ptest\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, {"pabsb\0" - "pabsb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pabsb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"pabsw\0" - "pabsw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pabsw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"pabsd\0" - "pabsd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, + "pabsd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, // 0x20 {"???\0" - "pmovsxbw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, - {"???\0" - "pmovsxbd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, - {"???\0" - "pmovsxbq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM16, 0 }, - {"???\0" - "pmovsxwd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, - {"???\0" - "pmovsxwq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, - {"???\0" - "pmovsxdq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "pmuldq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "pcmpeqq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "movntdqa\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "packusdw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pmovsxbw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + {"???\0" + "pmovsxbd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, + {"???\0" + "pmovsxbq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM16, 0 }, + {"???\0" + "pmovsxwd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + {"???\0" + "pmovsxwq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, + {"???\0" + "pmovsxdq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "pmuldq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "pcmpeqq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "movntdqa\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "packusdw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x30 {"???\0" - "pmovzxbw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + "pmovzxbw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, {"???\0" - "pmovzxbd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, + "pmovzxbd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, {"???\0" - "pmovzxbq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM16, 0 }, + "pmovzxbq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM16, 0 }, {"???\0" - "pmovzxwd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + "pmovzxwd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, {"???\0" - "pmovzxwq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, + "pmovzxwq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM32, 0 }, {"???\0" - "pmovzxdq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, - {"???", 0, 0, 0, 0 }, + "pmovzxdq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMM64, 0 }, + {"???", 0, 0, 0, 0 }, {"???\0" - "pcmpgtq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pcmpgtq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pminsb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pminsb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pminsd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pminsd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pminuw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pminuw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pminud\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pminud\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pmaxsb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pmaxsb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pmaxsd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pmaxsd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pmaxuw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pmaxuw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, {"???\0" - "pmaxud\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + "pmaxud\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, // 0x40 {"???\0" - "pmulld\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "phminposuw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pmulld\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "phminposuw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x50 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x60 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x70 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x80 {"???\0" - "invept\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, - {"???\0" - "invvpid\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, - {"???\0" - "invpcid\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "invept\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, + {"???\0" + "invvpid\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, + {"???\0" + "invpcid\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x90 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xa0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xb0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xc0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xd0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "aesimc\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "aesenc\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "aesenclast\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "aesdec\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, - {"???\0" - "aesdeclast\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "aesimc\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "aesenc\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "aesenclast\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "aesdec\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, + {"???\0" + "aesdeclast\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, 0 }, // 0xe0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xf0 {"movbe\0" - "???\0" - "crc32\0" - "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_RMPTR, 0 }, // not quite correct + "???\0" + "crc32\0" + "???", MODRM|VAR_NAME4, PARAM_REG32, PARAM_RMPTR, 0 }, // not quite correct {"movbe\0" - "???\0" - "crc32\0" - "???", MODRM|VAR_NAME4, PARAM_RMPTR, PARAM_REG32, 0 }, // not quite correct - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "???\0" + "crc32\0" + "???", MODRM|VAR_NAME4, PARAM_RMPTR, PARAM_REG32, 0 }, // not quite correct + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, }; static const I386_OPCODE i386_opcode_table0F3A[256] = { // 0x00 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "roundps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "roundpd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "roundss\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "roundsd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "blendps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "blendpd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "pblendw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "roundps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "roundpd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "roundss\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "roundsd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "blendps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "blendpd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "pblendw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, {"palignr\0" - "palignr\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + "palignr\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, // 0x10 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "pextrb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_RM8, PARAM_XMM, PARAM_UI8 }, - {"???\0" - "pextrw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_RM16, PARAM_XMM, PARAM_UI8 }, - {"???\0" - "pextrd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_RM8, PARAM_XMM, PARAM_UI8 }, - {"???\0" - "extractps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_RM32, PARAM_XMM, PARAM_UI8 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "pextrb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_RM8, PARAM_XMM, PARAM_UI8 }, + {"???\0" + "pextrw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_RM16, PARAM_XMM, PARAM_UI8 }, + {"???\0" + "pextrd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_RM8, PARAM_XMM, PARAM_UI8 }, + {"???\0" + "extractps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_RM32, PARAM_XMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x20 {"???\0" - "pinsrb\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM8, PARAM_UI8 }, - {"???\0" - "insertps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM8, PARAM_UI8 }, - {"???\0" - "pinsrd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM32, PARAM_UI8 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pinsrb\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM8, PARAM_UI8 }, + {"???\0" + "insertps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM8, PARAM_UI8 }, + {"???\0" + "pinsrd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_RM32, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x30 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x40 {"???\0" - "dpps\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "dppd\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "mpsadbw\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "pclmulqdq\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "dpps\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "dppd\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "mpsadbw\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "pclmulqdq\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x50 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x60 {"???\0" - "pcmestrm\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "pcmestri\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "pcmistrm\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???\0" - "pcmistri\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + "pcmestrm\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "pcmestri\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "pcmistrm\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???\0" + "pcmistri\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x70 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x80 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x90 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xa0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xb0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xc0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xd0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???\0" - "aeskeygenassist\0" - "???\0" - "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???\0" + "aeskeygenassist\0" + "???\0" + "???", MODRM|VAR_NAME4, PARAM_XMM, PARAM_XMMM, PARAM_UI8 }, // 0xe0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xf0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, }; static const I386_OPCODE group80_table[8] = { - {"add", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"or", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"adc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"sbb", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"and", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"sub", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"xor", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"cmp", 0, PARAM_RMPTR8, PARAM_I8, 0 } + {"add", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"or", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"adc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"sbb", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"and", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"sub", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"xor", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"cmp", 0, PARAM_RMPTR8, PARAM_I8, 0 } }; static const I386_OPCODE group81_table[8] = { - {"add", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"or", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"adc", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"sbb", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"and", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"sub", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"xor", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"cmp", 0, PARAM_RMPTR, PARAM_IMM, 0 } + {"add", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"or", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"adc", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"sbb", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"and", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"sub", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"xor", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"cmp", 0, PARAM_RMPTR, PARAM_IMM, 0 } }; static const I386_OPCODE group83_table[8] = { - {"add", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"or", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"adc", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"sbb", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"and", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"sub", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"xor", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"cmp", 0, PARAM_RMPTR, PARAM_I8, 0 } + {"add", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"or", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"adc", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"sbb", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"and", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"sub", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"xor", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"cmp", 0, PARAM_RMPTR, PARAM_I8, 0 } }; static const I386_OPCODE groupC0_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"rcl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"rcr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"sal", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"sar", 0, PARAM_RMPTR8, PARAM_I8, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"rcl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"rcr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"sal", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"sar", 0, PARAM_RMPTR8, PARAM_I8, 0 } }; static const I386_OPCODE groupC1_table[8] = { - {"rol", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"ror", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"rcl", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"rcr", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"shl", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"shr", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"sal", 0, PARAM_RMPTR, PARAM_I8, 0 }, - {"sar", 0, PARAM_RMPTR, PARAM_I8, 0 } + {"rol", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"ror", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"rcl", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"rcr", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"shl", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"shr", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"sal", 0, PARAM_RMPTR, PARAM_I8, 0 }, + {"sar", 0, PARAM_RMPTR, PARAM_I8, 0 } }; static const I386_OPCODE groupD0_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"rcl", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"rcr", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"sal", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"sar", 0, PARAM_RMPTR8, PARAM_1, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"rcl", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"rcr", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"sal", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"sar", 0, PARAM_RMPTR8, PARAM_1, 0 } }; static const I386_OPCODE groupD1_table[8] = { - {"rol", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"ror", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"rcl", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"rcr", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"shl", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"shr", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"sal", 0, PARAM_RMPTR, PARAM_1, 0 }, - {"sar", 0, PARAM_RMPTR, PARAM_1, 0 } + {"rol", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"ror", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"rcl", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"rcr", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"shl", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"shr", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"sal", 0, PARAM_RMPTR, PARAM_1, 0 }, + {"sar", 0, PARAM_RMPTR, PARAM_1, 0 } }; static const I386_OPCODE groupD2_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"rcl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"rcr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"sal", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"sar", 0, PARAM_RMPTR8, PARAM_CL, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"rcl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"rcr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"sal", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"sar", 0, PARAM_RMPTR8, PARAM_CL, 0 } }; static const I386_OPCODE groupD3_table[8] = { - {"rol", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"ror", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"rcl", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"rcr", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"shl", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"shr", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"sal", 0, PARAM_RMPTR, PARAM_CL, 0 }, - {"sar", 0, PARAM_RMPTR, PARAM_CL, 0 } + {"rol", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"ror", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"rcl", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"rcr", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"shl", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"shr", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"sal", 0, PARAM_RMPTR, PARAM_CL, 0 }, + {"sar", 0, PARAM_RMPTR, PARAM_CL, 0 } }; static const I386_OPCODE groupF6_table[8] = { - {"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"not", 0, PARAM_RMPTR8, 0, 0 }, - {"neg", 0, PARAM_RMPTR8, 0, 0 }, - {"mul", 0, PARAM_RMPTR8, 0, 0 }, - {"imul", 0, PARAM_RMPTR8, 0, 0 }, - {"div", 0, PARAM_RMPTR8, 0, 0 }, - {"idiv", 0, PARAM_RMPTR8, 0, 0 } + {"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"test", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"not", 0, PARAM_RMPTR8, 0, 0 }, + {"neg", 0, PARAM_RMPTR8, 0, 0 }, + {"mul", 0, PARAM_RMPTR8, 0, 0 }, + {"imul", 0, PARAM_RMPTR8, 0, 0 }, + {"div", 0, PARAM_RMPTR8, 0, 0 }, + {"idiv", 0, PARAM_RMPTR8, 0, 0 } }; static const I386_OPCODE groupF7_table[8] = { - {"test", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"test", 0, PARAM_RMPTR, PARAM_IMM, 0 }, - {"not", 0, PARAM_RMPTR, 0, 0 }, - {"neg", 0, PARAM_RMPTR, 0, 0 }, - {"mul", 0, PARAM_RMPTR, 0, 0 }, - {"imul", 0, PARAM_RMPTR, 0, 0 }, - {"div", 0, PARAM_RMPTR, 0, 0 }, - {"idiv", 0, PARAM_RMPTR, 0, 0 } + {"test", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"test", 0, PARAM_RMPTR, PARAM_IMM, 0 }, + {"not", 0, PARAM_RMPTR, 0, 0 }, + {"neg", 0, PARAM_RMPTR, 0, 0 }, + {"mul", 0, PARAM_RMPTR, 0, 0 }, + {"imul", 0, PARAM_RMPTR, 0, 0 }, + {"div", 0, PARAM_RMPTR, 0, 0 }, + {"idiv", 0, PARAM_RMPTR, 0, 0 } }; static const I386_OPCODE groupFE_table[8] = { - {"inc", 0, PARAM_RMPTR8, 0, 0 }, - {"dec", 0, PARAM_RMPTR8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"inc", 0, PARAM_RMPTR8, 0, 0 }, + {"dec", 0, PARAM_RMPTR8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE groupFF_table[8] = { - {"inc", 0, PARAM_RMPTR, 0, 0 }, - {"dec", 0, PARAM_RMPTR, 0, 0 }, - {"call", ALWAYS64, PARAM_RMPTR, 0, 0, DASMFLAG_STEP_OVER}, - {"call far ptr ",0, PARAM_RM, 0, 0, DASMFLAG_STEP_OVER}, - {"jmp", ALWAYS64, PARAM_RMPTR, 0, 0 }, - {"jmp far ptr ",0, PARAM_RM, 0, 0 }, - {"push", 0, PARAM_RMPTR, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"inc", 0, PARAM_RMPTR, 0, 0 }, + {"dec", 0, PARAM_RMPTR, 0, 0 }, + {"call", ALWAYS64, PARAM_RMPTR, 0, 0, DASMFLAG_STEP_OVER}, + {"call far ptr ",0, PARAM_RM, 0, 0, DASMFLAG_STEP_OVER}, + {"jmp", ALWAYS64, PARAM_RMPTR, 0, 0 }, + {"jmp far ptr ",0, PARAM_RM, 0, 0 }, + {"push", 0, PARAM_RMPTR, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0F00_table[8] = { - {"sldt", 0, PARAM_RM, 0, 0 }, - {"str", 0, PARAM_RM, 0, 0 }, - {"lldt", 0, PARAM_RM, 0, 0 }, - {"ltr", 0, PARAM_RM, 0, 0 }, - {"verr", 0, PARAM_RM, 0, 0 }, - {"verw", 0, PARAM_RM, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"sldt", 0, PARAM_RM, 0, 0 }, + {"str", 0, PARAM_RM, 0, 0 }, + {"lldt", 0, PARAM_RM, 0, 0 }, + {"ltr", 0, PARAM_RM, 0, 0 }, + {"verr", 0, PARAM_RM, 0, 0 }, + {"verw", 0, PARAM_RM, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0F01_table[8] = { - {"sgdt", 0, PARAM_RM, 0, 0 }, - {"sidt", 0, PARAM_RM, 0, 0 }, - {"lgdt", 0, PARAM_RM, 0, 0 }, - {"lidt", 0, PARAM_RM, 0, 0 }, - {"smsw", 0, PARAM_RM, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"lmsw", 0, PARAM_RM, 0, 0 }, - {"invlpg", 0, PARAM_RM, 0, 0 } + {"sgdt", 0, PARAM_RM, 0, 0 }, + {"sidt", 0, PARAM_RM, 0, 0 }, + {"lgdt", 0, PARAM_RM, 0, 0 }, + {"lidt", 0, PARAM_RM, 0, 0 }, + {"smsw", 0, PARAM_RM, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"lmsw", 0, PARAM_RM, 0, 0 }, + {"invlpg", 0, PARAM_RM, 0, 0 } }; static const I386_OPCODE group0F0D_table[8] = { - {"prefetch", 0, PARAM_RM8, 0, 0 }, - {"prefetchw", 0, PARAM_RM8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"prefetch", 0, PARAM_RM8, 0, 0 }, + {"prefetchw", 0, PARAM_RM8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0F18_table[8] = { - {"prefetchnta", 0, PARAM_RM8, 0, 0 }, - {"prefetch0", 0, PARAM_RM8, 0, 0 }, - {"prefetch1", 0, PARAM_RM8, 0, 0 }, - {"prefetch2", 0, PARAM_RM8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"prefetchnta", 0, PARAM_RM8, 0, 0 }, + {"prefetch0", 0, PARAM_RM8, 0, 0 }, + {"prefetch1", 0, PARAM_RM8, 0, 0 }, + {"prefetch2", 0, PARAM_RM8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0F71_table[8] = { - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"psrlw", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 }, - {"psraw", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 }, - {"psllw", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 } + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"psrlw", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"psraw", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"psllw", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0F72_table[8] = { - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"psrld", 0, PARAM_MMX, PARAM_I8, 0 }, - {"psrldq", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"pslld", 0, PARAM_MMX, PARAM_I8, 0 }, - {"pslldq", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"psrld", 0, PARAM_MMX, PARAM_I8, 0 }, + {"psrldq", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"pslld", 0, PARAM_MMX, PARAM_I8, 0 }, + {"pslldq", 0, PARAM_MMX, PARAM_I8, 0 }, }; static const I386_OPCODE group0F73_table[8] = { - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"psrlq", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 }, - {"psraq", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 }, - {"psllq", 0, PARAM_MMX, PARAM_I8, 0 }, - {"???", 0, 0, 0, 0 } + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"psrlq", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"psraq", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 }, + {"psllq", 0, PARAM_MMX, PARAM_I8, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group0FAE_table[8] = { - {"fxsave", 0, PARAM_RM, 0, 0 }, - {"fxrstor", 0, PARAM_RM, 0, 0 }, - {"ldmxcsr", 0, PARAM_RM, 0, 0 }, - {"stmxscr", 0, PARAM_RM, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"lfence", 0, 0, 0, 0 }, - {"mfence", 0, 0, 0, 0 }, - {"sfence", 0, 0, 0, 0 } + {"fxsave", 0, PARAM_RM, 0, 0 }, + {"fxrstor", 0, PARAM_RM, 0, 0 }, + {"ldmxcsr", 0, PARAM_RM, 0, 0 }, + {"stmxscr", 0, PARAM_RM, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"lfence", 0, 0, 0, 0 }, + {"mfence", 0, 0, 0, 0 }, + {"sfence", 0, 0, 0, 0 } }; static const I386_OPCODE group0FBA_table[8] = { - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"bt", 0, PARAM_RM, PARAM_I8, 0 }, - {"bts", 0, PARAM_RM, PARAM_I8, 0 }, - {"btr", 0, PARAM_RM, PARAM_I8, 0 }, - {"btc", 0, PARAM_RM, PARAM_I8, 0 } + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"bt", 0, PARAM_RM, PARAM_I8, 0 }, + {"bts", 0, PARAM_RM, PARAM_I8, 0 }, + {"btr", 0, PARAM_RM, PARAM_I8, 0 }, + {"btc", 0, PARAM_RM, PARAM_I8, 0 } }; static const I386_OPCODE group0FC7_table[8] = { - {"???", 0, 0, 0, 0 }, - {"cmpxchg8b", MODRM, PARAM_M64PTR, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"cmpxchg8b", MODRM, PARAM_M64PTR, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, {"vmptrld\0" - "vmclear\0" - "???\0" - "vmxon", MODRM|VAR_NAME4, PARAM_M64PTR, 0, 0 }, - {"vmptrtst", MODRM, PARAM_M64PTR, 0, 0 } + "vmclear\0" + "???\0" + "vmxon", MODRM|VAR_NAME4, PARAM_M64PTR, 0, 0 }, + {"vmptrtst", MODRM, PARAM_M64PTR, 0, 0 } }; static const GROUP_OP group_op_table[] = { - { "group80", group80_table }, - { "group81", group81_table }, - { "group83", group83_table }, - { "groupC0", groupC0_table }, - { "groupC1", groupC1_table }, - { "groupD0", groupD0_table }, - { "groupD1", groupD1_table }, - { "groupD2", groupD2_table }, - { "groupD3", groupD3_table }, - { "groupF6", groupF6_table }, - { "groupF7", groupF7_table }, - { "groupFE", groupFE_table }, - { "groupFF", groupFF_table }, - { "group0F00", group0F00_table }, - { "group0F01", group0F01_table }, - { "group0F0D", group0F0D_table }, - { "group0F18", group0F18_table }, - { "group0F71", group0F71_table }, - { "group0F72", group0F72_table }, - { "group0F73", group0F73_table }, - { "group0FAE", group0FAE_table }, - { "group0FBA", group0FBA_table }, - { "group0FC7", group0FC7_table } + { "group80", group80_table }, + { "group81", group81_table }, + { "group83", group83_table }, + { "groupC0", groupC0_table }, + { "groupC1", groupC1_table }, + { "groupD0", groupD0_table }, + { "groupD1", groupD1_table }, + { "groupD2", groupD2_table }, + { "groupD3", groupD3_table }, + { "groupF6", groupF6_table }, + { "groupF7", groupF7_table }, + { "groupFE", groupFE_table }, + { "groupFF", groupFF_table }, + { "group0F00", group0F00_table }, + { "group0F01", group0F01_table }, + { "group0F0D", group0F0D_table }, + { "group0F18", group0F18_table }, + { "group0F71", group0F71_table }, + { "group0F72", group0F72_table }, + { "group0F73", group0F73_table }, + { "group0FAE", group0FAE_table }, + { "group0FBA", group0FBA_table }, + { "group0FC7", group0FC7_table } }; @@ -1948,8 +1948,8 @@ static UINT8 rex, regex, sibex, rmex; static UINT8 pre0f; static UINT8 curmode; -#define MODRM_REG1 ((modrm >> 3) & 0x7) -#define MODRM_REG2 (modrm & 0x7) +#define MODRM_REG1 ((modrm >> 3) & 0x7) +#define MODRM_REG2 (modrm & 0x7) INLINE UINT8 FETCH(void) { @@ -2472,11 +2472,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) { switch (op1 & 0x7) { - case 0: // Group D8 + case 0: // Group D8 { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2508,11 +2508,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 1: // Group D9 + case 1: // Group D9 { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2572,11 +2572,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 2: // Group DA + case 2: // Group DA { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2616,11 +2616,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 3: // Group DB + case 3: // Group DB { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2666,11 +2666,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 4: // Group DC + case 4: // Group DC { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2713,11 +2713,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 5: // Group DD + case 5: // Group DD { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2757,11 +2757,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 6: // Group DE + case 6: // Group DE { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -2806,11 +2806,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 7: // Group DF + case 7: // Group DF { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -3001,7 +3001,7 @@ int i386_dasm_one_ex(char *buffer, UINT64 eip, const UINT8 *oprom, int mode) case 1: /* 8086/8088/80186/80188 */ address_size = 0; operand_size = 0; - max_length = 8; /* maximum without redundant prefixes - not enforced by chip */ + max_length = 8; /* maximum without redundant prefixes - not enforced by chip */ break; case 2: /* 80286 */ address_size = 0; |