diff --git a/arch/X86/X86Mapping.c b/arch/X86/X86Mapping.c index 5b74b00a96..982dbc4929 100644 --- a/arch/X86/X86Mapping.c +++ b/arch/X86/X86Mapping.c @@ -47237,67 +47237,14 @@ struct insn_reg2 { }; static struct insn_reg insn_regs_att[] = { - { X86_LODSQ, X86_REG_RAX }, - { X86_OR32i32, X86_REG_EAX }, - { X86_SUB32i32, X86_REG_EAX }, - { X86_TEST32i32, X86_REG_EAX }, - { X86_XCHG64ar, X86_REG_RAX }, - { X86_LODSB, X86_REG_AL }, - { X86_AND32i32, X86_REG_EAX }, - { X86_MOV32o32a_16, X86_REG_EAX }, - { X86_IN16ri, X86_REG_AX }, - { X86_CMP64i32, X86_REG_RAX }, - { X86_XOR32i32, X86_REG_EAX }, - { X86_XCHG16ar, X86_REG_AX }, - { X86_LODSW, X86_REG_AX }, - { X86_AND16i16, X86_REG_AX }, + { X86_INSB, X86_REG_DX }, + { X86_INSW, X86_REG_DX }, + { X86_INSL, X86_REG_DX }, + { X86_MOV64o64a, X86_REG_RAX }, - { X86_ADC16i16, X86_REG_AX }, - { X86_XCHG32ar64, X86_REG_EAX }, - { X86_ADC8i8, X86_REG_AL }, - { X86_MOV64o16a, X86_REG_AX }, - { X86_CMP32i32, X86_REG_EAX }, - { X86_AND8i8, X86_REG_AL }, - { X86_SCASW, X86_REG_AX }, - { X86_XOR8i8, X86_REG_AL }, - { X86_SUB16i16, X86_REG_AX }, - { X86_MOV8o8a, X86_REG_AL }, - { X86_MOV32ao32, X86_REG_EAX }, - { X86_OR16i16, X86_REG_AX }, - { X86_XCHG32ar, X86_REG_EAX }, - { X86_SBB8i8, X86_REG_AL }, - { X86_SCASQ, X86_REG_RAX }, - { X86_SBB32i32, X86_REG_EAX }, - { X86_XOR64i32, X86_REG_RAX }, - { X86_SUB64i32, X86_REG_RAX }, - { X86_ADD64i32, X86_REG_RAX }, - { X86_OR8i8, X86_REG_AL }, - { X86_TEST64i32, X86_REG_RAX }, - { X86_SBB16i16, X86_REG_AX }, - { X86_TEST8i8, X86_REG_AL }, - { X86_IN8ri, X86_REG_AL }, - { X86_TEST16i16, X86_REG_AX }, - { X86_SCASL, X86_REG_EAX }, - { X86_MOV16o16a_16, X86_REG_AX }, { X86_MOV32o32a, X86_REG_EAX }, - { X86_MOV8o8a_16, X86_REG_AL }, - { X86_SUB8i8, X86_REG_AL }, - { X86_ADD8i8, X86_REG_AL }, - { X86_OR64i32, X86_REG_RAX }, - { X86_SCASB, X86_REG_AL }, - { X86_SBB64i32, X86_REG_RAX }, - { X86_ADD16i16, X86_REG_AX }, - { X86_XOR16i16, X86_REG_AX }, { X86_MOV64o32a, X86_REG_EAX }, - { X86_AND64i32, X86_REG_RAX }, - { X86_MOV64o8a, X86_REG_AL }, { X86_MOV16o16a, X86_REG_AX }, - { X86_LODSL, X86_REG_EAX }, - { X86_CMP8i8, X86_REG_AL }, - { X86_ADC64i32, X86_REG_RAX }, - { X86_CMP16i16, X86_REG_AX }, - { X86_ADC32i32, X86_REG_EAX }, - { X86_IN32ri, X86_REG_EAX }, { X86_PUSHCS32, X86_REG_CS }, { X86_PUSHDS32, X86_REG_DS }, @@ -47331,25 +47278,86 @@ static struct insn_reg insn_regs_att[] = { { X86_POPGS16, X86_REG_GS }, { X86_POPSS16, X86_REG_SS }, + { X86_RCL32rCL, X86_REG_CL }, + { X86_SHL8rCL, X86_REG_CL }, + { X86_SHL16rCL, X86_REG_CL }, + { X86_SHL32rCL, X86_REG_CL }, + { X86_SHL64rCL, X86_REG_CL }, + { X86_SAL8rCL, X86_REG_CL }, + { X86_SAL16rCL, X86_REG_CL }, + { X86_SAL32rCL, X86_REG_CL }, + { X86_SAL64rCL, X86_REG_CL }, + { X86_SHR8rCL, X86_REG_CL }, + { X86_SHR16rCL, X86_REG_CL }, + { X86_SHR32rCL, X86_REG_CL }, + { X86_SHR64rCL, X86_REG_CL }, + { X86_SAR8rCL, X86_REG_CL }, + { X86_SAR16rCL, X86_REG_CL }, + { X86_SAR32rCL, X86_REG_CL }, + { X86_SAR64rCL, X86_REG_CL }, + { X86_RCL8rCL, X86_REG_CL }, + { X86_RCL16rCL, X86_REG_CL }, + { X86_RCL32rCL, X86_REG_CL }, + { X86_RCL64rCL, X86_REG_CL }, + { X86_RCR8rCL, X86_REG_CL }, + { X86_RCR16rCL, X86_REG_CL }, + { X86_RCR32rCL, X86_REG_CL }, + { X86_RCR64rCL, X86_REG_CL }, + { X86_ROL8rCL, X86_REG_CL }, + { X86_ROL16rCL, X86_REG_CL }, + { X86_ROL32rCL, X86_REG_CL }, + { X86_ROL64rCL, X86_REG_CL }, + { X86_ROR8rCL, X86_REG_CL }, + { X86_ROR16rCL, X86_REG_CL }, + { X86_ROR32rCL, X86_REG_CL }, + { X86_ROR64rCL, X86_REG_CL }, + { X86_SHLD16rrCL, X86_REG_CL }, + { X86_SHRD16rrCL, X86_REG_CL }, + { X86_SHLD32rrCL, X86_REG_CL }, + { X86_SHRD32rrCL, X86_REG_CL }, + { X86_SHLD64rrCL, X86_REG_CL }, + { X86_SHRD64rrCL, X86_REG_CL }, + { X86_SHLD16mrCL, X86_REG_CL }, + { X86_SHRD16mrCL, X86_REG_CL }, + { X86_SHLD32mrCL, X86_REG_CL }, + { X86_SHRD32mrCL, X86_REG_CL }, + { X86_SHLD64mrCL, X86_REG_CL }, + { X86_SHRD64mrCL, X86_REG_CL }, + { X86_OUT8ir, X86_REG_AL }, { X86_OUT16ir, X86_REG_AX }, { X86_OUT32ir, X86_REG_EAX }, #ifndef CAPSTONE_X86_REDUCE { X86_SKINIT, X86_REG_EAX }, - { X86_INVLPGA32, X86_REG_EAX }, { X86_VMRUN32, X86_REG_EAX }, { X86_VMRUN64, X86_REG_RAX }, { X86_VMLOAD32, X86_REG_EAX }, - { X86_FNSTSW16r, X86_REG_AX }, - { X86_INVLPGA64, X86_REG_RAX }, + { X86_VMLOAD64, X86_REG_RAX }, { X86_VMSAVE32, X86_REG_EAX }, { X86_VMSAVE64, X86_REG_RAX }, - { X86_VMLOAD64, X86_REG_RAX }, + + { X86_FNSTSW16r, X86_REG_AX }, + + { X86_ADD_FrST0, X86_REG_ST0 }, + { X86_SUB_FrST0, X86_REG_ST0 }, + { X86_SUBR_FrST0, X86_REG_ST0 }, + { X86_MUL_FrST0, X86_REG_ST0 }, + { X86_DIV_FrST0, X86_REG_ST0 }, + { X86_DIVR_FrST0, X86_REG_ST0 }, #endif }; static struct insn_reg insn_regs_intel[] = { + { X86_OUTSB, X86_REG_DX }, + { X86_OUTSW, X86_REG_DX }, + { X86_OUTSL, X86_REG_DX }, + + { X86_MOV16ao16, X86_REG_AX }, // 16-bit A1 1020 // mov ax, word ptr [0x2010] + { X86_MOV32ao32, X86_REG_EAX }, // 32-bit A1 10203040 // mov eax, dword ptr [0x40302010] + + { X86_MOV64ao32, X86_REG_RAX }, // 64-bit 48 8B04 10203040 // mov rax, qword ptr [0x40302010] + { X86_LODSQ, X86_REG_RAX }, { X86_OR32i32, X86_REG_EAX }, { X86_SUB32i32, X86_REG_EAX }, @@ -47358,24 +47366,20 @@ static struct insn_reg insn_regs_intel[] = { { X86_XCHG64ar, X86_REG_RAX }, { X86_LODSB, X86_REG_AL }, { X86_AND32i32, X86_REG_EAX }, - { X86_MOV32o32a_16, X86_REG_EAX }, { X86_IN16ri, X86_REG_AX }, { X86_CMP64i32, X86_REG_RAX }, { X86_XOR32i32, X86_REG_EAX }, { X86_XCHG16ar, X86_REG_AX }, { X86_LODSW, X86_REG_AX }, { X86_AND16i16, X86_REG_AX }, - { X86_MOV64o64a, X86_REG_RAX }, { X86_ADC16i16, X86_REG_AX }, { X86_XCHG32ar64, X86_REG_EAX }, { X86_ADC8i8, X86_REG_AL }, - { X86_MOV64o16a, X86_REG_AX }, { X86_CMP32i32, X86_REG_EAX }, { X86_AND8i8, X86_REG_AL }, { X86_SCASW, X86_REG_AX }, { X86_XOR8i8, X86_REG_AL }, { X86_SUB16i16, X86_REG_AX }, - { X86_MOV8o8a, X86_REG_AL }, { X86_OR16i16, X86_REG_AX }, { X86_XCHG32ar, X86_REG_EAX }, { X86_SBB8i8, X86_REG_AL }, @@ -47391,9 +47395,6 @@ static struct insn_reg insn_regs_intel[] = { { X86_IN8ri, X86_REG_AL }, { X86_TEST16i16, X86_REG_AX }, { X86_SCASL, X86_REG_EAX }, - { X86_MOV16o16a_16, X86_REG_AX }, - { X86_MOV32o32a, X86_REG_EAX }, - { X86_MOV8o8a_16, X86_REG_AL }, { X86_SUB8i8, X86_REG_AL }, { X86_ADD8i8, X86_REG_AL }, { X86_OR64i32, X86_REG_RAX }, @@ -47401,10 +47402,7 @@ static struct insn_reg insn_regs_intel[] = { { X86_SBB64i32, X86_REG_RAX }, { X86_ADD16i16, X86_REG_AX }, { X86_XOR16i16, X86_REG_AX }, - { X86_MOV64o32a, X86_REG_EAX }, { X86_AND64i32, X86_REG_RAX }, - { X86_MOV64o8a, X86_REG_AL }, - { X86_MOV16o16a, X86_REG_AX }, { X86_LODSL, X86_REG_EAX }, { X86_CMP8i8, X86_REG_AL }, { X86_ADC64i32, X86_REG_RAX }, @@ -47446,15 +47444,31 @@ static struct insn_reg insn_regs_intel[] = { #ifndef CAPSTONE_X86_REDUCE { X86_SKINIT, X86_REG_EAX }, - { X86_INVLPGA32, X86_REG_EAX }, { X86_VMRUN32, X86_REG_EAX }, { X86_VMRUN64, X86_REG_RAX }, { X86_VMLOAD32, X86_REG_EAX }, - { X86_FNSTSW16r, X86_REG_AX }, - { X86_INVLPGA64, X86_REG_RAX }, + { X86_VMLOAD64, X86_REG_RAX }, { X86_VMSAVE32, X86_REG_EAX }, { X86_VMSAVE64, X86_REG_RAX }, - { X86_VMLOAD64, X86_REG_RAX }, + + { X86_FNSTSW16r, X86_REG_AX }, + + { X86_CMOVB_F, X86_REG_ST0 }, + { X86_CMOVBE_F, X86_REG_ST0 }, + { X86_CMOVE_F, X86_REG_ST0 }, + { X86_CMOVP_F, X86_REG_ST0 }, + { X86_CMOVNB_F, X86_REG_ST0 }, + { X86_CMOVNBE_F, X86_REG_ST0 }, + { X86_CMOVNE_F, X86_REG_ST0 }, + { X86_CMOVNP_F, X86_REG_ST0 }, + { X86_ST_FXCHST0r, X86_REG_ST0 }, + { X86_ST_FXCHST0r_alt, X86_REG_ST0 }, + { X86_ST_FCOMST0r, X86_REG_ST0 }, + { X86_ST_FCOMPST0r, X86_REG_ST0 }, + { X86_ST_FCOMPST0r_alt, X86_REG_ST0 }, + { X86_ST_FPST0r, X86_REG_ST0 }, + { X86_ST_FPST0r_alt, X86_REG_ST0 }, + { X86_ST_FPNCEST0r, X86_REG_ST0 }, #endif };