[41668] | 1 | /* $Id: DisasmTables-x86-amd64.cpp 104111 2024-03-28 23:55:22Z vboxsync $ */
|
---|
[1] | 2 | /** @file
|
---|
[41668] | 3 | * VBox disassembler - Tables for X86 (32-bit and 16-bit modes).
|
---|
[1] | 4 | */
|
---|
| 5 |
|
---|
| 6 | /*
|
---|
[98103] | 7 | * Copyright (C) 2006-2023 Oracle and/or its affiliates.
|
---|
[1] | 8 | *
|
---|
[96407] | 9 | * This file is part of VirtualBox base platform packages, as
|
---|
| 10 | * available from https://www.virtualbox.org.
|
---|
| 11 | *
|
---|
| 12 | * This program is free software; you can redistribute it and/or
|
---|
| 13 | * modify it under the terms of the GNU General Public License
|
---|
| 14 | * as published by the Free Software Foundation, in version 3 of the
|
---|
| 15 | * License.
|
---|
| 16 | *
|
---|
| 17 | * This program is distributed in the hope that it will be useful, but
|
---|
| 18 | * WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 20 | * General Public License for more details.
|
---|
| 21 | *
|
---|
| 22 | * You should have received a copy of the GNU General Public License
|
---|
| 23 | * along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
| 24 | *
|
---|
| 25 | * SPDX-License-Identifier: GPL-3.0-only
|
---|
[1] | 26 | */
|
---|
| 27 |
|
---|
| 28 |
|
---|
[57358] | 29 | /*********************************************************************************************************************************
|
---|
| 30 | * Header Files *
|
---|
| 31 | *********************************************************************************************************************************/
|
---|
[1] | 32 | #include <VBox/dis.h>
|
---|
[99220] | 33 | #include <VBox/disopcode-x86-amd64.h>
|
---|
[99236] | 34 | #include "DisasmInternal-x86-amd64.h"
|
---|
[1] | 35 |
|
---|
| 36 |
|
---|
| 37 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
[63567] | 38 | /// @todo Verify tables for correctness
|
---|
| 39 | /// @todo opcode type (harmless, potentially dangerous, dangerous)
|
---|
[1] | 40 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
---|
| 41 |
|
---|
[9669] | 42 | #ifndef DIS_CORE_ONLY
|
---|
[41863] | 43 | static char g_szInvalidOpcode[] = "Invalid Opcode";
|
---|
[9669] | 44 | #endif
|
---|
[1] | 45 |
|
---|
| 46 | #define INVALID_OPCODE \
|
---|
[41863] | 47 | OP(g_szInvalidOpcode, 0, 0, 0, OP_INVALID, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INVALID)
|
---|
[1] | 48 | #define INVALID_OPCODE_BLOCK \
|
---|
| 49 | INVALID_OPCODE,\
|
---|
| 50 | INVALID_OPCODE,\
|
---|
| 51 | INVALID_OPCODE,\
|
---|
| 52 | INVALID_OPCODE,\
|
---|
| 53 | INVALID_OPCODE,\
|
---|
| 54 | INVALID_OPCODE,\
|
---|
| 55 | INVALID_OPCODE,\
|
---|
| 56 | INVALID_OPCODE,\
|
---|
| 57 | INVALID_OPCODE,\
|
---|
| 58 | INVALID_OPCODE,\
|
---|
| 59 | INVALID_OPCODE,\
|
---|
| 60 | INVALID_OPCODE,\
|
---|
| 61 | INVALID_OPCODE,\
|
---|
| 62 | INVALID_OPCODE,\
|
---|
| 63 | INVALID_OPCODE,\
|
---|
| 64 | INVALID_OPCODE,
|
---|
| 65 |
|
---|
[41863] | 66 | #define INVALID_OPCODE_MOD_RM(a_Index) \
|
---|
| 67 | OP(g_szInvalidOpcode, IDX_ParseInvOpModRM, 0, 0, OP_INVALID, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INVALID)
|
---|
| 68 | #define INVALID_OPCODE_BLOCK_MOD_RM(a_UpperDigit) \
|
---|
| 69 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 0),\
|
---|
| 70 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 1),\
|
---|
| 71 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 2),\
|
---|
| 72 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 3),\
|
---|
| 73 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 4),\
|
---|
| 74 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 5),\
|
---|
| 75 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 6),\
|
---|
| 76 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 7),\
|
---|
| 77 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 8),\
|
---|
| 78 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## 9),\
|
---|
| 79 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## a),\
|
---|
| 80 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## b),\
|
---|
| 81 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## c),\
|
---|
| 82 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## d),\
|
---|
| 83 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## e),\
|
---|
| 84 | INVALID_OPCODE_MOD_RM(a_UpperDigit ## f),
|
---|
[41796] | 85 |
|
---|
[41863] | 86 |
|
---|
[13241] | 87 | /* Invalid opcode */
|
---|
[41690] | 88 | const DISOPCODE g_InvalidOpcode[1] =
|
---|
[13241] | 89 | {
|
---|
| 90 | INVALID_OPCODE
|
---|
| 91 | };
|
---|
| 92 |
|
---|
[1] | 93 | /* Tables for the elegant Intel X86 instruction set */
|
---|
[41690] | 94 | const DISOPCODE g_aOneByteMapX86[256] =
|
---|
[1] | 95 | {
|
---|
| 96 | /* 0 */
|
---|
[65876] | 97 | OP("add %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADD, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 98 | OP("add %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 99 | OP("add %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADD, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 100 | OP("add %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADD, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 101 | OP("add AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_ADD, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 102 | OP("add %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_ADD, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 103 | OP("push ES", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_ES, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 104 | OP("pop ES", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_ES, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[65876] | 105 | OP("or %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_OR, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 106 | OP("or %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_OR, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 107 | OP("or %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_OR, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 108 | OP("or %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_OR, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 109 | OP("or AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_OR, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 110 | OP("or %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_OR, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 111 | OP("push CS", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_CS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64 | DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
[65879] | 112 | OP("EscTwo0f", IDX_ParseTwoByteEsc, 0, 0, OP_2B_ESC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 113 |
|
---|
| 114 | /* 1 */
|
---|
[65876] | 115 | OP("adc %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADC, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 116 | OP("adc %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADC, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 117 | OP("adc %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADC, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 118 | OP("adc %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADC, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 119 | OP("adc AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_ADC, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 120 | OP("adc %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_ADC, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 121 | OP("push SS", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_SS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64 | DISOPTYPE_RRM_DANGEROUS),
|
---|
| 122 | OP("pop SS", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_SS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_INHIBIT_IRQS | DISOPTYPE_X86_INVALID_64 | DISOPTYPE_RRM_DANGEROUS),
|
---|
[65876] | 123 | OP("sbb %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_SBB, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 124 | OP("sbb %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_SBB, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 125 | OP("sbb %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_SBB, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 126 | OP("sbb %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_SBB, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 127 | OP("sbb AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_SBB, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 128 | OP("sbb %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_SBB, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 129 | OP("push DS", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_DS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 130 | OP("pop DS", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_DS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64 | DISOPTYPE_RRM_DANGEROUS),
|
---|
[1] | 131 |
|
---|
| 132 | /* 2 */
|
---|
[65876] | 133 | OP("and %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_AND, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 134 | OP("and %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_AND, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 135 | OP("and %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_AND, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 136 | OP("and %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_AND, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 137 | OP("and AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_AND, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 138 | OP("and %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_AND, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 139 | OP("SEG ES", 0, 0, 0, OP_SEG, OP_PARM_REG_ES, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 140 | OP("daa", 0, 0, 0, OP_DAA, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[65876] | 141 | OP("sub %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUB, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 142 | OP("sub %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUB, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 143 | OP("sub %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUB, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 144 | OP("sub %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUB, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 145 | OP("sub AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_SUB, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 146 | OP("sub %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_SUB, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 147 | /* Branch not taken hint prefix for branches on a Pentium 4 or Xeon CPU (or higher)! */
|
---|
[41676] | 148 | OP("SEG CS", 0, 0, 0, OP_SEG, OP_PARM_REG_CS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 149 | OP("das", 0, 0, 0, OP_DAS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[1] | 150 |
|
---|
| 151 | /* 3 */
|
---|
[41676] | 152 | OP("xor %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_XOR, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 153 | OP("xor %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_XOR, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 154 | OP("xor %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_XOR, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 155 | OP("xor %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_XOR, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[65876] | 156 | OP("xor AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_XOR, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 157 | OP("xor %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_XOR, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 158 | OP("SEG SS", 0, 0, 0, OP_SEG, OP_PARM_REG_SS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 159 | OP("aaa", 0, 0, 0, OP_AAA, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[41676] | 160 | OP("cmp %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMP, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 161 | OP("cmp %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMP, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 162 | OP("cmp %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMP, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 163 | OP("cmp %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMP, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[65876] | 164 | OP("cmp AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_CMP, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 165 | OP("cmp %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_CMP, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 166 | /* Branch not taken hint prefix for branches on a Pentium 4 or Xeon CPU (or higher)! */
|
---|
[41676] | 167 | OP("SEG DS", 0, 0, 0, OP_SEG, OP_PARM_REG_DS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 168 | OP("aas", 0, 0, 0, OP_AAS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[1] | 169 |
|
---|
| 170 | /* 4 */
|
---|
[41676] | 171 | OP("inc %eAX", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_EAX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 172 | OP("inc %eCX", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_ECX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 173 | OP("inc %eDX", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_EDX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 174 | OP("inc %eBX", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_EBX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 175 | OP("inc %eSP", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_ESP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 176 | OP("inc %eBP", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_EBP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 177 | OP("inc %eSI", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_ESI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 178 | OP("inc %eDI", IDX_ParseFixedReg, 0, 0, OP_INC, OP_PARM_REG_EDI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 179 | OP("dec %eAX", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_EAX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 180 | OP("dec %eCX", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_ECX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 181 | OP("dec %eDX", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_EDX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 182 | OP("dec %eBX", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_EBX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 183 | OP("dec %eSP", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_ESP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 184 | OP("dec %eBP", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_EBP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 185 | OP("dec %eSI", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_ESI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 186 | OP("dec %eDI", IDX_ParseFixedReg, 0, 0, OP_DEC, OP_PARM_REG_EDI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 187 |
|
---|
| 188 | /* 5 */
|
---|
[99220] | 189 | OP("push %eAX", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_EAX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 190 | OP("push %eCX", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_ECX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 191 | OP("push %eDX", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_EDX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 192 | OP("push %eBX", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_EBX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 193 | OP("push %eSP", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_ESP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 194 | OP("push %eBP", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_EBP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 195 | OP("push %eSI", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_ESI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 196 | OP("push %eDI", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_EDI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 197 | OP("pop %eAX", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_EAX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 198 | OP("pop %eCX", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_ECX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 199 | OP("pop %eDX", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_EDX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 200 | OP("pop %eBX", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_EBX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 201 | OP("pop %eSP", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_ESP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 202 | OP("pop %eBP", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_EBP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 203 | OP("pop %eSI", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_ESI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 204 | OP("pop %eDI", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_EDI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
[1] | 205 |
|
---|
| 206 | /* 6 */
|
---|
[99220] | 207 | OP("pusha", 0, 0, 0, OP_PUSHA, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 208 | OP("popa", 0, 0, 0, OP_POPA, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 209 | OP("bound %Gv,%Ma", IDX_ParseModRM, IDX_UseModRM, 0, OP_BOUND, OP_PARM_Gv, OP_PARM_Ma, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[41676] | 210 | OP("arpl %Ew,%Gw", IDX_ParseModRM, IDX_UseModRM, 0, OP_ARPL, OP_PARM_Ew, OP_PARM_Gw, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 211 | OP("SEG FS", 0, 0, 0, OP_SEG, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 212 | OP("SEG GS", 0, 0, 0, OP_SEG, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 213 | OP("OP SIZE", 0, 0, 0, OP_OPSIZE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 214 | OP("ADR SIZE", 0, 0, 0, OP_ADDRSIZE,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 215 | OP("push %Iz", IDX_ParseImmZ, 0, 0, OP_PUSH, OP_PARM_Iz, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 216 | OP("imul %Gv,%Ev,%Iz", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmZ, OP_IMUL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_Iz, DISOPTYPE_HARMLESS),
|
---|
[99220] | 217 | OP("push %Ib", IDX_ParseImmByteSX, 0, 0, OP_PUSH, OP_PARM_Ib, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 218 | OP("imul %Gv,%Ev,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByteSX, OP_IMUL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[99220] | 219 | OP("insb %Yb,DX", IDX_ParseYb, IDX_ParseFixedReg, 0, OP_INSB, OP_PARM_Yb, OP_PARM_REG_DX, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 220 | OP("insw/d %Yv,DX", IDX_ParseYv, IDX_ParseFixedReg, 0, OP_INSWD, OP_PARM_Yv, OP_PARM_REG_DX, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 221 | OP("outsb DX,%Xb", IDX_ParseFixedReg, IDX_ParseXb, 0, OP_OUTSB, OP_PARM_REG_DX, OP_PARM_Yb, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
| 222 | OP("outsw/d DX,%Xv", IDX_ParseFixedReg, IDX_ParseXv, 0, OP_OUTSWD, OP_PARM_REG_DX, OP_PARM_Yv, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
[1] | 223 |
|
---|
| 224 |
|
---|
| 225 | /* 7 */
|
---|
[99220] | 226 | OP("jo %Jb", IDX_ParseImmBRel, 0, 0, OP_JO, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 227 | OP("jno %Jb", IDX_ParseImmBRel, 0, 0, OP_JNO, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 228 | OP("jc %Jb", IDX_ParseImmBRel, 0, 0, OP_JC, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 229 | OP("jnc %Jb", IDX_ParseImmBRel, 0, 0, OP_JNC, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 230 | OP("je %Jb", IDX_ParseImmBRel, 0, 0, OP_JE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 231 | OP("jne %Jb", IDX_ParseImmBRel, 0, 0, OP_JNE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 232 | OP("jbe %Jb", IDX_ParseImmBRel, 0, 0, OP_JBE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 233 | OP("jnbe %Jb", IDX_ParseImmBRel, 0, 0, OP_JNBE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 234 | OP("js %Jb", IDX_ParseImmBRel, 0, 0, OP_JS, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 235 | OP("jns %Jb", IDX_ParseImmBRel, 0, 0, OP_JNS, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 236 | OP("jp %Jb", IDX_ParseImmBRel, 0, 0, OP_JP, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 237 | OP("jnp %Jb", IDX_ParseImmBRel, 0, 0, OP_JNP, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 238 | OP("jl %Jb", IDX_ParseImmBRel, 0, 0, OP_JL, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 239 | OP("jnl %Jb", IDX_ParseImmBRel, 0, 0, OP_JNL, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 240 | OP("jle %Jb", IDX_ParseImmBRel, 0, 0, OP_JLE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 241 | OP("jnle %Jb", IDX_ParseImmBRel, 0, 0, OP_JNLE, OP_PARM_Jb , OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
[1] | 242 |
|
---|
| 243 | /* 8 */
|
---|
[65860] | 244 | OP("Imm Grp1 %Eb,%Ib", IDX_ParseGrp1, 0, 0, OP_IMM_GRP1,OP_PARM_Eb, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 245 | OP("Imm Grp1 %Ev,%Iz", IDX_ParseGrp1, 0, 0, OP_IMM_GRP1,OP_PARM_Ev, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 246 | OP("Imm Grp1 %Eb,%Ib", IDX_ParseGrp1, 0, 0, OP_IMM_GRP1,OP_PARM_Eb, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[65860] | 247 | OP("Imm Grp1 %Ev,%Ib", IDX_ParseGrp1, 0, 0, OP_IMM_GRP1,OP_PARM_Ev, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 248 | OP("test %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_TEST, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 249 | OP("test %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_TEST, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 250 | OP("xchg %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_XCHG, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 251 | OP("xchg %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_XCHG, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 252 | OP("mov %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 253 | OP("mov %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 254 | OP("mov %Gb,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Gb, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 255 | OP("mov %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 256 | OP("mov %Ev,%Sw", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Ev, OP_PARM_Sw, OP_PARM_NONE, DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
| 257 | OP("lea %Gv,%M", IDX_ParseModRM, IDX_UseModRM, 0, OP_LEA, OP_PARM_Gv, OP_PARM_M, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 258 | OP("mov %Sw,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV, OP_PARM_Sw, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_POTENTIALLY_DANGEROUS | DISOPTYPE_INHIBIT_IRQS),
|
---|
[65860] | 259 | /** @todo this is grp 1a, actually */
|
---|
[41676] | 260 | OP("pop %Ev", IDX_ParseModRM, 0, 0, OP_POP, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 261 |
|
---|
| 262 | /* 9 */
|
---|
[41676] | 263 | OP("nop/pause/xchg %eAX,%eAX", IDX_ParseNopPause, 0, 0, OP_NOP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 264 | OP("xchg %eCX,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_ECX, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 265 | OP("xchg %eDX,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_EDX, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 266 | OP("xchg %eBX,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_EBX, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 267 | OP("xchg %eSP,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_ESP, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 268 | OP("xchg %eBP,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_EBP, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 269 | OP("xchg %eSI,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_ESI, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 270 | OP("xchg %eDI,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_XCHG, OP_PARM_REG_EDI, OP_PARM_REG_EAX, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
[41676] | 271 | OP("cbw", 0, 0, 0, OP_CBW, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 272 | OP("cwd", 0, 0, 0, OP_CWD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 273 | OP("call %Ap", IDX_ParseImmAddrF, 0, 0, OP_CALL, OP_PARM_Ap, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_INVALID_64),
|
---|
[41676] | 274 | OP("wait", 0, 0, 0, OP_WAIT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 275 | OP("pushf %Fv", 0, 0, 0, OP_PUSHF, OP_PARM_Fv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
| 276 | OP("popf %Fv", 0, 0, 0, OP_POPF, OP_PARM_Fv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
[41676] | 277 | OP("sahf", 0, 0, 0, OP_SAHF, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 278 | OP("lahf", 0, 0, 0, OP_LAHF, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 279 |
|
---|
| 280 |
|
---|
| 281 | /* A */
|
---|
[41676] | 282 | OP("mov AL,%Ob", IDX_ParseFixedReg, IDX_ParseImmAddr, 0, OP_MOV, OP_PARM_REG_AL, OP_PARM_Ob, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 283 | OP("mov %eAX,%Ov", IDX_ParseFixedReg, IDX_ParseImmAddr, 0, OP_MOV, OP_PARM_REG_EAX, OP_PARM_Ov, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 284 | OP("mov %Ob,AL", IDX_ParseImmAddr, IDX_ParseFixedReg, 0, OP_MOV, OP_PARM_Ob, OP_PARM_REG_AL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 285 | OP("mov %Ov,%eAX", IDX_ParseImmAddr, IDX_ParseFixedReg, 0, OP_MOV, OP_PARM_Ov, OP_PARM_REG_EAX,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 286 | OP("movsb %Xb,%Yb", IDX_ParseXb, IDX_ParseYb, 0, OP_MOVSB, OP_PARM_Xb, OP_PARM_Yb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 287 | OP("movsw/d %Xv,%Yv", IDX_ParseXv, IDX_ParseYv, 0, OP_MOVSWD, OP_PARM_Xv, OP_PARM_Yv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 288 | OP("cmpsb %Xb,%Yb", IDX_ParseXb, IDX_ParseYb, 0, OP_CMPSB, OP_PARM_Xb, OP_PARM_Yb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 289 | OP("cmpsw/d %Xv,%Yv", IDX_ParseXv, IDX_ParseYv, 0, OP_CMPWD, OP_PARM_Xv, OP_PARM_Yv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 290 | OP("test AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_TEST, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 291 | OP("test %eAX,%Iz", IDX_ParseFixedReg, IDX_ParseImmZ, 0, OP_TEST, OP_PARM_REG_EAX, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 292 | OP("stosb %Yb,AL", IDX_ParseYb, IDX_ParseFixedReg, 0, OP_STOSB, OP_PARM_Yb, OP_PARM_REG_AL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 293 | OP("stosw/d %Yv,%eAX", IDX_ParseYv, IDX_ParseFixedReg, 0, OP_STOSWD, OP_PARM_Yv, OP_PARM_REG_EAX,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 294 | OP("lodsb AL,%Xb", IDX_ParseFixedReg, IDX_ParseXb, 0, OP_LODSB, OP_PARM_REG_AL, OP_PARM_Xb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 295 | OP("lodsw/d %eAX,%Xv", IDX_ParseFixedReg, IDX_ParseXv, 0, OP_LODSWD, OP_PARM_REG_EAX, OP_PARM_Xv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 296 | OP("scasb AL,%Xb", IDX_ParseFixedReg, IDX_ParseXb, 0, OP_SCASB, OP_PARM_REG_AL, OP_PARM_Xb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 297 | OP("scasw/d %eAX,%Xv", IDX_ParseFixedReg, IDX_ParseXv, 0, OP_SCASWD, OP_PARM_REG_EAX, OP_PARM_Xv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 298 |
|
---|
| 299 |
|
---|
| 300 | /* B */
|
---|
[99220] | 301 | OP("mov AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 302 | OP("mov CL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_CL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 303 | OP("mov DL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_DL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 304 | OP("mov BL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_BL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 305 | OP("mov AH,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_AH, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 306 | OP("mov CH,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_CH, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 307 | OP("mov DH,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_DH, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 308 | OP("mov BH,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_REG_BH, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 309 | OP("mov %eAX,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_EAX, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 310 | OP("mov %eCX,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_ECX, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 311 | OP("mov %eDX,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_EDX, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 312 | OP("mov %eBX,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_EBX, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 313 | OP("mov %eSP,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_ESP, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 314 | OP("mov %eBP,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_EBP, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 315 | OP("mov %eSI,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_ESI, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 316 | OP("mov %eDI,%Iv", IDX_ParseFixedReg, IDX_ParseImmV, 0, OP_MOV, OP_PARM_REG_EDI, OP_PARM_Iv, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
[1] | 317 |
|
---|
| 318 | /* C */
|
---|
[41676] | 319 | OP("Shift Grp2 %Eb,%Ib", IDX_ParseShiftGrp2, 0, 0, OP_SHIFT_GRP2, OP_PARM_Eb, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 320 | OP("Shift Grp2 %Ev,%Ib", IDX_ParseShiftGrp2, 0, 0, OP_SHIFT_GRP2, OP_PARM_Ev, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 321 | OP("retn %Iw", IDX_ParseImmUshort, 0, 0, OP_RETN, OP_PARM_Iw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 322 | OP("retn", 0, 0, 0, OP_RETN, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[103511] | 323 | OP("vex3b/les %Gv,%Mp", IDX_ParseVex3b, 0, 0, OP_VEX3B, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 324 | OP("vex2b/lds %Gv,%Mp", IDX_ParseVex2b, 0, 0, OP_VEX2B, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[63567] | 325 | /** @todo these two are actually group11 */
|
---|
[41676] | 326 | OP("mov %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_Eb, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 327 | OP("mov %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_MOV, OP_PARM_Ev, OP_PARM_Iz, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 328 | OP("enter %Iw,%Ib", IDX_ParseImmUshort, IDX_ParseImmByte, 0, OP_ENTER, OP_PARM_Iw, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 329 | OP("leave", 0, 0, 0, OP_LEAVE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 330 | OP("retf %Iw", IDX_ParseImmUshort, 0, 0, OP_RETF, OP_PARM_Iw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW),
|
---|
| 331 | OP("retf", 0, 0, 0, OP_RETF, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW),
|
---|
| 332 | OP("int 3", 0, 0, 0, OP_INT3, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INTERRUPT),
|
---|
| 333 | OP("int %Ib", IDX_ParseImmByte, 0, 0, OP_INT, OP_PARM_Ib, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INTERRUPT),
|
---|
[99220] | 334 | OP("into", 0, 0, 0, OP_INTO, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INTERRUPT | DISOPTYPE_X86_INVALID_64),
|
---|
[41676] | 335 | OP("iret", 0, 0, 0, OP_IRET, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW),
|
---|
[1] | 336 |
|
---|
| 337 | /* D */
|
---|
[41676] | 338 | OP("Shift Grp2 %Eb,1", IDX_ParseShiftGrp2, 0, 0, OP_SHIFT_GRP2, OP_PARM_Eb, OP_PARM_1, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 339 | OP("Shift Grp2 %Ev,1", IDX_ParseShiftGrp2, 0, 0, OP_SHIFT_GRP2, OP_PARM_Ev, OP_PARM_1, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 340 | OP("Shift Grp2 %Eb,CL", IDX_ParseShiftGrp2, IDX_ParseFixedReg, 0, OP_SHIFT_GRP2, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 341 | OP("Shift Grp2 %Ev,CL", IDX_ParseShiftGrp2, IDX_ParseFixedReg, 0, OP_SHIFT_GRP2, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 342 | OP("aam %Ib", IDX_ParseImmByte, 0, 0, OP_AAM, OP_PARM_Ib, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 343 | OP("aad %Ib", IDX_ParseImmByte, 0, 0, OP_AAD, OP_PARM_Ib, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
| 344 | OP("salc", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_SALC, OP_PARM_REG_AL, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64),
|
---|
[97493] | 345 | /** @todo xlat has AL as both source and destination and DS:xBX as
|
---|
| 346 | * translation table pointer. */
|
---|
[41676] | 347 | OP("xlat", 0, 0, 0, OP_XLAT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 348 | OP("esc 0xf0", IDX_ParseEscFP, 0, 0, OP_ESCF0, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 349 | OP("esc 0xf1", IDX_ParseEscFP, 0, 0, OP_ESCF1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 350 | OP("esc 0xf2", IDX_ParseEscFP, 0, 0, OP_ESCF2, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 351 | OP("esc 0xf3", IDX_ParseEscFP, 0, 0, OP_ESCF3, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 352 | OP("esc 0xf4", IDX_ParseEscFP, 0, 0, OP_ESCF4, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 353 | OP("esc 0xf5", IDX_ParseEscFP, 0, 0, OP_ESCF5, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 354 | OP("esc 0xf6", IDX_ParseEscFP, 0, 0, OP_ESCF6, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 355 | OP("esc 0xf7", IDX_ParseEscFP, 0, 0, OP_ESCF7, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 356 |
|
---|
| 357 |
|
---|
| 358 | /* E */
|
---|
[99220] | 359 | OP("loopne %Jb", IDX_ParseImmBRel, 0, 0, OP_LOOPNE, OP_PARM_Jb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 360 | OP("loope %Jb", IDX_ParseImmBRel, 0, 0, OP_LOOPE, OP_PARM_Jb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 361 | OP("loop %Jb", IDX_ParseImmBRel, 0, 0, OP_LOOP, OP_PARM_Jb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 362 | OP("j(e)cxz %Jb", IDX_ParseImmBRel, 0, 0, OP_JECXZ, OP_PARM_Jb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_COND_CONTROLFLOW | DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE | DISOPTYPE_RELATIVE_CONTROLFLOW),
|
---|
| 363 | OP("in AL,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_IN, OP_PARM_REG_AL, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 364 | OP("in %eAX,%Ib", IDX_ParseFixedReg, IDX_ParseImmByte, 0, OP_IN, OP_PARM_REG_EAX, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 365 | OP("out %Ib,AL", IDX_ParseImmByte, IDX_ParseFixedReg, 0, OP_OUT, OP_PARM_Ib, OP_PARM_REG_AL, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
| 366 | OP("out %Ib,%eAX", IDX_ParseImmByte, IDX_ParseFixedReg, 0, OP_OUT, OP_PARM_Ib, OP_PARM_REG_EAX,OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
| 367 | OP("call %Jv", IDX_ParseImmVRel, 0, 0, OP_CALL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 368 | OP("jmp %Jv", IDX_ParseImmVRel, 0, 0, OP_JMP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 369 | OP("jmp %Ap", IDX_ParseImmAddrF, 0, 0, OP_JMP, OP_PARM_Ap, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_X86_INVALID_64),
|
---|
| 370 | OP("jmp %Jb", IDX_ParseImmBRel, 0, 0, OP_JMP, OP_PARM_Jb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_RELATIVE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 371 | OP("in AL,DX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_IN, OP_PARM_REG_AL, OP_PARM_REG_DX, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 372 | OP("in %eAX,DX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_IN, OP_PARM_REG_EAX, OP_PARM_REG_DX, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_READ),
|
---|
| 373 | OP("out DX,AL", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_OUT, OP_PARM_REG_DX, OP_PARM_REG_AL, OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
| 374 | OP("out DX,%eAX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_OUT, OP_PARM_REG_DX, OP_PARM_REG_EAX,OP_PARM_NONE, DISOPTYPE_PORTIO | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_PORTIO_WRITE),
|
---|
[1] | 375 |
|
---|
| 376 |
|
---|
| 377 | /* F */
|
---|
[41676] | 378 | OP("lock", 0, 0, 0, OP_LOCK, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95378] | 379 | OP("icebp", 0, 0, 0, OP_INT1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_INTERRUPT),
|
---|
[41676] | 380 | OP("repne", 0, 0, 0, OP_REPNE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 381 | OP("rep(e)", 0, 0, 0, OP_REPE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 382 | OP("hlt", 0, 0, 0, OP_HLT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_PRIVILEGED),
|
---|
| 383 | OP("cmc", 0, 0, 0, OP_CMC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 384 | OP("Unary Grp3 %Eb", IDX_ParseGrp3, 0, 0, OP_UNARY_GRP3, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 385 | OP("Unary Grp3 %Ev", IDX_ParseGrp3, 0, 0, OP_UNARY_GRP3, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 386 | OP("clc", 0, 0, 0, OP_CLC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 387 | OP("stc", 0, 0, 0, OP_STC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 388 | OP("cli", 0, 0, 0, OP_CLI, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 389 | OP("sti", 0, 0, 0, OP_STI, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED | DISOPTYPE_INHIBIT_IRQS),
|
---|
| 390 | OP("cld", 0, 0, 0, OP_CLD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 391 | OP("std", 0, 0, 0, OP_STD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 392 | OP("inc/dec Grp4", IDX_ParseGrp4, 0, 0, OP_INC_GRP4, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 393 | OP("Indirect Grp5", IDX_ParseGrp5, 0, 0, OP_IND_GRP5, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 394 | };
|
---|
| 395 |
|
---|
[103511] | 396 | const DISOPCODE g_OpcodeLES =
|
---|
| 397 | OP("les %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LES, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64);
|
---|
| 398 | const DISOPCODE g_OpcodeLDS =
|
---|
| 399 | OP("lds %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LDS, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_INVALID_64 | DISOPTYPE_RRM_DANGEROUS);
|
---|
[1] | 400 |
|
---|
[41690] | 401 | const DISOPCODE g_aTwoByteMapX86[256] =
|
---|
[1] | 402 | {
|
---|
| 403 | /* 0 */
|
---|
[41676] | 404 | OP("Grp6", IDX_ParseGrp6, 0, 0, OP_GRP6, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 405 | OP("Grp7", IDX_ParseGrp7, 0, 0, OP_GRP7, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 406 | OP("lar %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_LAR, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 407 | OP("lsl %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_LSL, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
[1] | 408 | INVALID_OPCODE,
|
---|
[99220] | 409 | OP("syscall", 0, 0, 0, OP_SYSCALL, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_ONLY_64),
|
---|
[41676] | 410 | OP("clts", 0, 0, 0, OP_CLTS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
[99220] | 411 | OP("sysret", 0, 0, 0, OP_SYSRET, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_X86_ONLY_64),
|
---|
[41676] | 412 | OP("invd", 0, 0, 0, OP_INVD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
| 413 | OP("wbinvd", 0, 0, 0, OP_WBINVD, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
[1] | 414 | INVALID_OPCODE,
|
---|
[41676] | 415 | OP("Two Byte Illegal Opcodes UD2", 0, 0, 0, OP_ILLUD2, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_ILLEGAL),
|
---|
[1] | 416 | INVALID_OPCODE,
|
---|
| 417 | /* NOP Ev or prefetch (Intel vs AMD) */
|
---|
[41676] | 418 | OP("nop %Ev/prefetch", IDX_ParseModRM, 0, 0, OP_NOP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 419 | OP("femms", 0, 0, 0, OP_FEMMS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 420 | OP("3DNow! Esc", IDX_Parse3DNow, 0, 0, OP_3DNOW, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 421 |
|
---|
| 422 | /* 1 */
|
---|
[41676] | 423 | OP("movups %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVUPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 424 | OP("movups %Wps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVUPS, OP_PARM_Wps, OP_PARM_Vps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53245] | 425 | /* Next instruction has the following format:
|
---|
| 426 | * &name1/name2,
|
---|
| 427 | * where name1 is used when one of the operands
|
---|
| 428 | * is a location in memory, name2 otherwise. */
|
---|
[53172] | 429 | OP("&movlps/movhlps %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVLPS, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 430 | OP("movlps %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVLPS, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 431 | OP("unpcklps %Vps,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_UNPCKLPS, OP_PARM_Vps, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 432 | OP("unpckhps %Vps,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_UNPCKHPS, OP_PARM_Vps, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 433 | /* can also be movlhps when reg->reg */
|
---|
[53172] | 434 | OP("&movhps/movlhps %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVHPS, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 435 | OP("movhps %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVHPS, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 436 | OP("prefetch Grp16", IDX_ParseGrp16, 0, 0, OP_PREFETCH_GRP16, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 437 | INVALID_OPCODE,
|
---|
| 438 | INVALID_OPCODE,
|
---|
| 439 | INVALID_OPCODE,
|
---|
| 440 | INVALID_OPCODE,
|
---|
| 441 | INVALID_OPCODE,
|
---|
| 442 | INVALID_OPCODE,
|
---|
[41676] | 443 | OP("nop %Ev", IDX_ParseModRM, 0, 0, OP_NOP, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 444 |
|
---|
| 445 | /* 2 */
|
---|
[99220] | 446 | OP("mov %Rd,%Cd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_CR, OP_PARM_Rd, OP_PARM_Cd, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_MOD_FIXED_11 | DISOPTYPE_X86_FORCED_32_OP_SIZE_X86),
|
---|
| 447 | OP("mov %Rd,%Dd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_DR, OP_PARM_Rd, OP_PARM_Dd, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_MOD_FIXED_11 | DISOPTYPE_X86_FORCED_32_OP_SIZE_X86),
|
---|
| 448 | OP("mov %Cd,%Rd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_CR, OP_PARM_Cd, OP_PARM_Rd, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_MOD_FIXED_11 | DISOPTYPE_X86_FORCED_32_OP_SIZE_X86),
|
---|
| 449 | OP("mov %Dd,%Rd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_DR, OP_PARM_Dd, OP_PARM_Rd, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED | DISOPTYPE_X86_MOD_FIXED_11 | DISOPTYPE_X86_FORCED_32_OP_SIZE_X86),
|
---|
[1] | 450 | /* only valid for Pentium Pro & Pentium II */
|
---|
[41676] | 451 | OP("mov %Rd,%Td", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_TR, OP_PARM_Rd, OP_PARM_Td, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
[1] | 452 | INVALID_OPCODE,
|
---|
| 453 | /* only valid for Pentium Pro & Pentium II */
|
---|
[41676] | 454 | OP("mov %Td,%Rd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOV_TR, OP_PARM_Td, OP_PARM_Rd, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
[1] | 455 | INVALID_OPCODE,
|
---|
| 456 |
|
---|
[41676] | 457 | OP("movaps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVAPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 458 | OP("movaps %Wps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVAPS, OP_PARM_Wps, OP_PARM_Vps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 459 | OP("cvtpi2ps %Vps,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPI2PS,OP_PARM_Vps, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 460 | OP("movntps %Wps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTPS, OP_PARM_Wps, OP_PARM_Vps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 461 | OP("cvttps2pi %Qq,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTPS2PI,OP_PARM_Qq, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 462 | OP("cvtps2pi %Qq,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPS2PI,OP_PARM_Qq, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 463 | OP("ucomiss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_UCOMISS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 464 | OP("comiss %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_COMISS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 465 |
|
---|
| 466 | /* 3 */
|
---|
[41676] | 467 | OP("wrmsr", 0, 0, 0, OP_WRMSR, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 468 | OP("rdtsc", 0, 0, 0, OP_RDTSC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
| 469 | OP("rdmsr", 0, 0, 0, OP_RDMSR, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
| 470 | OP("rdpmc", 0, 0, 0, OP_RDPMC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_PRIVILEGED),
|
---|
| 471 | OP("sysenter", 0, 0, 0, OP_SYSENTER,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW),
|
---|
| 472 | OP("sysexit", 0, 0, 0, OP_SYSEXIT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW),
|
---|
[1] | 473 | INVALID_OPCODE,
|
---|
[53052] | 474 | OP("getsec", 0, 0, 0, OP_GETSEC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[65876] | 475 | OP("3 byte escape A4", IDX_ParseThreeByteEsc4, 0, 0, OP_3B_ESC4, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 476 | INVALID_OPCODE,
|
---|
[65876] | 477 | OP("3 byte escape A5", IDX_ParseThreeByteEsc5, 0, 0, OP_3B_ESC5, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 478 | INVALID_OPCODE,
|
---|
| 479 | /* SSE2 */
|
---|
| 480 | INVALID_OPCODE,
|
---|
| 481 | INVALID_OPCODE,
|
---|
| 482 | INVALID_OPCODE,
|
---|
[61017] | 483 | INVALID_OPCODE,
|
---|
[1] | 484 |
|
---|
| 485 | /* 4 */
|
---|
[41676] | 486 | OP("cmovo %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVO, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 487 | OP("cmovno %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNO, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 488 | OP("cmovc %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVC, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 489 | OP("cmovnc %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNC, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 490 | OP("cmovz %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVZ, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 491 | OP("cmovnz %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNZ, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 492 | OP("cmovbe %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVBE, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 493 | OP("cmovnbe %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNBE, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 494 | OP("cmovs %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVS, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 495 | OP("cmovns %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNS, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 496 | OP("cmovp %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVP, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 497 | OP("cmovnp %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNP, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 498 | OP("cmovl %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 499 | OP("cmovnl %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 500 | OP("cmovle %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVLE, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 501 | OP("cmovnle %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMOVNLE, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 502 |
|
---|
| 503 | /* 5 */
|
---|
[41676] | 504 | OP("movmskps %Ed,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVMSKPS,OP_PARM_Ed, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 505 | OP("sqrtps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_SQRTPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 506 | OP("rsqrtps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_RSQRTPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 507 | OP("rcpps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_RCPPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 508 | OP("andps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_ANDPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 509 | OP("andnps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_ANDNPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 510 | OP("orps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_ORPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 511 | OP("xorps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_XORPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 512 | OP("addps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADDPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 513 | OP("mulps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MULPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 514 | OP("cvtps2pd %Vpd,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPS2PD,OP_PARM_Vpd, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 515 | OP("cvtdq2ps %Vps,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTDQ2PS,OP_PARM_Vps, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 516 | OP("subps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUBPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 517 | OP("minps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MINPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 518 | OP("divps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_DIVPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 519 | OP("maxps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_MAXPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 520 |
|
---|
| 521 | /* 6 */
|
---|
[41676] | 522 | OP("punpcklbw %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLBW, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 523 | OP("punpcklwd %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLWD, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 524 | OP("punpckldq %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLDQ, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 525 | OP("packsswb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKSSWB,OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 526 | OP("pcmpgtb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 527 | OP("pcmpgtw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 528 | OP("pcmpgtd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 529 | OP("packuswb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKUSWB,OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 530 | OP("punpckhbw %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHBW, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 531 | OP("punpckhwd %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHWD, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 532 | OP("punpckhdq %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHDQ, OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 533 | OP("packssdw %Pq,%Qd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKSSDW,OP_PARM_Pq, OP_PARM_Qd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[36766] | 534 | INVALID_OPCODE, /** @todo 0x0f 0x6c punpcklqdq Vdq,Wdq */
|
---|
| 535 | INVALID_OPCODE, /** @todo 0x0f 0x6d punpckhqdq Vdq,Wdq */
|
---|
[41676] | 536 | OP("movd %Pd,%Ed", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVD, OP_PARM_Pd, OP_PARM_Ed, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 537 | OP("movq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 538 |
|
---|
| 539 | /* 7 */
|
---|
[41676] | 540 | OP("pshufw %Pq,%Qq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PSHUFW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 541 | OP("Grp12", IDX_ParseGrp12, 0, 0, OP_GRP12, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 542 | OP("Grp13", IDX_ParseGrp13, 0, 0, OP_GRP13, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 543 | OP("Grp14", IDX_ParseGrp14, 0, 0, OP_GRP14, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 544 | OP("pcmpeqb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 545 | OP("pcmpeqw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 546 | OP("pcmpeqd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 547 | OP("emms", 0, 0, 0, OP_EMMS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 548 | OP("vmread %Ey,%Gy", IDX_ParseModRM, IDX_UseModRM, 0, OP_VMREAD, OP_PARM_Ey, OP_PARM_Gy, OP_PARM_NONE, DISOPTYPE_HARMLESS|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 549 | OP("vmwrite %Gy,%Ey", IDX_ParseModRM, IDX_UseModRM, 0, OP_VMWRITE, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[41676] | 550 | OP("MMX UD 0x7A", 0, 0, 0, OP_MMX_UD7A,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 551 | OP("MMX UD 0x7B", 0, 0, 0, OP_MMX_UD7B,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 552 | OP("MMX UD 0x7C", 0, 0, 0, OP_MMX_UD7C,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS), /** @todo 0x0f 0x7c haddpd/haddps */
|
---|
| 553 | OP("MMX UD 0x7D", 0, 0, 0, OP_MMX_UD7D,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS), /** @todo 0x0f 0x7d hsubpd/hsubps */
|
---|
| 554 | OP("movd %Ed,%Pd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVD, OP_PARM_Ed, OP_PARM_Pd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 555 | OP("movq %Qq,%Pq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVQ, OP_PARM_Qq, OP_PARM_Pq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 556 |
|
---|
| 557 | /* 8 */
|
---|
[99220] | 558 | OP("jo %Jv", IDX_ParseImmVRel, 0, 0, OP_JO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 559 | OP("jno %Jv", IDX_ParseImmVRel, 0, 0, OP_JNO, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 560 | OP("jc %Jv", IDX_ParseImmVRel, 0, 0, OP_JC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 561 | OP("jnc %Jv", IDX_ParseImmVRel, 0, 0, OP_JNC, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 562 | OP("je %Jv", IDX_ParseImmVRel, 0, 0, OP_JE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 563 | OP("jne %Jv", IDX_ParseImmVRel, 0, 0, OP_JNE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 564 | OP("jbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 565 | OP("jnbe %Jv", IDX_ParseImmVRel, 0, 0, OP_JNBE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 566 | OP("js %Jv", IDX_ParseImmVRel, 0, 0, OP_JS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 567 | OP("jns %Jv", IDX_ParseImmVRel, 0, 0, OP_JNS, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 568 | OP("jp %Jv", IDX_ParseImmVRel, 0, 0, OP_JP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 569 | OP("jnp %Jv", IDX_ParseImmVRel, 0, 0, OP_JNP, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 570 | OP("jl %Jv", IDX_ParseImmVRel, 0, 0, OP_JL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 571 | OP("jnl %Jv", IDX_ParseImmVRel, 0, 0, OP_JNL, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 572 | OP("jle %Jv", IDX_ParseImmVRel, 0, 0, OP_JLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 573 | OP("jnle %Jv", IDX_ParseImmVRel, 0, 0, OP_JNLE, OP_PARM_Jv, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW|DISOPTYPE_RELATIVE_CONTROLFLOW|DISOPTYPE_COND_CONTROLFLOW|DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[1] | 574 |
|
---|
| 575 | /* 9 */
|
---|
[41676] | 576 | OP("seto %Eb", IDX_ParseModRM, 0, 0, OP_SETO, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 577 | OP("setno %Eb", IDX_ParseModRM, 0, 0, OP_SETNO, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 578 | OP("setc %Eb", IDX_ParseModRM, 0, 0, OP_SETC, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 579 | OP("setnc %Eb", IDX_ParseModRM, 0, 0, OP_SETNC, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 580 | OP("sete %Eb", IDX_ParseModRM, 0, 0, OP_SETE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 581 | OP("setne %Eb", IDX_ParseModRM, 0, 0, OP_SETNE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 582 | OP("setbe %Eb", IDX_ParseModRM, 0, 0, OP_SETBE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 583 | OP("setnbe %Eb", IDX_ParseModRM, 0, 0, OP_SETNBE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 584 | OP("sets %Eb", IDX_ParseModRM, 0, 0, OP_SETS, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 585 | OP("setns %Eb", IDX_ParseModRM, 0, 0, OP_SETNS, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 586 | OP("setp %Eb", IDX_ParseModRM, 0, 0, OP_SETP, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 587 | OP("setnp %Eb", IDX_ParseModRM, 0, 0, OP_SETNP, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 588 | OP("setl %Eb", IDX_ParseModRM, 0, 0, OP_SETL, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 589 | OP("setnl %Eb", IDX_ParseModRM, 0, 0, OP_SETNL, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 590 | OP("setle %Eb", IDX_ParseModRM, 0, 0, OP_SETLE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 591 | OP("setnle %Eb", IDX_ParseModRM, 0, 0, OP_SETNLE, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 592 |
|
---|
| 593 | /* a */
|
---|
[99220] | 594 | OP("push fs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
| 595 | OP("pop fs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_FS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 596 | OP("cpuid", 0, 0, 0, OP_CPUID, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_POTENTIALLY_DANGEROUS),
|
---|
| 597 | OP("bt %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BT, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 598 | OP("shld %Ev,%Gv,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_SHLD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 599 | OP("shld %Ev,%Gv,CL", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHLD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 600 | INVALID_OPCODE,
|
---|
| 601 | INVALID_OPCODE,
|
---|
[99220] | 602 | OP("push gs", IDX_ParseFixedReg, 0, 0, OP_PUSH, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
| 603 | OP("pop gs", IDX_ParseFixedReg, 0, 0, OP_POP, OP_PARM_REG_GS, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 604 | OP("rsm", 0, 0, 0, OP_RSM, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 605 | OP("bts %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BTS, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 606 | OP("shrd %Ev,%Gv,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_SHRD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 607 | OP("shrd %Ev,%Gv,CL", IDX_ParseModRM, IDX_UseModRM, IDX_ParseFixedReg,OP_SHRD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_REG_CL, DISOPTYPE_HARMLESS),
|
---|
| 608 | OP("Grp15", IDX_ParseGrp15, 0, 0, OP_GRP15, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 609 | OP("imul %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_IMUL, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 610 |
|
---|
| 611 | /* b */
|
---|
[41676] | 612 | OP("cmpxchg %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMPXCHG, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 613 | OP("cmpxchg %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_CMPXCHG, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 614 | OP("lss %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LSS, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_RRM_DANGEROUS),
|
---|
| 615 | OP("btr %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BTR, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 616 | OP("lfs %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LFS, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 617 | OP("lgs %Gv,%Mp", IDX_ParseModRM, IDX_UseModRM, 0, OP_LGS, OP_PARM_Gv, OP_PARM_Mp, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 618 | OP("movzx %Gv,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVZX, OP_PARM_Gv, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 619 | OP("movzx %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVZX, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[36766] | 620 | INVALID_OPCODE, /** @todo 0x0f 0xb8 popcnt Gv,Ev / jmpe */
|
---|
[41676] | 621 | OP("Grp10 Invalid Op", IDX_ParseGrp10, 0, 0, OP_GRP10_INV,OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 622 | OP("Grp8", IDX_ParseGrp8, 0, 0, OP_GRP8, OP_PARM_Ev, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 623 | OP("btc %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_BTC, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[42719] | 624 | OP("bsf %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_BSF, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 625 | OP("bsr %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_BSR, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 626 | OP("movsx %Gv,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSX, OP_PARM_Gv, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 627 | OP("movsx %Gv,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSX, OP_PARM_Gv, OP_PARM_Ew, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 628 |
|
---|
| 629 | /* c */
|
---|
[41676] | 630 | OP("xadd %Eb,%Gb", IDX_ParseModRM, IDX_UseModRM, 0, OP_XADD, OP_PARM_Eb, OP_PARM_Gb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 631 | OP("xadd %Ev,%Gv", IDX_ParseModRM, IDX_UseModRM, 0, OP_XADD, OP_PARM_Ev, OP_PARM_Gv, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 632 | OP("cmpps %Vps,%Wps,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_CMPPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 633 | /* SSE2 */
|
---|
[61017] | 634 | OP("movnti %Ed,%Gd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTI, OP_PARM_Ed, OP_PARM_Gd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 635 | OP("pinsrw %Pq,%Ed,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PINSRW, OP_PARM_Pq, OP_PARM_Ed, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 636 | OP("pextrw %Gd,%Pq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PEXTRW, OP_PARM_Gd, OP_PARM_Pq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 637 | OP("shufps %Vps,%Wps,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_SHUFPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 638 | OP("Grp9", IDX_ParseGrp9, 0, 0, OP_GRP9, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 639 | OP("bswap EAX", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_EAX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 640 | OP("bswap ECX", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_ECX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 641 | OP("bswap EDX", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_EDX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 642 | OP("bswap EBX", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_EBX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 643 | OP("bswap ESP", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_ESP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 644 | OP("bswap EBP", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_EBP, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 645 | OP("bswap ESI", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_ESI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
| 646 | OP("bswap EDI", IDX_ParseFixedReg, 0, 0, OP_BSWAP, OP_PARM_REG_EDI, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_REXB_EXTENDS_OPREG),
|
---|
[1] | 647 |
|
---|
| 648 | /* d */
|
---|
[36766] | 649 | INVALID_OPCODE, /** @todo 0x0f 0xd0 addsubpd/addsubps */
|
---|
[41676] | 650 | OP("psrlw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 651 | OP("psrld %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 652 | OP("psrlq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 653 | OP("paddq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 654 | OP("pmullw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULLW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95479] | 655 | INVALID_OPCODE,
|
---|
[99220] | 656 | OP("pmovmskb %Gd,%Pq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVMSKB,OP_PARM_Gd, OP_PARM_Pq, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 657 | OP("psubusb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBUSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 658 | OP("psubusw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBUSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 659 | OP("pminub %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINUB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 660 | OP("pand %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAND, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 661 | OP("paddusb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDUSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 662 | OP("paddusw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDUSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 663 | OP("pmaxub %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXUB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 664 | OP("pandn %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PANDN, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 665 |
|
---|
| 666 | /* e */
|
---|
[53094] | 667 | OP("pavgb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAVGB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 668 | OP("psraw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRAW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 669 | OP("psrad %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRAD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 670 | OP("pavgw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAVGW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 671 | OP("pmulhuw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHUW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 672 | OP("pmulhw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 673 | INVALID_OPCODE,
|
---|
[41676] | 674 | OP("movntq %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTQ, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 675 | OP("psubsb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 676 | OP("psubsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 677 | OP("pminsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 678 | OP("por %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_POR, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 679 | OP("paddsb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 680 | OP("paddsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 681 | OP("pmaxsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 682 | OP("pxor %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PXOR, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 683 |
|
---|
| 684 | /* f */
|
---|
[53094] | 685 | INVALID_OPCODE,
|
---|
[41676] | 686 | OP("psllw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSLLW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 687 | OP("pslld %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSLLD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 688 | OP("psllq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSSQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 689 | OP("pmuludq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULUDQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 690 | OP("pmaddwd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMADDWD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 691 | OP("psadbw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSADBW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 692 | OP("maskmovq %Ppi,%Qpi", IDX_ParseModRM, IDX_UseModRM, 0, OP_MASKMOVQ,OP_PARM_Ppi, OP_PARM_Qpi, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 693 | OP("psubb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 694 | OP("psubw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 695 | OP("psubd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 696 | OP("psubq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 697 | OP("paddb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 698 | OP("paddw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 699 | OP("paddd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 700 | INVALID_OPCODE,
|
---|
| 701 | };
|
---|
| 702 |
|
---|
[41692] | 703 | /** Two byte opcode map with prefix 0x66 */
|
---|
[41690] | 704 | const DISOPCODE g_aTwoByteMapX86_PF66[256] =
|
---|
[1] | 705 | {
|
---|
| 706 | /* 0 */
|
---|
| 707 | INVALID_OPCODE_BLOCK
|
---|
| 708 |
|
---|
| 709 | /* 1 */
|
---|
[41676] | 710 | OP("movupd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVUPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 711 | OP("movupd %Wpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVUPD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 712 | OP("movlpd %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVLPD, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[61135] | 713 | OP("movlpd %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVLPD, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 714 | OP("unpcklpd %Vpd,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_UNPCKLPD,OP_PARM_Vpd, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 715 | OP("unpckhpd %Vpd,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_UNPCKHPD,OP_PARM_Vpd, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 716 | OP("movhpd %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVHPD, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 717 | OP("movhpd %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVHPD, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 718 | INVALID_OPCODE,
|
---|
| 719 | INVALID_OPCODE,
|
---|
| 720 | INVALID_OPCODE,
|
---|
| 721 | INVALID_OPCODE,
|
---|
| 722 | INVALID_OPCODE,
|
---|
| 723 | INVALID_OPCODE,
|
---|
| 724 | INVALID_OPCODE,
|
---|
| 725 | INVALID_OPCODE,
|
---|
| 726 |
|
---|
| 727 | /* 2 */
|
---|
| 728 | INVALID_OPCODE,
|
---|
| 729 | INVALID_OPCODE,
|
---|
| 730 | INVALID_OPCODE,
|
---|
| 731 | INVALID_OPCODE,
|
---|
| 732 | INVALID_OPCODE,
|
---|
| 733 | INVALID_OPCODE,
|
---|
| 734 | INVALID_OPCODE,
|
---|
| 735 | INVALID_OPCODE,
|
---|
[41676] | 736 | OP("movapd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVAPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 737 | OP("movapd %Wpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVAPD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 738 | OP("cvtpi2pd %Vpd,%Qdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPI2PD,OP_PARM_Vpd, OP_PARM_Qdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 739 | OP("movntpd %Wpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTPD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 740 | OP("cvttpd2pi %Qdq,%Wpd",IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTPD2PI,OP_PARM_Qdq, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 741 | OP("cvtpd2pi %Qdq,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPD2PI,OP_PARM_Qdq, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 742 | OP("ucomisd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_UCOMISD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 743 | OP("comisd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_COMISD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 744 |
|
---|
| 745 | /* 3 */
|
---|
[13088] | 746 | INVALID_OPCODE,
|
---|
| 747 | INVALID_OPCODE,
|
---|
| 748 | INVALID_OPCODE,
|
---|
| 749 | INVALID_OPCODE,
|
---|
| 750 | INVALID_OPCODE,
|
---|
| 751 | INVALID_OPCODE,
|
---|
| 752 | INVALID_OPCODE,
|
---|
| 753 | INVALID_OPCODE,
|
---|
[65876] | 754 | OP("3 byte escape A4", IDX_ParseThreeByteEsc4, 0, 0, OP_3B_ESC4, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13088] | 755 | INVALID_OPCODE,
|
---|
[65876] | 756 | OP("3 byte escape A5", IDX_ParseThreeByteEsc5, 0, 0, OP_3B_ESC5, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13088] | 757 | INVALID_OPCODE,
|
---|
| 758 | INVALID_OPCODE,
|
---|
| 759 | INVALID_OPCODE,
|
---|
| 760 | INVALID_OPCODE,
|
---|
| 761 | INVALID_OPCODE,
|
---|
[1] | 762 |
|
---|
| 763 | /* 4 */
|
---|
| 764 | INVALID_OPCODE_BLOCK
|
---|
| 765 |
|
---|
| 766 | /* 5 */
|
---|
[41676] | 767 | OP("movmskpd %Ed,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVMSKPD,OP_PARM_Ed, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 768 | OP("sqrtpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_SQRTPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 769 | INVALID_OPCODE,
|
---|
| 770 | INVALID_OPCODE,
|
---|
[41676] | 771 | OP("andpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_ANDPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 772 | OP("andnpd %Vps,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_ANDNPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 773 | OP("orpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_ORPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 774 | OP("xorpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_XORPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 775 | OP("addpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADDPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 776 | OP("mulpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MULPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 777 | OP("cvtpd2ps %Vps,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPD2PS,OP_PARM_Vps, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[61135] | 778 | OP("cvtps2dq %Vdq,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPS2DQ,OP_PARM_Vdq, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 779 | OP("subpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUBPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 780 | OP("minpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MINPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 781 | OP("divpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_DIVPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 782 | OP("maxpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MAXPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 783 |
|
---|
| 784 | /* 6 */
|
---|
[41676] | 785 | OP("punpcklbw %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLBW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 786 | OP("punpcklwd %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLWD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 787 | OP("punpckldq %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLDQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 788 | OP("packsswb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKSSWB,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 789 | OP("pcmpgtb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 790 | OP("pcmpgtw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 791 | OP("pcmpgtd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 792 | OP("packuswb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKUSWB,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 793 | OP("punpckhbw %Pdq,%Qdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHBW, OP_PARM_Pdq, OP_PARM_Qdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 794 | OP("punpckhwd %Pdq,%Qdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHWD, OP_PARM_Pdq, OP_PARM_Qdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 795 | OP("punpckhdq %Pdq,%Qdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHDQ, OP_PARM_Pdq, OP_PARM_Qdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 796 | OP("packssdw %Pdq,%Qdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKSSDW,OP_PARM_Pdq, OP_PARM_Qdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 797 | OP("punpcklqdq %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKLQDQ,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 798 | OP("punpckhqdq %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_PUNPCKHQDQ,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 799 | OP("movd %Vdq,%Ed", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVD, OP_PARM_Vdq, OP_PARM_Ed, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 800 | OP("movdqa %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDQA, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 801 |
|
---|
| 802 | /* 7 */
|
---|
[41676] | 803 | OP("pshufd %Vdq,%Wdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PSHUFD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 804 | INVALID_OPCODE,
|
---|
| 805 | INVALID_OPCODE,
|
---|
| 806 | INVALID_OPCODE,
|
---|
[41676] | 807 | OP("pcmpeqb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQB, OP_PARM_Vdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 808 | OP("pcmpeqw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQW, OP_PARM_Vdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 809 | OP("pcmpeqd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQD, OP_PARM_Vdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 810 | INVALID_OPCODE,
|
---|
| 811 | INVALID_OPCODE,
|
---|
| 812 | INVALID_OPCODE,
|
---|
| 813 | INVALID_OPCODE,
|
---|
| 814 | INVALID_OPCODE,
|
---|
[53007] | 815 | INVALID_OPCODE,
|
---|
| 816 | INVALID_OPCODE,
|
---|
[41676] | 817 | OP("movd %Ed,%Vdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVD, OP_PARM_Ed, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 818 | OP("movdqa %Qq,%Pq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDQA, OP_PARM_Wdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 819 |
|
---|
| 820 | /* 8 */
|
---|
| 821 | INVALID_OPCODE_BLOCK
|
---|
| 822 |
|
---|
| 823 | /* 9 */
|
---|
| 824 | INVALID_OPCODE_BLOCK
|
---|
| 825 |
|
---|
| 826 | /* a */
|
---|
| 827 | INVALID_OPCODE_BLOCK
|
---|
| 828 |
|
---|
| 829 | /* b */
|
---|
| 830 | INVALID_OPCODE_BLOCK
|
---|
| 831 |
|
---|
| 832 | /* c */
|
---|
| 833 | INVALID_OPCODE,
|
---|
| 834 | INVALID_OPCODE,
|
---|
[41676] | 835 | OP("cmppd %Vpd,%Wpd,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_CMPPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 836 | INVALID_OPCODE,
|
---|
[41676] | 837 | OP("pinsrw %Vdq,%Ed,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PINSRW, OP_PARM_Vdq, OP_PARM_Ed, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 838 | OP("pextrw %Gd,%Vdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PEXTRW, OP_PARM_Gd, OP_PARM_Vdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 839 | OP("shufpd %Vpd,%Wpd,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_SHUFPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 840 | INVALID_OPCODE,
|
---|
| 841 | INVALID_OPCODE,
|
---|
| 842 | INVALID_OPCODE,
|
---|
| 843 | INVALID_OPCODE,
|
---|
| 844 | INVALID_OPCODE,
|
---|
| 845 | INVALID_OPCODE,
|
---|
| 846 | INVALID_OPCODE,
|
---|
| 847 | INVALID_OPCODE,
|
---|
| 848 | INVALID_OPCODE,
|
---|
| 849 |
|
---|
| 850 | /* d */
|
---|
| 851 | INVALID_OPCODE,
|
---|
[41676] | 852 | OP("psrlw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 853 | OP("psrld %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 854 | OP("psrlq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRLQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 855 | OP("paddq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 856 | OP("pmullw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULLW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 857 | OP("movq %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVQ, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 858 | OP("pmovmskb %Gd,%Ux", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVMSKB,OP_PARM_Gd, OP_PARM_Ux, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41676] | 859 | OP("psubusb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBUSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 860 | OP("psubusw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBUSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 861 | OP("pminub %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINUB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 862 | OP("pand %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAND, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 863 | OP("paddusb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDUSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 864 | OP("paddusw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDUSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 865 | OP("pmaxub %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXUB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 866 | OP("pandn %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PANDN, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 867 |
|
---|
| 868 | /* e */
|
---|
[53094] | 869 | OP("pavgb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAVGB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 870 | OP("psraw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRAW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 871 | OP("psrad %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSRAD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 872 | OP("pavgw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAVGW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 873 | OP("pmulhuw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHUW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 874 | OP("pmulhw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 875 | OP("cvttpd2dq %Vdq,%Wpd",IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTPD2DQ,OP_PARM_Vdq, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 876 | OP("movntdq %Wdq,%Vdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTDQ, OP_PARM_Wdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 877 | OP("psubsb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 878 | OP("psubsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 879 | OP("pminsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 880 | OP("por %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_POR, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 881 | OP("paddsb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 882 | OP("paddsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 883 | OP("pmaxsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 884 | OP("pxor %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PXOR, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 885 |
|
---|
| 886 | /* f */
|
---|
| 887 | INVALID_OPCODE,
|
---|
[41676] | 888 | OP("psllw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSLLW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 889 | OP("pslld %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSLLD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 890 | OP("psllq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSSQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 891 | OP("pmuludq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULUDQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 892 | OP("pmaddwd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMADDWD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 893 | OP("psadbw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSADBW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 894 | OP("maskmovdqu %Vdq,%Wdq",IDX_ParseModRM, IDX_UseModRM, 0, OP_MASKMOVDQU, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 895 | OP("psubb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 896 | OP("psubw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 897 | OP("psubd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 898 | OP("psubq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSUBD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 899 | OP("paddb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 900 | OP("paddw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 901 | OP("paddd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PADDD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 902 | INVALID_OPCODE,
|
---|
| 903 | };
|
---|
| 904 |
|
---|
| 905 | /* Two byte opcode map with prefix 0xF2 */
|
---|
[41690] | 906 | const DISOPCODE g_aTwoByteMapX86_PFF2[256] =
|
---|
[1] | 907 | {
|
---|
| 908 | /* 0 */
|
---|
| 909 | INVALID_OPCODE_BLOCK
|
---|
| 910 |
|
---|
| 911 | /* 1 */
|
---|
[41676] | 912 | OP("movsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 913 | OP("movsd %Wsd,%Vsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53052] | 914 | OP("movddup %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDDUP, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 915 | INVALID_OPCODE,
|
---|
| 916 | INVALID_OPCODE,
|
---|
| 917 | INVALID_OPCODE,
|
---|
| 918 | INVALID_OPCODE,
|
---|
| 919 | INVALID_OPCODE,
|
---|
| 920 | INVALID_OPCODE,
|
---|
| 921 | INVALID_OPCODE,
|
---|
| 922 | INVALID_OPCODE,
|
---|
| 923 | INVALID_OPCODE,
|
---|
| 924 | INVALID_OPCODE,
|
---|
| 925 | INVALID_OPCODE,
|
---|
| 926 | INVALID_OPCODE,
|
---|
| 927 | INVALID_OPCODE,
|
---|
| 928 |
|
---|
| 929 | /* 2 */
|
---|
| 930 | INVALID_OPCODE,
|
---|
| 931 | INVALID_OPCODE,
|
---|
| 932 | INVALID_OPCODE,
|
---|
| 933 | INVALID_OPCODE,
|
---|
| 934 | INVALID_OPCODE,
|
---|
| 935 | INVALID_OPCODE,
|
---|
| 936 | INVALID_OPCODE,
|
---|
| 937 | INVALID_OPCODE,
|
---|
| 938 | INVALID_OPCODE,
|
---|
| 939 | INVALID_OPCODE,
|
---|
[41676] | 940 | OP("cvtsi2sd %Vsd,%Ed", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSI2SD,OP_PARM_Vsd, OP_PARM_Ed, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 941 | INVALID_OPCODE,
|
---|
[41676] | 942 | OP("cvttsd2si %Gd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTSD2SI,OP_PARM_Gd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 943 | OP("cvtsd2si %Gd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSD2SI,OP_PARM_Gd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 944 | INVALID_OPCODE,
|
---|
| 945 | INVALID_OPCODE,
|
---|
| 946 |
|
---|
| 947 | /* 3 */
|
---|
[13241] | 948 | INVALID_OPCODE,
|
---|
| 949 | INVALID_OPCODE,
|
---|
| 950 | INVALID_OPCODE,
|
---|
| 951 | INVALID_OPCODE,
|
---|
| 952 | INVALID_OPCODE,
|
---|
| 953 | INVALID_OPCODE,
|
---|
| 954 | INVALID_OPCODE,
|
---|
| 955 | INVALID_OPCODE,
|
---|
[65876] | 956 | OP("3 byte escape A4", IDX_ParseThreeByteEsc4, 0, 0, OP_3B_ESC4, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 957 | INVALID_OPCODE,
|
---|
| 958 | INVALID_OPCODE,
|
---|
| 959 | INVALID_OPCODE,
|
---|
| 960 | INVALID_OPCODE,
|
---|
| 961 | INVALID_OPCODE,
|
---|
| 962 | INVALID_OPCODE,
|
---|
| 963 | INVALID_OPCODE,
|
---|
[1] | 964 |
|
---|
| 965 | /* 4 */
|
---|
| 966 | INVALID_OPCODE_BLOCK
|
---|
| 967 |
|
---|
| 968 | /* 5 */
|
---|
| 969 | INVALID_OPCODE,
|
---|
[41676] | 970 | OP("sqrtsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_SQRTSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 971 | INVALID_OPCODE,
|
---|
| 972 | INVALID_OPCODE,
|
---|
| 973 | INVALID_OPCODE,
|
---|
| 974 | INVALID_OPCODE,
|
---|
| 975 | INVALID_OPCODE,
|
---|
| 976 | INVALID_OPCODE,
|
---|
[41676] | 977 | OP("addsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADDSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 978 | OP("mulsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MULSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 979 | OP("cvtsd2ss %Vss,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSD2SS,OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 980 | INVALID_OPCODE,
|
---|
[41676] | 981 | OP("subsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUBSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 982 | OP("minsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MINSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 983 | OP("divsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_DIVSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 984 | OP("maxsd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, OP_MAXSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 985 |
|
---|
| 986 | /* 6 */
|
---|
| 987 | INVALID_OPCODE_BLOCK
|
---|
| 988 |
|
---|
| 989 | /* 7 */
|
---|
[41676] | 990 | OP("pshuflw %Vdq,%Wdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PSHUFLW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 991 | INVALID_OPCODE,
|
---|
| 992 | INVALID_OPCODE,
|
---|
| 993 | INVALID_OPCODE,
|
---|
| 994 | INVALID_OPCODE,
|
---|
| 995 | INVALID_OPCODE,
|
---|
| 996 | INVALID_OPCODE,
|
---|
| 997 | INVALID_OPCODE,
|
---|
| 998 | INVALID_OPCODE,
|
---|
| 999 | INVALID_OPCODE,
|
---|
| 1000 | INVALID_OPCODE,
|
---|
| 1001 | INVALID_OPCODE,
|
---|
| 1002 | INVALID_OPCODE,
|
---|
| 1003 | INVALID_OPCODE,
|
---|
| 1004 | INVALID_OPCODE,
|
---|
| 1005 | INVALID_OPCODE,
|
---|
| 1006 |
|
---|
| 1007 | /* 8 */
|
---|
| 1008 | INVALID_OPCODE_BLOCK
|
---|
| 1009 |
|
---|
| 1010 | /* 9 */
|
---|
| 1011 | INVALID_OPCODE_BLOCK
|
---|
| 1012 |
|
---|
| 1013 | /* a */
|
---|
| 1014 | INVALID_OPCODE_BLOCK
|
---|
| 1015 |
|
---|
| 1016 | /* b */
|
---|
| 1017 | INVALID_OPCODE_BLOCK
|
---|
| 1018 |
|
---|
| 1019 | /* c */
|
---|
| 1020 | INVALID_OPCODE,
|
---|
| 1021 | INVALID_OPCODE,
|
---|
[41676] | 1022 | OP("cmpsd %Vsd,%Wsd,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_CMPSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 1023 | INVALID_OPCODE,
|
---|
| 1024 | INVALID_OPCODE,
|
---|
| 1025 | INVALID_OPCODE,
|
---|
| 1026 | INVALID_OPCODE,
|
---|
| 1027 | INVALID_OPCODE,
|
---|
| 1028 | INVALID_OPCODE,
|
---|
| 1029 | INVALID_OPCODE,
|
---|
| 1030 | INVALID_OPCODE,
|
---|
| 1031 | INVALID_OPCODE,
|
---|
| 1032 | INVALID_OPCODE,
|
---|
| 1033 | INVALID_OPCODE,
|
---|
| 1034 | INVALID_OPCODE,
|
---|
| 1035 | INVALID_OPCODE,
|
---|
| 1036 |
|
---|
| 1037 | /* d */
|
---|
| 1038 | INVALID_OPCODE,
|
---|
| 1039 | INVALID_OPCODE,
|
---|
| 1040 | INVALID_OPCODE,
|
---|
| 1041 | INVALID_OPCODE,
|
---|
| 1042 | INVALID_OPCODE,
|
---|
| 1043 | INVALID_OPCODE,
|
---|
[41676] | 1044 | OP("movdq2q %Pq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDQ2Q, OP_PARM_Pq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1045 | INVALID_OPCODE,
|
---|
| 1046 | INVALID_OPCODE,
|
---|
| 1047 | INVALID_OPCODE,
|
---|
| 1048 | INVALID_OPCODE,
|
---|
| 1049 | INVALID_OPCODE,
|
---|
| 1050 | INVALID_OPCODE,
|
---|
| 1051 | INVALID_OPCODE,
|
---|
| 1052 | INVALID_OPCODE,
|
---|
| 1053 | INVALID_OPCODE,
|
---|
| 1054 |
|
---|
| 1055 | /* e */
|
---|
| 1056 | INVALID_OPCODE,
|
---|
| 1057 | INVALID_OPCODE,
|
---|
| 1058 | INVALID_OPCODE,
|
---|
| 1059 | INVALID_OPCODE,
|
---|
| 1060 | INVALID_OPCODE,
|
---|
| 1061 | INVALID_OPCODE,
|
---|
[41676] | 1062 | OP("cvtpd2dq %Vdq,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTPD2DQ,OP_PARM_Vdq, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1063 | INVALID_OPCODE,
|
---|
| 1064 | INVALID_OPCODE,
|
---|
| 1065 | INVALID_OPCODE,
|
---|
| 1066 | INVALID_OPCODE,
|
---|
| 1067 | INVALID_OPCODE,
|
---|
| 1068 | INVALID_OPCODE,
|
---|
| 1069 | INVALID_OPCODE,
|
---|
| 1070 | INVALID_OPCODE,
|
---|
| 1071 | INVALID_OPCODE,
|
---|
| 1072 |
|
---|
| 1073 | /* f */
|
---|
[53094] | 1074 | OP("lddqu %Vdq,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_LDDQU, OP_PARM_Vdq, OP_PARM_Mdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1075 | INVALID_OPCODE,
|
---|
| 1076 | INVALID_OPCODE,
|
---|
| 1077 | INVALID_OPCODE,
|
---|
| 1078 | INVALID_OPCODE,
|
---|
| 1079 | INVALID_OPCODE,
|
---|
| 1080 | INVALID_OPCODE,
|
---|
| 1081 | INVALID_OPCODE,
|
---|
| 1082 | INVALID_OPCODE,
|
---|
| 1083 | INVALID_OPCODE,
|
---|
| 1084 | INVALID_OPCODE,
|
---|
| 1085 | INVALID_OPCODE,
|
---|
| 1086 | INVALID_OPCODE,
|
---|
| 1087 | INVALID_OPCODE,
|
---|
| 1088 | INVALID_OPCODE,
|
---|
| 1089 | INVALID_OPCODE
|
---|
[1] | 1090 | };
|
---|
| 1091 |
|
---|
| 1092 |
|
---|
| 1093 | /* Two byte opcode map with prefix 0xF3 */
|
---|
[41690] | 1094 | const DISOPCODE g_aTwoByteMapX86_PFF3[256] =
|
---|
[1] | 1095 | {
|
---|
| 1096 | /* 0 */
|
---|
| 1097 | INVALID_OPCODE_BLOCK
|
---|
| 1098 |
|
---|
| 1099 | /* 1 */
|
---|
[41676] | 1100 | OP("movss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1101 | OP("movss %Wss,%Vss", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSS, OP_PARM_Wss, OP_PARM_Vss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53052] | 1102 | OP("movsldup %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSLDUP,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1103 | INVALID_OPCODE,
|
---|
| 1104 | INVALID_OPCODE,
|
---|
| 1105 | INVALID_OPCODE,
|
---|
[53052] | 1106 | OP("movshdup %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVSHDUP,OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1107 | INVALID_OPCODE,
|
---|
| 1108 | INVALID_OPCODE,
|
---|
| 1109 | INVALID_OPCODE,
|
---|
| 1110 | INVALID_OPCODE,
|
---|
| 1111 | INVALID_OPCODE,
|
---|
| 1112 | INVALID_OPCODE,
|
---|
| 1113 | INVALID_OPCODE,
|
---|
| 1114 | INVALID_OPCODE,
|
---|
| 1115 | INVALID_OPCODE,
|
---|
| 1116 |
|
---|
| 1117 | /* 2 */
|
---|
| 1118 | INVALID_OPCODE,
|
---|
| 1119 | INVALID_OPCODE,
|
---|
| 1120 | INVALID_OPCODE,
|
---|
| 1121 | INVALID_OPCODE,
|
---|
| 1122 | INVALID_OPCODE,
|
---|
| 1123 | INVALID_OPCODE,
|
---|
| 1124 | INVALID_OPCODE,
|
---|
| 1125 | INVALID_OPCODE,
|
---|
| 1126 | INVALID_OPCODE,
|
---|
| 1127 | INVALID_OPCODE,
|
---|
[41676] | 1128 | OP("cvtsi2ss %Vss,%Ed", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSI2SS,OP_PARM_Vss, OP_PARM_Ed, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1129 | INVALID_OPCODE,
|
---|
[41676] | 1130 | OP("cvttss2si %Gd,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTSS2SI,OP_PARM_Gd, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1131 | OP("cvtss2si %Gd,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSS2SI,OP_PARM_Gd, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1132 | INVALID_OPCODE,
|
---|
| 1133 | INVALID_OPCODE,
|
---|
| 1134 |
|
---|
| 1135 | /* 3 */
|
---|
| 1136 | INVALID_OPCODE_BLOCK
|
---|
| 1137 |
|
---|
| 1138 | /* 4 */
|
---|
| 1139 | INVALID_OPCODE_BLOCK
|
---|
| 1140 |
|
---|
| 1141 | /* 5 */
|
---|
| 1142 | INVALID_OPCODE,
|
---|
[41676] | 1143 | OP("sqrtss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_SQRTSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1144 | OP("rsqrtss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_RSQRTSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53052] | 1145 | OP("rcpss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_RCPSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1146 | INVALID_OPCODE,
|
---|
| 1147 | INVALID_OPCODE,
|
---|
| 1148 | INVALID_OPCODE,
|
---|
| 1149 | INVALID_OPCODE,
|
---|
[41676] | 1150 | OP("addss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADDSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1151 | OP("mulss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_MULSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1152 | //??
|
---|
[41676] | 1153 | OP("cvtss2sd %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTSD2SS,OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1154 | OP("cvttps2dq %Vdq,%Wps",IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTTPS2DQ,OP_PARM_Vdq, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1155 | OP("subss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_SUBSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1156 | OP("minss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_MINSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1157 | OP("divss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_DIVSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1158 | OP("maxss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, OP_MAXSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1159 |
|
---|
| 1160 | /* 6 */
|
---|
| 1161 | INVALID_OPCODE,
|
---|
| 1162 | INVALID_OPCODE,
|
---|
| 1163 | INVALID_OPCODE,
|
---|
| 1164 | INVALID_OPCODE,
|
---|
| 1165 | INVALID_OPCODE,
|
---|
| 1166 | INVALID_OPCODE,
|
---|
| 1167 | INVALID_OPCODE,
|
---|
| 1168 | INVALID_OPCODE,
|
---|
| 1169 | INVALID_OPCODE,
|
---|
| 1170 | INVALID_OPCODE,
|
---|
| 1171 | INVALID_OPCODE,
|
---|
| 1172 | INVALID_OPCODE,
|
---|
| 1173 | INVALID_OPCODE,
|
---|
| 1174 | INVALID_OPCODE,
|
---|
[22661] | 1175 | INVALID_OPCODE,
|
---|
[41676] | 1176 | OP("movdqu %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDQU, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1177 |
|
---|
| 1178 | /* 7 */
|
---|
[41676] | 1179 | OP("pshufhw %Vdq,%Wdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_PSHUFHW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 1180 | INVALID_OPCODE,
|
---|
| 1181 | INVALID_OPCODE,
|
---|
| 1182 | INVALID_OPCODE,
|
---|
| 1183 | INVALID_OPCODE,
|
---|
| 1184 | INVALID_OPCODE,
|
---|
| 1185 | INVALID_OPCODE,
|
---|
| 1186 | INVALID_OPCODE,
|
---|
| 1187 | INVALID_OPCODE,
|
---|
| 1188 | INVALID_OPCODE,
|
---|
| 1189 | INVALID_OPCODE,
|
---|
| 1190 | INVALID_OPCODE,
|
---|
| 1191 | INVALID_OPCODE,
|
---|
| 1192 | INVALID_OPCODE,
|
---|
[41676] | 1193 | OP("movq %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVQ, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1194 | OP("movdqu %Wdq,%Vdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVDQU, OP_PARM_Wdq, OP_PARM_Vdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1195 |
|
---|
| 1196 | /* 8 */
|
---|
| 1197 | INVALID_OPCODE_BLOCK
|
---|
| 1198 |
|
---|
| 1199 | /* 9 */
|
---|
| 1200 | INVALID_OPCODE_BLOCK
|
---|
| 1201 |
|
---|
| 1202 | /* a */
|
---|
| 1203 | INVALID_OPCODE_BLOCK
|
---|
| 1204 |
|
---|
| 1205 | /* b */
|
---|
[53007] | 1206 | INVALID_OPCODE,
|
---|
| 1207 | INVALID_OPCODE,
|
---|
| 1208 | INVALID_OPCODE,
|
---|
| 1209 | INVALID_OPCODE,
|
---|
| 1210 | INVALID_OPCODE,
|
---|
| 1211 | INVALID_OPCODE,
|
---|
| 1212 | INVALID_OPCODE,
|
---|
| 1213 | INVALID_OPCODE,
|
---|
| 1214 | OP("popcnt %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_POPCNT, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1215 | INVALID_OPCODE,
|
---|
| 1216 | INVALID_OPCODE,
|
---|
| 1217 | INVALID_OPCODE,
|
---|
| 1218 | OP("tzcnt %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_TZCNT, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1219 | OP("lzcnt %Gv,%Ev", IDX_ParseModRM, IDX_UseModRM, 0, OP_LZCNT, OP_PARM_Gv, OP_PARM_Ev, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1220 | INVALID_OPCODE,
|
---|
| 1221 | INVALID_OPCODE,
|
---|
[1] | 1222 |
|
---|
| 1223 | /* c */
|
---|
| 1224 | INVALID_OPCODE,
|
---|
| 1225 | INVALID_OPCODE,
|
---|
[41676] | 1226 | OP("cmpss %Vss,%Wss,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte,OP_CMPSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[1] | 1227 | INVALID_OPCODE,
|
---|
| 1228 | INVALID_OPCODE,
|
---|
| 1229 | INVALID_OPCODE,
|
---|
| 1230 | INVALID_OPCODE,
|
---|
[103709] | 1231 | OP("Grp9", IDX_ParseGrp9, 0, 0, OP_GRP9, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1232 | INVALID_OPCODE,
|
---|
| 1233 | INVALID_OPCODE,
|
---|
| 1234 | INVALID_OPCODE,
|
---|
| 1235 | INVALID_OPCODE,
|
---|
| 1236 | INVALID_OPCODE,
|
---|
| 1237 | INVALID_OPCODE,
|
---|
| 1238 | INVALID_OPCODE,
|
---|
| 1239 | INVALID_OPCODE,
|
---|
| 1240 |
|
---|
| 1241 | /* d */
|
---|
| 1242 | INVALID_OPCODE,
|
---|
| 1243 | INVALID_OPCODE,
|
---|
| 1244 | INVALID_OPCODE,
|
---|
| 1245 | INVALID_OPCODE,
|
---|
| 1246 | INVALID_OPCODE,
|
---|
| 1247 | INVALID_OPCODE,
|
---|
[41676] | 1248 | OP("movq2dq %Vdq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVQ2DQ, OP_PARM_Vdq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1249 | INVALID_OPCODE,
|
---|
| 1250 | INVALID_OPCODE,
|
---|
| 1251 | INVALID_OPCODE,
|
---|
| 1252 | INVALID_OPCODE,
|
---|
| 1253 | INVALID_OPCODE,
|
---|
| 1254 | INVALID_OPCODE,
|
---|
| 1255 | INVALID_OPCODE,
|
---|
| 1256 | INVALID_OPCODE,
|
---|
| 1257 | INVALID_OPCODE,
|
---|
| 1258 |
|
---|
| 1259 | /* e */
|
---|
| 1260 | INVALID_OPCODE,
|
---|
| 1261 | INVALID_OPCODE,
|
---|
| 1262 | INVALID_OPCODE,
|
---|
| 1263 | INVALID_OPCODE,
|
---|
| 1264 | INVALID_OPCODE,
|
---|
| 1265 | INVALID_OPCODE,
|
---|
[41676] | 1266 | OP("cvtdq2pd %Vpd,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_CVTDQ2PD,OP_PARM_Vpd, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 1267 | INVALID_OPCODE,
|
---|
| 1268 | INVALID_OPCODE,
|
---|
| 1269 | INVALID_OPCODE,
|
---|
| 1270 | INVALID_OPCODE,
|
---|
| 1271 | INVALID_OPCODE,
|
---|
| 1272 | INVALID_OPCODE,
|
---|
| 1273 | INVALID_OPCODE,
|
---|
| 1274 | INVALID_OPCODE,
|
---|
| 1275 | INVALID_OPCODE,
|
---|
| 1276 |
|
---|
| 1277 | /* f */
|
---|
| 1278 | INVALID_OPCODE_BLOCK
|
---|
| 1279 | };
|
---|
| 1280 |
|
---|
[13241] | 1281 | /** Three byte opcode map (0xF 0x38 0x0x) */
|
---|
[41690] | 1282 | const DISOPCODE g_aThreeByteMapX86_0F38_0[16] =
|
---|
[13241] | 1283 | {
|
---|
| 1284 | /* 0 */
|
---|
[41676] | 1285 | OP("pshufb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSHUFB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1286 | OP("phaddw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1287 | OP("phaddd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1288 | OP("phaddsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1289 | OP("pmaddubsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMADDUBSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1290 | OP("phsubw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1291 | OP("phsubd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1292 | OP("phsubsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1293 | OP("psignb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGNB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1294 | OP("psignw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGNW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1295 | OP("psignd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGND, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1296 | OP("pmulhrsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHRSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1297 | INVALID_OPCODE,
|
---|
| 1298 | INVALID_OPCODE,
|
---|
| 1299 | INVALID_OPCODE,
|
---|
| 1300 | INVALID_OPCODE,
|
---|
| 1301 | };
|
---|
| 1302 |
|
---|
| 1303 | /** Three byte opcode map (0x0F 0x38 0x1x) */
|
---|
[41690] | 1304 | const DISOPCODE g_aThreeByteMapX86_0F38_1[16] =
|
---|
[13241] | 1305 | {
|
---|
| 1306 | /* 1 */
|
---|
| 1307 | INVALID_OPCODE,
|
---|
| 1308 | INVALID_OPCODE,
|
---|
| 1309 | INVALID_OPCODE,
|
---|
| 1310 | INVALID_OPCODE,
|
---|
| 1311 | INVALID_OPCODE,
|
---|
| 1312 | INVALID_OPCODE,
|
---|
| 1313 | INVALID_OPCODE,
|
---|
| 1314 | INVALID_OPCODE,
|
---|
| 1315 | INVALID_OPCODE,
|
---|
| 1316 | INVALID_OPCODE,
|
---|
| 1317 | INVALID_OPCODE,
|
---|
| 1318 | INVALID_OPCODE,
|
---|
[41676] | 1319 | OP("pabsb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1320 | OP("pabsw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1321 | OP("pabsd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1322 | INVALID_OPCODE,
|
---|
| 1323 | };
|
---|
| 1324 |
|
---|
[98668] | 1325 | /** Three byte opcode map (0x66 0x0F 0x38 0xCx) */
|
---|
| 1326 | const DISOPCODE g_aThreeByteMapX86_0F38_C[16] =
|
---|
| 1327 | {
|
---|
| 1328 | /* D */
|
---|
| 1329 | INVALID_OPCODE,
|
---|
| 1330 | INVALID_OPCODE,
|
---|
| 1331 | INVALID_OPCODE,
|
---|
| 1332 | INVALID_OPCODE,
|
---|
| 1333 | INVALID_OPCODE,
|
---|
| 1334 | INVALID_OPCODE,
|
---|
| 1335 | INVALID_OPCODE,
|
---|
| 1336 | INVALID_OPCODE,
|
---|
| 1337 | OP("sha1nexte %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA1NEXTE, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1338 | OP("sha1msg1 %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA1MSG1, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1339 | OP("sha1msg2 %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA1MSG2, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1340 | OP("sha256rnds2 %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA256RNDS2, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS), /** @todo xmm0 is implicit, anything to do to annotate it properly? */
|
---|
| 1341 | OP("sha256msg1 %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA256MSG1, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1342 | OP("sha256msg2 %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_SHA256MSG2, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1343 | INVALID_OPCODE,
|
---|
| 1344 | INVALID_OPCODE
|
---|
| 1345 | };
|
---|
| 1346 |
|
---|
[53007] | 1347 | /** Three byte opcode map (0x0F 0x38 0xFx) */
|
---|
| 1348 | const DISOPCODE g_aThreeByteMapX86_0F38_F[16] =
|
---|
| 1349 | {
|
---|
| 1350 | /* F */
|
---|
| 1351 | OP("movbe %Gy,%My", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVBEGM, OP_PARM_Gy, OP_PARM_My, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1352 | OP("movbe %My,%Gy", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVBEMG, OP_PARM_My, OP_PARM_Gy, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1353 | INVALID_OPCODE,
|
---|
| 1354 | INVALID_OPCODE,
|
---|
| 1355 | INVALID_OPCODE,
|
---|
| 1356 | INVALID_OPCODE,
|
---|
| 1357 | INVALID_OPCODE,
|
---|
| 1358 | INVALID_OPCODE,
|
---|
| 1359 | INVALID_OPCODE,
|
---|
| 1360 | INVALID_OPCODE,
|
---|
| 1361 | INVALID_OPCODE,
|
---|
| 1362 | INVALID_OPCODE,
|
---|
| 1363 | INVALID_OPCODE,
|
---|
| 1364 | INVALID_OPCODE,
|
---|
| 1365 | INVALID_OPCODE,
|
---|
[53032] | 1366 | INVALID_OPCODE,
|
---|
[53007] | 1367 | };
|
---|
| 1368 |
|
---|
[41690] | 1369 | /** These tables are mostly sparse, so use another level of indirection to save space. */
|
---|
| 1370 | PCDISOPCODE const g_apThreeByteMapX86_0F38[16] =
|
---|
[13241] | 1371 | {
|
---|
| 1372 | /* 0 */
|
---|
| 1373 | &g_aThreeByteMapX86_0F38_0[0],
|
---|
| 1374 | /* 1 */
|
---|
| 1375 | &g_aThreeByteMapX86_0F38_1[0],
|
---|
| 1376 | /* 2 */
|
---|
| 1377 | NULL,
|
---|
| 1378 | /* 3 */
|
---|
| 1379 | NULL,
|
---|
| 1380 | /* 4 */
|
---|
| 1381 | NULL,
|
---|
| 1382 | /* 5 */
|
---|
| 1383 | NULL,
|
---|
| 1384 | /* 6 */
|
---|
| 1385 | NULL,
|
---|
| 1386 | /* 7 */
|
---|
| 1387 | NULL,
|
---|
| 1388 | /* 8 */
|
---|
| 1389 | NULL,
|
---|
| 1390 | /* 9 */
|
---|
| 1391 | NULL,
|
---|
| 1392 | /* a */
|
---|
| 1393 | NULL,
|
---|
| 1394 | /* b */
|
---|
| 1395 | NULL,
|
---|
| 1396 | /* c */
|
---|
[98668] | 1397 | &g_aThreeByteMapX86_0F38_C[0],
|
---|
[13241] | 1398 | /* d */
|
---|
| 1399 | NULL,
|
---|
| 1400 | /* e */
|
---|
| 1401 | NULL,
|
---|
| 1402 | /* f */
|
---|
[53007] | 1403 | &g_aThreeByteMapX86_0F38_F[0],
|
---|
[13241] | 1404 | };
|
---|
| 1405 |
|
---|
| 1406 | /** Three byte opcode map (0x66 0x0F 0x38 0x0x) */
|
---|
[41690] | 1407 | const DISOPCODE g_aThreeByteMapX86_660F38_0[16] =
|
---|
[13241] | 1408 | {
|
---|
| 1409 | /* 0 */
|
---|
[41676] | 1410 | OP("pshufb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSHUFB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1411 | OP("phaddw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1412 | OP("phaddd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1413 | OP("phaddsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHADDSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1414 | OP("pmaddubsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMADDUBSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1415 | OP("phsubw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1416 | OP("phsubd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1417 | OP("phsubsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHSUBSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1418 | OP("psignb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGNB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1419 | OP("psignw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGNW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1420 | OP("psignd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PSIGND, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1421 | OP("pmulhrsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULHRSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1422 | INVALID_OPCODE,
|
---|
| 1423 | INVALID_OPCODE,
|
---|
| 1424 | INVALID_OPCODE,
|
---|
| 1425 | INVALID_OPCODE,
|
---|
| 1426 | };
|
---|
| 1427 |
|
---|
| 1428 | /** Three byte opcode map (0x66 0x0F 0x38 0x1x) */
|
---|
[41690] | 1429 | const DISOPCODE g_aThreeByteMapX86_660F38_1[16] =
|
---|
[13241] | 1430 | {
|
---|
| 1431 | /* 1 */
|
---|
[103927] | 1432 | OP("pblendvb %Vdq,%Wdq,xmm0", IDX_ParseModRM, IDX_UseModRM, IDX_ParseFixedReg, OP_PBLENDVB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_REG_XMM0, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1433 | INVALID_OPCODE,
|
---|
| 1434 | INVALID_OPCODE,
|
---|
| 1435 | INVALID_OPCODE,
|
---|
[103927] | 1436 | OP("blendvps %Vdq,%Wdq,xmm0", IDX_ParseModRM, IDX_UseModRM, IDX_ParseFixedReg, OP_BLENDVPS, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_REG_XMM0, DISOPTYPE_HARMLESS),
|
---|
| 1437 | OP("blendvpd %Vdq,%Wdq,xmm0", IDX_ParseModRM, IDX_UseModRM, IDX_ParseFixedReg, OP_BLENDVPD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_REG_XMM0, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1438 | INVALID_OPCODE,
|
---|
[41676] | 1439 | OP("ptest %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PTEST, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1440 | INVALID_OPCODE,
|
---|
| 1441 | INVALID_OPCODE,
|
---|
| 1442 | INVALID_OPCODE,
|
---|
| 1443 | INVALID_OPCODE,
|
---|
[41676] | 1444 | OP("pabsb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1445 | OP("pabsw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1446 | OP("pabsd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PABSD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1447 | INVALID_OPCODE,
|
---|
| 1448 | };
|
---|
| 1449 |
|
---|
[53164] | 1450 | /** Three byte opcode map (0x66 0x0F 0x38 0x2x) */
|
---|
| 1451 | const DISOPCODE g_aThreeByteMapX86_660F38_2[16] =
|
---|
| 1452 | {
|
---|
| 1453 | /* 2 */
|
---|
[96114] | 1454 | OP("pmovsxbw %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXBW, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1455 | OP("pmovsxbd %Vdq,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXBD, OP_PARM_Vdq, OP_PARM_Wd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1456 | OP("pmovsxbq %Vdq,%Ww", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXBQ, OP_PARM_Vdq, OP_PARM_Ww, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1457 | OP("pmovsxwd %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXBW, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1458 | OP("pmovsxwq %Vdq,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXWQ, OP_PARM_Vdq, OP_PARM_Wd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1459 | OP("pmovsxdq %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVSXDQ, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53164] | 1460 | INVALID_OPCODE,
|
---|
| 1461 | INVALID_OPCODE,
|
---|
| 1462 | OP("pmuldq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULDQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1463 | OP("pcmpeqq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPEQQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1464 | OP("movntdqa %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVNTDQA, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1465 | OP("packusdw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PACKUSDW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1466 | INVALID_OPCODE,
|
---|
| 1467 | INVALID_OPCODE,
|
---|
| 1468 | INVALID_OPCODE,
|
---|
| 1469 | INVALID_OPCODE,
|
---|
| 1470 | };
|
---|
[13241] | 1471 |
|
---|
[53164] | 1472 | /** Three byte opcode map (0x66 0x0F 0x38 0x3x) */
|
---|
| 1473 | const DISOPCODE g_aThreeByteMapX86_660F38_3[16] =
|
---|
| 1474 | {
|
---|
| 1475 | /* 3 */
|
---|
[96114] | 1476 | OP("pmovzxbw %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXBW, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1477 | OP("pmovzxbd %Vdq,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXBD, OP_PARM_Vdq, OP_PARM_Wd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1478 | OP("pmovzxbq %Vdq,%Ww", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXBQ, OP_PARM_Vdq, OP_PARM_Ww, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1479 | OP("pmovzxwd %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXWD, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1480 | OP("pmovzxwq %Vdq,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXWQ, OP_PARM_Vdq, OP_PARM_Wd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1481 | OP("pmovzxdq %Vdq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMOVZXDQ, OP_PARM_Vdq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53164] | 1482 | INVALID_OPCODE,
|
---|
| 1483 | OP("pcmpgtq %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PCMPGTQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1484 | OP("pminsb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1485 | OP("pminsd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1486 | OP("pminuw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINUW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1487 | OP("pminud %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMINUD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1488 | OP("pmaxsb %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXSB, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1489 | OP("pmaxsd %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXSD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1490 | OP("pmaxuw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXUW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1491 | OP("pmaxud %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMAXUD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1492 | };
|
---|
| 1493 |
|
---|
| 1494 | /** Three byte opcode map (0x66 0x0F 0x38 0x4x) */
|
---|
| 1495 | const DISOPCODE g_aThreeByteMapX86_660F38_4[16] =
|
---|
| 1496 | {
|
---|
| 1497 | /* 4 */
|
---|
| 1498 | OP("pmulld %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PMULLD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1499 | OP("phminposuw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PHMINPOSUW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1500 | INVALID_OPCODE,
|
---|
| 1501 | INVALID_OPCODE,
|
---|
| 1502 | INVALID_OPCODE,
|
---|
| 1503 | INVALID_OPCODE,
|
---|
| 1504 | INVALID_OPCODE,
|
---|
| 1505 | INVALID_OPCODE,
|
---|
| 1506 | INVALID_OPCODE,
|
---|
| 1507 | INVALID_OPCODE,
|
---|
| 1508 | INVALID_OPCODE,
|
---|
| 1509 | INVALID_OPCODE,
|
---|
| 1510 | INVALID_OPCODE,
|
---|
| 1511 | INVALID_OPCODE,
|
---|
| 1512 | INVALID_OPCODE,
|
---|
| 1513 | INVALID_OPCODE,
|
---|
| 1514 | };
|
---|
| 1515 |
|
---|
[13241] | 1516 | /** Three byte opcode map (0x66 0x0F 0x38 0x8x) */
|
---|
[41690] | 1517 | const DISOPCODE g_aThreeByteMapX86_660F38_8[16] =
|
---|
[13241] | 1518 | {
|
---|
| 1519 | /* 8 */
|
---|
[99220] | 1520 | OP("invept %Gy,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_INVEPT, OP_PARM_Gy, OP_PARM_Mdq, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 1521 | OP("invvpid %Gy,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_INVVPID, OP_PARM_Gy, OP_PARM_Mdq, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
| 1522 | OP("invpcid %Gy,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_INVPCID, OP_PARM_Gy, OP_PARM_Mdq, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[13241] | 1523 | INVALID_OPCODE,
|
---|
| 1524 | INVALID_OPCODE,
|
---|
| 1525 | INVALID_OPCODE,
|
---|
| 1526 | INVALID_OPCODE,
|
---|
| 1527 | INVALID_OPCODE,
|
---|
| 1528 | INVALID_OPCODE,
|
---|
| 1529 | INVALID_OPCODE,
|
---|
| 1530 | INVALID_OPCODE,
|
---|
| 1531 | INVALID_OPCODE,
|
---|
| 1532 | INVALID_OPCODE,
|
---|
| 1533 | INVALID_OPCODE,
|
---|
| 1534 | INVALID_OPCODE,
|
---|
| 1535 | INVALID_OPCODE,
|
---|
[53164] | 1536 | };
|
---|
| 1537 |
|
---|
| 1538 | /** Three byte opcode map (0x66 0x0F 0x38 0xDx) */
|
---|
| 1539 | const DISOPCODE g_aThreeByteMapX86_660F38_D[16] =
|
---|
| 1540 | {
|
---|
| 1541 | /* D */
|
---|
[13241] | 1542 | INVALID_OPCODE,
|
---|
[53164] | 1543 | INVALID_OPCODE,
|
---|
| 1544 | INVALID_OPCODE,
|
---|
| 1545 | INVALID_OPCODE,
|
---|
| 1546 | INVALID_OPCODE,
|
---|
| 1547 | INVALID_OPCODE,
|
---|
| 1548 | INVALID_OPCODE,
|
---|
| 1549 | INVALID_OPCODE,
|
---|
| 1550 | INVALID_OPCODE,
|
---|
| 1551 | INVALID_OPCODE,
|
---|
| 1552 | INVALID_OPCODE,
|
---|
| 1553 | OP("aesimc %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_AESIMC, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1554 | OP("aesenc %Vdq,%Hdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_AESENC, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1555 | OP("aesenclast %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_AESENCLAST, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1556 | OP("aesdec %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_AESDEC, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1557 | OP("aesdeclast %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, OP_AESDECLAST, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[13241] | 1558 | };
|
---|
| 1559 |
|
---|
[53007] | 1560 | const DISOPCODE g_aThreeByteMapX86_660F38_F[16] =
|
---|
| 1561 | {
|
---|
[53164] | 1562 | /* F */
|
---|
[53007] | 1563 | OP("movbe %Gw,%Mw", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVBEGM, OP_PARM_Gw, OP_PARM_Mw, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1564 | OP("movbe %Mw,%Gw", IDX_ParseModRM, IDX_UseModRM, 0, OP_MOVBEMG, OP_PARM_Mw, OP_PARM_Gw, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1565 | INVALID_OPCODE,
|
---|
| 1566 | INVALID_OPCODE,
|
---|
| 1567 | INVALID_OPCODE,
|
---|
| 1568 | INVALID_OPCODE,
|
---|
| 1569 | OP("adcx %Gy,%Ey", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADCX, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1570 | INVALID_OPCODE,
|
---|
| 1571 | INVALID_OPCODE,
|
---|
| 1572 | INVALID_OPCODE,
|
---|
| 1573 | INVALID_OPCODE,
|
---|
| 1574 | INVALID_OPCODE,
|
---|
| 1575 | INVALID_OPCODE,
|
---|
| 1576 | INVALID_OPCODE,
|
---|
| 1577 | INVALID_OPCODE,
|
---|
| 1578 | INVALID_OPCODE,
|
---|
| 1579 | };
|
---|
| 1580 |
|
---|
[13241] | 1581 | /** Three byte opcode map with prefix 0x66 (0xF 0x38) */
|
---|
[41690] | 1582 | PCDISOPCODE const g_apThreeByteMapX86_660F38[16] =
|
---|
[13241] | 1583 | {
|
---|
| 1584 | /* 0 */
|
---|
| 1585 | &g_aThreeByteMapX86_660F38_0[0],
|
---|
| 1586 | /* 1 */
|
---|
| 1587 | &g_aThreeByteMapX86_660F38_1[0],
|
---|
| 1588 | /* 2 */
|
---|
[53164] | 1589 | &g_aThreeByteMapX86_660F38_2[0],
|
---|
[13241] | 1590 | /* 3 */
|
---|
[53164] | 1591 | &g_aThreeByteMapX86_660F38_3[0],
|
---|
[13241] | 1592 | /* 4 */
|
---|
[53164] | 1593 | &g_aThreeByteMapX86_660F38_4[0],
|
---|
[13241] | 1594 | /* 5 */
|
---|
| 1595 | NULL,
|
---|
| 1596 | /* 6 */
|
---|
| 1597 | NULL,
|
---|
| 1598 | /* 7 */
|
---|
| 1599 | NULL,
|
---|
| 1600 | /* 8 */
|
---|
| 1601 | &g_aThreeByteMapX86_660F38_8[0],
|
---|
| 1602 | /* 9 */
|
---|
| 1603 | NULL,
|
---|
| 1604 | /* a */
|
---|
| 1605 | NULL,
|
---|
| 1606 | /* b */
|
---|
| 1607 | NULL,
|
---|
| 1608 | /* c */
|
---|
| 1609 | NULL,
|
---|
| 1610 | /* d */
|
---|
[53164] | 1611 | &g_aThreeByteMapX86_660F38_D[0],
|
---|
[13241] | 1612 | /* e */
|
---|
| 1613 | NULL,
|
---|
| 1614 | /* f */
|
---|
[53007] | 1615 | &g_aThreeByteMapX86_660F38_F[0],
|
---|
[13241] | 1616 | };
|
---|
| 1617 |
|
---|
[53007] | 1618 | const DISOPCODE g_aThreeByteMapX86_F20F38_F[16] =
|
---|
| 1619 | {
|
---|
| 1620 | /* According to Intel opcodes map in Intel® 64 and IA-32 Architectures Software Developer’s Manual dated September 2014
|
---|
| 1621 | it should be %Gd (always dword regardless of operand-size attribute), but from the description of the command
|
---|
| 1622 | it is clear that REX.W prefix can change this size to 64 bit, therefore it is set to %Gy. Seems to be a mistake. */
|
---|
[95459] | 1623 | /** @todo r=bird: While the destination can be a 64-bit register, it is
|
---|
| 1624 | * always treated like a dword register given that the upper half is
|
---|
| 1625 | * always cleared. So, it is really just a convenience for a more
|
---|
| 1626 | * natural syntax when using a 64-bit source register. */
|
---|
| 1627 | OP("crc32 %Gy,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_CRC32, OP_PARM_Gy, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1628 | OP("crc32 %Gy,%Ey", IDX_ParseModRM, IDX_UseModRM, 0, OP_CRC32, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53007] | 1629 | INVALID_OPCODE,
|
---|
| 1630 | INVALID_OPCODE,
|
---|
| 1631 | INVALID_OPCODE,
|
---|
| 1632 | INVALID_OPCODE,
|
---|
| 1633 | INVALID_OPCODE,
|
---|
| 1634 | INVALID_OPCODE,
|
---|
| 1635 | INVALID_OPCODE,
|
---|
| 1636 | INVALID_OPCODE,
|
---|
| 1637 | INVALID_OPCODE,
|
---|
| 1638 | INVALID_OPCODE,
|
---|
| 1639 | INVALID_OPCODE,
|
---|
| 1640 | INVALID_OPCODE,
|
---|
| 1641 | INVALID_OPCODE,
|
---|
| 1642 | INVALID_OPCODE,
|
---|
| 1643 | };
|
---|
| 1644 |
|
---|
| 1645 | const DISOPCODE g_aThreeByteMapX86_66F20F38_F[16] =
|
---|
| 1646 | {
|
---|
| 1647 | /* According to Intel opcodes map in Intel® 64 and IA-32 Architectures Software Developer’s Manual dated September 2014
|
---|
| 1648 | it should be %Gd (always dword regardless of operand-size attribute), but from the description of the command
|
---|
| 1649 | it is clear that REX.W prefix can change this size to 64 bit, therefore it is set to %Gy. Seems to be a mistake. */
|
---|
[95459] | 1650 | OP("crc32 %Gy,%Eb", IDX_ParseModRM, IDX_UseModRM, 0, OP_CRC32, OP_PARM_Gy, OP_PARM_Eb, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1651 | OP("crc32 %Gy,%Ew", IDX_ParseModRM, IDX_UseModRM, 0, OP_CRC32, OP_PARM_Gy, OP_PARM_Ew, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53007] | 1652 | INVALID_OPCODE,
|
---|
| 1653 | INVALID_OPCODE,
|
---|
| 1654 | INVALID_OPCODE,
|
---|
| 1655 | INVALID_OPCODE,
|
---|
| 1656 | INVALID_OPCODE,
|
---|
| 1657 | INVALID_OPCODE,
|
---|
| 1658 | INVALID_OPCODE,
|
---|
| 1659 | INVALID_OPCODE,
|
---|
| 1660 | INVALID_OPCODE,
|
---|
| 1661 | INVALID_OPCODE,
|
---|
| 1662 | INVALID_OPCODE,
|
---|
| 1663 | INVALID_OPCODE,
|
---|
| 1664 | INVALID_OPCODE,
|
---|
| 1665 | INVALID_OPCODE,
|
---|
| 1666 | };
|
---|
| 1667 |
|
---|
[13241] | 1668 | /** Three byte opcode map with prefix 0xF2 (0xF 0x38) */
|
---|
| 1669 | /** @todo remainder missing (too lazy now) */
|
---|
[41690] | 1670 | PCDISOPCODE const g_apThreeByteMapX86_F20F38[16] =
|
---|
[13241] | 1671 | {
|
---|
| 1672 | /* 0 */
|
---|
| 1673 | NULL,
|
---|
| 1674 | /* 1 */
|
---|
| 1675 | NULL,
|
---|
| 1676 | /* 2 */
|
---|
| 1677 | NULL,
|
---|
| 1678 | /* 3 */
|
---|
| 1679 | NULL,
|
---|
| 1680 | /* 4 */
|
---|
| 1681 | NULL,
|
---|
| 1682 | /* 5 */
|
---|
| 1683 | NULL,
|
---|
| 1684 | /* 6 */
|
---|
| 1685 | NULL,
|
---|
| 1686 | /* 7 */
|
---|
| 1687 | NULL,
|
---|
| 1688 | /* 8 */
|
---|
| 1689 | NULL,
|
---|
| 1690 | /* 9 */
|
---|
| 1691 | NULL,
|
---|
| 1692 | /* a */
|
---|
| 1693 | NULL,
|
---|
| 1694 | /* b */
|
---|
| 1695 | NULL,
|
---|
| 1696 | /* c */
|
---|
| 1697 | NULL,
|
---|
| 1698 | /* d */
|
---|
| 1699 | NULL,
|
---|
| 1700 | /* e */
|
---|
| 1701 | NULL,
|
---|
| 1702 | /* f */
|
---|
[53007] | 1703 | &g_aThreeByteMapX86_F20F38_F[0],
|
---|
| 1704 | };
|
---|
| 1705 |
|
---|
[53032] | 1706 | /** Three byte opcode map with prefixes 0x66 0xF2 (0xF 0x38) */
|
---|
| 1707 | PCDISOPCODE const g_apThreeByteMapX86_66F20F38[16] =
|
---|
| 1708 | {
|
---|
| 1709 | /* 0 */
|
---|
| 1710 | NULL,
|
---|
| 1711 | /* 1 */
|
---|
| 1712 | NULL,
|
---|
| 1713 | /* 2 */
|
---|
| 1714 | NULL,
|
---|
| 1715 | /* 3 */
|
---|
| 1716 | NULL,
|
---|
| 1717 | /* 4 */
|
---|
| 1718 | NULL,
|
---|
| 1719 | /* 5 */
|
---|
| 1720 | NULL,
|
---|
| 1721 | /* 6 */
|
---|
| 1722 | NULL,
|
---|
| 1723 | /* 7 */
|
---|
| 1724 | NULL,
|
---|
| 1725 | /* 8 */
|
---|
| 1726 | NULL,
|
---|
| 1727 | /* 9 */
|
---|
| 1728 | NULL,
|
---|
| 1729 | /* a */
|
---|
| 1730 | NULL,
|
---|
| 1731 | /* b */
|
---|
| 1732 | NULL,
|
---|
| 1733 | /* c */
|
---|
| 1734 | NULL,
|
---|
| 1735 | /* d */
|
---|
| 1736 | NULL,
|
---|
| 1737 | /* e */
|
---|
| 1738 | NULL,
|
---|
| 1739 | /* f */
|
---|
| 1740 | &g_aThreeByteMapX86_66F20F38_F[0],
|
---|
| 1741 | };
|
---|
| 1742 |
|
---|
[53007] | 1743 | const DISOPCODE g_aThreeByteMapX86_F30F38_F[16] =
|
---|
| 1744 | {
|
---|
| 1745 | INVALID_OPCODE,
|
---|
| 1746 | INVALID_OPCODE,
|
---|
| 1747 | INVALID_OPCODE,
|
---|
| 1748 | INVALID_OPCODE,
|
---|
| 1749 | INVALID_OPCODE,
|
---|
| 1750 | INVALID_OPCODE,
|
---|
| 1751 | OP("adox %Gy,%Ey", IDX_ParseModRM, IDX_UseModRM, 0, OP_ADOX, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 1752 | INVALID_OPCODE,
|
---|
| 1753 | INVALID_OPCODE,
|
---|
| 1754 | INVALID_OPCODE,
|
---|
| 1755 | INVALID_OPCODE,
|
---|
| 1756 | INVALID_OPCODE,
|
---|
| 1757 | INVALID_OPCODE,
|
---|
| 1758 | INVALID_OPCODE,
|
---|
| 1759 | INVALID_OPCODE,
|
---|
| 1760 | INVALID_OPCODE,
|
---|
| 1761 | };
|
---|
| 1762 |
|
---|
| 1763 | /** Three byte opcode map with prefix 0xF3 (0xF 0x38) */
|
---|
| 1764 | PCDISOPCODE const g_apThreeByteMapX86_F30F38[16] =
|
---|
| 1765 | {
|
---|
| 1766 | /* 0 */
|
---|
[13241] | 1767 | NULL,
|
---|
[53007] | 1768 | /* 1 */
|
---|
| 1769 | NULL,
|
---|
| 1770 | /* 2 */
|
---|
| 1771 | NULL,
|
---|
| 1772 | /* 3 */
|
---|
| 1773 | NULL,
|
---|
| 1774 | /* 4 */
|
---|
| 1775 | NULL,
|
---|
| 1776 | /* 5 */
|
---|
| 1777 | NULL,
|
---|
| 1778 | /* 6 */
|
---|
| 1779 | NULL,
|
---|
| 1780 | /* 7 */
|
---|
| 1781 | NULL,
|
---|
| 1782 | /* 8 */
|
---|
| 1783 | NULL,
|
---|
| 1784 | /* 9 */
|
---|
| 1785 | NULL,
|
---|
| 1786 | /* a */
|
---|
| 1787 | NULL,
|
---|
| 1788 | /* b */
|
---|
| 1789 | NULL,
|
---|
| 1790 | /* c */
|
---|
| 1791 | NULL,
|
---|
| 1792 | /* d */
|
---|
| 1793 | NULL,
|
---|
| 1794 | /* e */
|
---|
| 1795 | NULL,
|
---|
| 1796 | /* f */
|
---|
| 1797 | &g_aThreeByteMapX86_F30F38_F[0],
|
---|
[13241] | 1798 | };
|
---|
| 1799 |
|
---|
[53155] | 1800 | const DISOPCODE g_aThreeByteMapX86_0F3A_0[16] =
|
---|
| 1801 | {
|
---|
| 1802 | INVALID_OPCODE,
|
---|
| 1803 | INVALID_OPCODE,
|
---|
| 1804 | INVALID_OPCODE,
|
---|
| 1805 | INVALID_OPCODE,
|
---|
| 1806 | INVALID_OPCODE,
|
---|
| 1807 | INVALID_OPCODE,
|
---|
| 1808 | INVALID_OPCODE,
|
---|
| 1809 | INVALID_OPCODE,
|
---|
| 1810 | INVALID_OPCODE,
|
---|
| 1811 | INVALID_OPCODE,
|
---|
| 1812 | INVALID_OPCODE,
|
---|
| 1813 | INVALID_OPCODE,
|
---|
| 1814 | INVALID_OPCODE,
|
---|
| 1815 | INVALID_OPCODE,
|
---|
| 1816 | INVALID_OPCODE,
|
---|
| 1817 | OP("palignr %Pq,%Qq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PALIGNR, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1818 | };
|
---|
| 1819 |
|
---|
[98668] | 1820 | const DISOPCODE g_aThreeByteMapX86_0F3A_C[16] =
|
---|
| 1821 | {
|
---|
| 1822 | INVALID_OPCODE,
|
---|
| 1823 | INVALID_OPCODE,
|
---|
| 1824 | INVALID_OPCODE,
|
---|
| 1825 | INVALID_OPCODE,
|
---|
| 1826 | INVALID_OPCODE,
|
---|
| 1827 | INVALID_OPCODE,
|
---|
| 1828 | INVALID_OPCODE,
|
---|
| 1829 | INVALID_OPCODE,
|
---|
| 1830 | INVALID_OPCODE,
|
---|
| 1831 | INVALID_OPCODE,
|
---|
| 1832 | INVALID_OPCODE,
|
---|
| 1833 | INVALID_OPCODE,
|
---|
| 1834 | OP("sha1rnds4 %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_SHA1RNDS4, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1835 | INVALID_OPCODE,
|
---|
| 1836 | INVALID_OPCODE,
|
---|
| 1837 | INVALID_OPCODE,
|
---|
| 1838 | };
|
---|
| 1839 |
|
---|
[53155] | 1840 | PCDISOPCODE const g_apThreeByteMapX86_0F3A[16] =
|
---|
| 1841 | {
|
---|
| 1842 | /* 0 */
|
---|
| 1843 | g_aThreeByteMapX86_0F3A_0,
|
---|
| 1844 | /* 1 */
|
---|
| 1845 | NULL,
|
---|
| 1846 | /* 2 */
|
---|
| 1847 | NULL,
|
---|
| 1848 | /* 3 */
|
---|
| 1849 | NULL,
|
---|
| 1850 | /* 4 */
|
---|
| 1851 | NULL,
|
---|
| 1852 | /* 5 */
|
---|
| 1853 | NULL,
|
---|
| 1854 | /* 6 */
|
---|
| 1855 | NULL,
|
---|
| 1856 | /* 7 */
|
---|
| 1857 | NULL,
|
---|
| 1858 | /* 8 */
|
---|
| 1859 | NULL,
|
---|
| 1860 | /* 9 */
|
---|
| 1861 | NULL,
|
---|
| 1862 | /* a */
|
---|
| 1863 | NULL,
|
---|
| 1864 | /* b */
|
---|
| 1865 | NULL,
|
---|
| 1866 | /* c */
|
---|
[98668] | 1867 | &g_aThreeByteMapX86_0F3A_C[0],
|
---|
[53155] | 1868 | /* d */
|
---|
| 1869 | NULL,
|
---|
| 1870 | /* e */
|
---|
| 1871 | NULL,
|
---|
| 1872 | /* f */
|
---|
| 1873 | NULL,
|
---|
| 1874 | };
|
---|
| 1875 |
|
---|
| 1876 | const DISOPCODE g_aThreeByteMapX86_660F3A_0[16] =
|
---|
| 1877 | {
|
---|
| 1878 | INVALID_OPCODE,
|
---|
| 1879 | INVALID_OPCODE,
|
---|
| 1880 | INVALID_OPCODE,
|
---|
| 1881 | INVALID_OPCODE,
|
---|
| 1882 | INVALID_OPCODE,
|
---|
| 1883 | INVALID_OPCODE,
|
---|
| 1884 | INVALID_OPCODE,
|
---|
| 1885 | INVALID_OPCODE,
|
---|
| 1886 | OP("roundps %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_ROUNDPS, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1887 | OP("roundpd %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_ROUNDPD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1888 | OP("roundss %Vss,%Wss,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_ROUNDSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1889 | OP("roundsd %Vsd,%Wsd,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_ROUNDSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1890 | OP("blendps %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_BLENDPS, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1891 | OP("blendpd %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_BLENDPD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1892 | OP("pblendw %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PBLENDW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1893 | OP("palignr %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PALIGNR, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1894 | };
|
---|
| 1895 |
|
---|
[53150] | 1896 | const DISOPCODE g_aThreeByteMapX86_660F3A_10[16] =
|
---|
| 1897 | {
|
---|
| 1898 | INVALID_OPCODE,
|
---|
| 1899 | INVALID_OPCODE,
|
---|
| 1900 | INVALID_OPCODE,
|
---|
| 1901 | INVALID_OPCODE,
|
---|
| 1902 | OP("pextrb %Eb,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PEXTRB, OP_PARM_Eb, OP_PARM_Vdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1903 | OP("pextrw %Ew,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PEXTRW, OP_PARM_Ew, OP_PARM_Vdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1904 | OP("pextrd %Ed,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PEXTRD, OP_PARM_Ed, OP_PARM_Vdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1905 | OP("extractps %Ed,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_EXTRACTPS, OP_PARM_Ed, OP_PARM_Vdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1906 | INVALID_OPCODE,
|
---|
| 1907 | INVALID_OPCODE,
|
---|
| 1908 | INVALID_OPCODE,
|
---|
| 1909 | INVALID_OPCODE,
|
---|
| 1910 | INVALID_OPCODE,
|
---|
| 1911 | INVALID_OPCODE,
|
---|
| 1912 | INVALID_OPCODE,
|
---|
| 1913 | INVALID_OPCODE,
|
---|
| 1914 | };
|
---|
| 1915 |
|
---|
| 1916 | const DISOPCODE g_aThreeByteMapX86_660F3A_20[16] =
|
---|
| 1917 | {
|
---|
[53155] | 1918 | // pinsrb %Vdq,%Ry/Mb,%Ib
|
---|
[53150] | 1919 | OP("pinsrb %Vdq,%Ey,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PINSRB, OP_PARM_Vdq, OP_PARM_Ey, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53155] | 1920 | // insertps %Vdq,%Udq/Md,%Ib
|
---|
[53150] | 1921 | OP("insertps %Vdq,%Wdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_INSERTPS, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1922 | OP("pinsrd %Vdq,%Ey,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PINSRD, OP_PARM_Vdq, OP_PARM_Ey, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1923 | INVALID_OPCODE,
|
---|
| 1924 | INVALID_OPCODE,
|
---|
| 1925 | INVALID_OPCODE,
|
---|
| 1926 | INVALID_OPCODE,
|
---|
| 1927 | INVALID_OPCODE,
|
---|
| 1928 | INVALID_OPCODE,
|
---|
| 1929 | INVALID_OPCODE,
|
---|
| 1930 | INVALID_OPCODE,
|
---|
| 1931 | INVALID_OPCODE,
|
---|
| 1932 | INVALID_OPCODE,
|
---|
| 1933 | INVALID_OPCODE,
|
---|
| 1934 | INVALID_OPCODE,
|
---|
| 1935 | INVALID_OPCODE,
|
---|
| 1936 | };
|
---|
| 1937 |
|
---|
| 1938 | const DISOPCODE g_aThreeByteMapX86_660F3A_40[16] =
|
---|
| 1939 | {
|
---|
| 1940 | OP("dpps %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_DPPS, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1941 | OP("dppd %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_DPPD, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1942 | OP("mpsadbw %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_MPSADBW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1943 | INVALID_OPCODE,
|
---|
| 1944 | OP("pclmulqdq %Vdq,%Wdq,%Ib",IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PCLMULQDQ, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1945 | INVALID_OPCODE,
|
---|
| 1946 | INVALID_OPCODE,
|
---|
| 1947 | INVALID_OPCODE,
|
---|
| 1948 | INVALID_OPCODE,
|
---|
| 1949 | INVALID_OPCODE,
|
---|
| 1950 | INVALID_OPCODE,
|
---|
| 1951 | INVALID_OPCODE,
|
---|
| 1952 | INVALID_OPCODE,
|
---|
| 1953 | INVALID_OPCODE,
|
---|
| 1954 | INVALID_OPCODE,
|
---|
| 1955 | INVALID_OPCODE,
|
---|
| 1956 | };
|
---|
| 1957 |
|
---|
| 1958 | const DISOPCODE g_aThreeByteMapX86_660F3A_60[16] =
|
---|
| 1959 | {
|
---|
| 1960 | OP("pcmpestrm %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PCMPESTRM, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1961 | OP("pcmpestri %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PCMPESTRI, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1962 | OP("pcmpistrm %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PCMPISTRM, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1963 | OP("pcmpistri %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_PCMPISTRI, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1964 | INVALID_OPCODE,
|
---|
| 1965 | INVALID_OPCODE,
|
---|
| 1966 | INVALID_OPCODE,
|
---|
| 1967 | INVALID_OPCODE,
|
---|
| 1968 | INVALID_OPCODE,
|
---|
| 1969 | INVALID_OPCODE,
|
---|
| 1970 | INVALID_OPCODE,
|
---|
| 1971 | INVALID_OPCODE,
|
---|
| 1972 | INVALID_OPCODE,
|
---|
| 1973 | INVALID_OPCODE,
|
---|
| 1974 | INVALID_OPCODE,
|
---|
| 1975 | INVALID_OPCODE,
|
---|
| 1976 | };
|
---|
| 1977 |
|
---|
| 1978 | const DISOPCODE g_aThreeByteMapX86_660F3A_D0[16] =
|
---|
| 1979 | {
|
---|
| 1980 | INVALID_OPCODE,
|
---|
| 1981 | INVALID_OPCODE,
|
---|
| 1982 | INVALID_OPCODE,
|
---|
| 1983 | INVALID_OPCODE,
|
---|
| 1984 | INVALID_OPCODE,
|
---|
| 1985 | INVALID_OPCODE,
|
---|
| 1986 | INVALID_OPCODE,
|
---|
| 1987 | INVALID_OPCODE,
|
---|
| 1988 | INVALID_OPCODE,
|
---|
| 1989 | INVALID_OPCODE,
|
---|
| 1990 | INVALID_OPCODE,
|
---|
| 1991 | INVALID_OPCODE,
|
---|
| 1992 | INVALID_OPCODE,
|
---|
| 1993 | INVALID_OPCODE,
|
---|
| 1994 | INVALID_OPCODE,
|
---|
| 1995 | OP("aeskeygen %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, OP_AESKEYGEN, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 1996 | };
|
---|
| 1997 |
|
---|
[13241] | 1998 | /** Three byte opcode map with prefix 0x66 (0xF 0x3A) */
|
---|
| 1999 | /** @todo remainder missing (too lazy now) */
|
---|
[41690] | 2000 | PCDISOPCODE const g_apThreeByteMapX86_660F3A[16] =
|
---|
[13241] | 2001 | {
|
---|
| 2002 | /* 0 */
|
---|
[53155] | 2003 | g_aThreeByteMapX86_660F3A_0,
|
---|
[13241] | 2004 | /* 1 */
|
---|
[53150] | 2005 | g_aThreeByteMapX86_660F3A_10,
|
---|
[13241] | 2006 | /* 2 */
|
---|
[53150] | 2007 | g_aThreeByteMapX86_660F3A_20,
|
---|
[13241] | 2008 | /* 3 */
|
---|
| 2009 | NULL,
|
---|
| 2010 | /* 4 */
|
---|
[53150] | 2011 | g_aThreeByteMapX86_660F3A_40,
|
---|
[13241] | 2012 | /* 5 */
|
---|
| 2013 | NULL,
|
---|
| 2014 | /* 6 */
|
---|
[53150] | 2015 | g_aThreeByteMapX86_660F3A_60,
|
---|
[13241] | 2016 | /* 7 */
|
---|
| 2017 | NULL,
|
---|
| 2018 | /* 8 */
|
---|
| 2019 | NULL,
|
---|
| 2020 | /* 9 */
|
---|
| 2021 | NULL,
|
---|
| 2022 | /* a */
|
---|
| 2023 | NULL,
|
---|
| 2024 | /* b */
|
---|
| 2025 | NULL,
|
---|
| 2026 | /* c */
|
---|
| 2027 | NULL,
|
---|
| 2028 | /* d */
|
---|
[53150] | 2029 | g_aThreeByteMapX86_660F3A_D0,
|
---|
[13241] | 2030 | /* e */
|
---|
| 2031 | NULL,
|
---|
| 2032 | /* f */
|
---|
| 2033 | NULL,
|
---|
| 2034 | };
|
---|
| 2035 |
|
---|
[1] | 2036 | /* 3DNow! map (0x0F 0x0F prefix) */
|
---|
[41690] | 2037 | const DISOPCODE g_aTwoByteMapX86_3DNow[256] =
|
---|
[1] | 2038 | {
|
---|
| 2039 | /* 0 */
|
---|
[41863] | 2040 | INVALID_OPCODE_MOD_RM(0x00),
|
---|
| 2041 | INVALID_OPCODE_MOD_RM(0x01),
|
---|
| 2042 | INVALID_OPCODE_MOD_RM(0x02),
|
---|
| 2043 | INVALID_OPCODE_MOD_RM(0x03),
|
---|
| 2044 | INVALID_OPCODE_MOD_RM(0x04),
|
---|
| 2045 | INVALID_OPCODE_MOD_RM(0x05),
|
---|
| 2046 | INVALID_OPCODE_MOD_RM(0x06),
|
---|
| 2047 | INVALID_OPCODE_MOD_RM(0x07),
|
---|
| 2048 | INVALID_OPCODE_MOD_RM(0x08),
|
---|
| 2049 | INVALID_OPCODE_MOD_RM(0x09),
|
---|
| 2050 | INVALID_OPCODE_MOD_RM(0x0a),
|
---|
| 2051 | INVALID_OPCODE_MOD_RM(0x0c),
|
---|
[41676] | 2052 | OP("pi2fw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PI2FW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2053 | OP("pi2fd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PI2FD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2054 | INVALID_OPCODE_MOD_RM(0x0e),
|
---|
| 2055 | INVALID_OPCODE_MOD_RM(0x0f),
|
---|
[1] | 2056 |
|
---|
| 2057 | /* 1 */
|
---|
[41863] | 2058 | INVALID_OPCODE_MOD_RM(0x10),
|
---|
| 2059 | INVALID_OPCODE_MOD_RM(0x11),
|
---|
| 2060 | INVALID_OPCODE_MOD_RM(0x12),
|
---|
| 2061 | INVALID_OPCODE_MOD_RM(0x13),
|
---|
| 2062 | INVALID_OPCODE_MOD_RM(0x14),
|
---|
| 2063 | INVALID_OPCODE_MOD_RM(0x15),
|
---|
| 2064 | INVALID_OPCODE_MOD_RM(0x16),
|
---|
| 2065 | INVALID_OPCODE_MOD_RM(0x17),
|
---|
| 2066 | INVALID_OPCODE_MOD_RM(0x18),
|
---|
| 2067 | INVALID_OPCODE_MOD_RM(0x19),
|
---|
| 2068 | INVALID_OPCODE_MOD_RM(0x1a),
|
---|
| 2069 | INVALID_OPCODE_MOD_RM(0x1b),
|
---|
[41676] | 2070 | OP("pf2iw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PF2IW, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2071 | OP("pf2id %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PF2ID, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2072 | INVALID_OPCODE_MOD_RM(0x1e),
|
---|
| 2073 | INVALID_OPCODE_MOD_RM(0x1f),
|
---|
[1] | 2074 |
|
---|
| 2075 | /* 2 */
|
---|
[41863] | 2076 | INVALID_OPCODE_BLOCK_MOD_RM(0x2)
|
---|
[1] | 2077 |
|
---|
| 2078 | /* 3 */
|
---|
[41863] | 2079 | INVALID_OPCODE_BLOCK_MOD_RM(0x3)
|
---|
[1] | 2080 |
|
---|
| 2081 | /* 4 */
|
---|
[41863] | 2082 | INVALID_OPCODE_BLOCK_MOD_RM(0x4)
|
---|
[1] | 2083 |
|
---|
| 2084 | /* 5 */
|
---|
[41863] | 2085 | INVALID_OPCODE_BLOCK_MOD_RM(0x5)
|
---|
[1] | 2086 |
|
---|
| 2087 | /* 6 */
|
---|
[41863] | 2088 | INVALID_OPCODE_BLOCK_MOD_RM(0x6)
|
---|
[1] | 2089 |
|
---|
| 2090 | /* 7 */
|
---|
[41863] | 2091 | INVALID_OPCODE_BLOCK_MOD_RM(0x7)
|
---|
[1] | 2092 |
|
---|
| 2093 | /* 8 */
|
---|
[41863] | 2094 | INVALID_OPCODE_MOD_RM(0x80),
|
---|
| 2095 | INVALID_OPCODE_MOD_RM(0x81),
|
---|
| 2096 | INVALID_OPCODE_MOD_RM(0x82),
|
---|
| 2097 | INVALID_OPCODE_MOD_RM(0x83),
|
---|
| 2098 | INVALID_OPCODE_MOD_RM(0x84),
|
---|
| 2099 | INVALID_OPCODE_MOD_RM(0x85),
|
---|
| 2100 | INVALID_OPCODE_MOD_RM(0x86),
|
---|
| 2101 | INVALID_OPCODE_MOD_RM(0x87),
|
---|
| 2102 | INVALID_OPCODE_MOD_RM(0x88),
|
---|
| 2103 | INVALID_OPCODE_MOD_RM(0x89),
|
---|
[41676] | 2104 | OP("pfnacc %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFNACC, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2105 | INVALID_OPCODE_MOD_RM(0x8b),
|
---|
| 2106 | INVALID_OPCODE_MOD_RM(0x8c),
|
---|
| 2107 | INVALID_OPCODE_MOD_RM(0x8d),
|
---|
[41676] | 2108 | OP("pfpnacc %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFPNACC, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2109 | INVALID_OPCODE_MOD_RM(0x8f),
|
---|
[1] | 2110 |
|
---|
| 2111 | /* 9 */
|
---|
[41676] | 2112 | OP("pfcmpge %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFCMPGE, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2113 | INVALID_OPCODE_MOD_RM(0x91),
|
---|
| 2114 | INVALID_OPCODE_MOD_RM(0x92),
|
---|
| 2115 | INVALID_OPCODE_MOD_RM(0x93),
|
---|
[41676] | 2116 | OP("pfmin %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFMIN, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2117 | INVALID_OPCODE_MOD_RM(0x95),
|
---|
[41676] | 2118 | OP("pfrcp %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFRCP, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2119 | OP("pfrsqrt %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFRSQRT, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2120 | INVALID_OPCODE_MOD_RM(0x98),
|
---|
| 2121 | INVALID_OPCODE_MOD_RM(0x99),
|
---|
[41676] | 2122 | OP("pfsub %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFSUB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2123 | INVALID_OPCODE_MOD_RM(0x9b),
|
---|
| 2124 | INVALID_OPCODE_MOD_RM(0x9c),
|
---|
| 2125 | INVALID_OPCODE_MOD_RM(0x9d),
|
---|
[41676] | 2126 | OP("pfadd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFADD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2127 | INVALID_OPCODE_MOD_RM(0x9f),
|
---|
[1] | 2128 |
|
---|
| 2129 | /* a */
|
---|
[41676] | 2130 | OP("pfcmpgt %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFCMPGT, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2131 | INVALID_OPCODE_MOD_RM(0xa1),
|
---|
| 2132 | INVALID_OPCODE_MOD_RM(0xa2),
|
---|
| 2133 | INVALID_OPCODE_MOD_RM(0xa3),
|
---|
[41676] | 2134 | OP("pfmax %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFMAX, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2135 | INVALID_OPCODE_MOD_RM(0xa5),
|
---|
[41676] | 2136 | OP("pfrcpit1 %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFRCPIT1,OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41867] | 2137 | OP("pfrsqit1 %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFRSQRTIT1, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2138 | INVALID_OPCODE_MOD_RM(0xa8),
|
---|
| 2139 | INVALID_OPCODE_MOD_RM(0xa9),
|
---|
[41676] | 2140 | OP("pfsubr %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFSUBR, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2141 | INVALID_OPCODE_MOD_RM(0xab),
|
---|
| 2142 | INVALID_OPCODE_MOD_RM(0xac),
|
---|
| 2143 | INVALID_OPCODE_MOD_RM(0xad),
|
---|
[41676] | 2144 | OP("pfacc %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFACC, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2145 | INVALID_OPCODE_MOD_RM(0xaf),
|
---|
[1] | 2146 |
|
---|
| 2147 | /* b */
|
---|
[41676] | 2148 | OP("pfcmpeq %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFCMPEQ, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2149 | INVALID_OPCODE_MOD_RM(0xb1),
|
---|
| 2150 | INVALID_OPCODE_MOD_RM(0xb2),
|
---|
| 2151 | INVALID_OPCODE_MOD_RM(0xb3),
|
---|
[41676] | 2152 | OP("pfmul %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFMUL, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2153 | INVALID_OPCODE_MOD_RM(0xb5),
|
---|
[41676] | 2154 | OP("pfrcpit2 %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFRCPIT2,OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[46950] | 2155 | OP("pmulhrw %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFMULHRW,OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2156 | INVALID_OPCODE_MOD_RM(0xb8),
|
---|
| 2157 | INVALID_OPCODE_MOD_RM(0xb9),
|
---|
| 2158 | INVALID_OPCODE_MOD_RM(0xba),
|
---|
[41676] | 2159 | OP("pswapd %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PFSWAPD, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 2160 | INVALID_OPCODE_MOD_RM(0xbc),
|
---|
| 2161 | INVALID_OPCODE_MOD_RM(0xbd),
|
---|
| 2162 | INVALID_OPCODE_MOD_RM(0xbe),
|
---|
[41676] | 2163 | OP("pavgusb %Pq,%Qq", IDX_ParseModRM, IDX_UseModRM, 0, OP_PAVGUSB, OP_PARM_Pq, OP_PARM_Qq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2164 |
|
---|
| 2165 | /* c */
|
---|
[41863] | 2166 | INVALID_OPCODE_BLOCK_MOD_RM(0xc)
|
---|
[1] | 2167 |
|
---|
| 2168 | /* d */
|
---|
[41863] | 2169 | INVALID_OPCODE_BLOCK_MOD_RM(0xd)
|
---|
[1] | 2170 |
|
---|
| 2171 | /* e */
|
---|
[41863] | 2172 | INVALID_OPCODE_BLOCK_MOD_RM(0xe)
|
---|
[1] | 2173 |
|
---|
| 2174 | /* f */
|
---|
[41863] | 2175 | INVALID_OPCODE_BLOCK_MOD_RM(0xf)
|
---|
[1] | 2176 | };
|
---|
| 2177 |
|
---|
| 2178 |
|
---|
| 2179 |
|
---|
| 2180 | /* Floating point opcode starting with escape byte 0xD8 (values 0-0xBF)*/
|
---|
[41690] | 2181 | const DISOPCODE g_aMapX86_EscF0_Low[8] =
|
---|
[1] | 2182 | {
|
---|
| 2183 | /* 0 */
|
---|
[41676] | 2184 | OP("fadd %Md", IDX_ParseModRM, 0, 0, OP_FADD, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2185 | OP("fmul %Md", IDX_ParseModRM, 0, 0, OP_FMUL, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2186 | OP("fcom %Md", IDX_ParseModRM, 0, 0, OP_FCOM, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2187 | OP("fcomp %Md", IDX_ParseModRM, 0, 0, OP_FCOMP, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2188 | OP("fsub %Md", IDX_ParseModRM, 0, 0, OP_FSUB, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2189 | OP("fsubr %Md", IDX_ParseModRM, 0, 0, OP_FSUBR, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2190 | OP("fdiv %Md", IDX_ParseModRM, 0, 0, OP_FDIV, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2191 | OP("fdivr %Md", IDX_ParseModRM, 0, 0, OP_FDIVR, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2192 | };
|
---|
| 2193 |
|
---|
| 2194 | /* Floating point opcode starting with escape byte 0xD8 (outside 0-0xBF)*/
|
---|
[41690] | 2195 | const DISOPCODE g_aMapX86_EscF0_High[16*4] =
|
---|
[1] | 2196 | {
|
---|
| 2197 | /* c */
|
---|
[41676] | 2198 | OP("fadd ST(0),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2199 | OP("fadd ST(0),ST(1)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2200 | OP("fadd ST(0),ST(2)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2201 | OP("fadd ST(0),ST(3)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2202 | OP("fadd ST(0),ST(4)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2203 | OP("fadd ST(0),ST(5)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2204 | OP("fadd ST(0),ST(6)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2205 | OP("fadd ST(0),ST(7)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2206 | OP("fmul ST(0),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2207 | OP("fmul ST(0),ST(1)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2208 | OP("fmul ST(0),ST(2)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2209 | OP("fmul ST(0),ST(3)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2210 | OP("fmul ST(0),ST(4)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2211 | OP("fmul ST(0),ST(5)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2212 | OP("fmul ST(0),ST(6)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2213 | OP("fmul ST(0),ST(7)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2214 |
|
---|
| 2215 | /* d */
|
---|
[41676] | 2216 | OP("fcom ST(0),ST(0)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2217 | OP("fcom ST(0),ST(1)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2218 | OP("fcom ST(0),ST(2)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2219 | OP("fcom ST(0),ST(3)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2220 | OP("fcom ST(0),ST(4)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2221 | OP("fcom ST(0),ST(5)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2222 | OP("fcom ST(0),ST(6)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2223 | OP("fcom ST(0),ST(7)", 0, 0, 0, OP_FCOM, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2224 | OP("fcomp ST(0),ST(0)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2225 | OP("fcomp ST(0),ST(1)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2226 | OP("fcomp ST(0),ST(2)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2227 | OP("fcomp ST(0),ST(3)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2228 | OP("fcomp ST(0),ST(4)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2229 | OP("fcomp ST(0),ST(5)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2230 | OP("fcomp ST(0),ST(6)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2231 | OP("fcomp ST(0),ST(7)", 0, 0, 0, OP_FCOMP, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2232 |
|
---|
| 2233 |
|
---|
| 2234 | /* e */
|
---|
[41676] | 2235 | OP("fsub ST(0),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2236 | OP("fsub ST(0),ST(1)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2237 | OP("fsub ST(0),ST(2)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2238 | OP("fsub ST(0),ST(3)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2239 | OP("fsub ST(0),ST(4)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2240 | OP("fsub ST(0),ST(5)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2241 | OP("fsub ST(0),ST(6)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2242 | OP("fsub ST(0),ST(7)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2243 | OP("fsubr ST(0),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2244 | OP("fsubr ST(0),ST(1)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2245 | OP("fsubr ST(0),ST(2)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2246 | OP("fsubr ST(0),ST(3)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2247 | OP("fsubr ST(0),ST(4)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2248 | OP("fsubr ST(0),ST(5)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2249 | OP("fsubr ST(0),ST(6)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2250 | OP("fsubr ST(0),ST(7)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2251 |
|
---|
| 2252 | /* f */
|
---|
[41676] | 2253 | OP("fdiv ST(0),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2254 | OP("fdiv ST(0),ST(1)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2255 | OP("fdiv ST(0),ST(2)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2256 | OP("fdiv ST(0),ST(3)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2257 | OP("fdiv ST(0),ST(4)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2258 | OP("fdiv ST(0),ST(5)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2259 | OP("fdiv ST(0),ST(6)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2260 | OP("fdiv ST(0),ST(7)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2261 | OP("fdivr ST(0),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2262 | OP("fdivr ST(0),ST(1)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2263 | OP("fdivr ST(0),ST(2)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2264 | OP("fdivr ST(0),ST(3)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2265 | OP("fdivr ST(0),ST(4)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2266 | OP("fdivr ST(0),ST(5)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2267 | OP("fdivr ST(0),ST(6)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2268 | OP("fdivr ST(0),ST(7)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2269 | };
|
---|
| 2270 |
|
---|
| 2271 | /* Floating point opcode starting with escape byte 0xD9 (values 0-0xBF)*/
|
---|
[41690] | 2272 | const DISOPCODE g_aMapX86_EscF1_Low[8] =
|
---|
[1] | 2273 | {
|
---|
| 2274 | /* 0 */
|
---|
[41676] | 2275 | OP("fld %Md", IDX_ParseModRM, 0, 0, OP_FLD, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2276 | INVALID_OPCODE,
|
---|
[41676] | 2277 | OP("fst %Md", IDX_ParseModRM, 0, 0, OP_FST, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2278 | OP("fstp %Md", IDX_ParseModRM, 0, 0, OP_FSTP, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[63567] | 2279 | /// @todo ??
|
---|
[41676] | 2280 | OP("fldenv %M", IDX_ParseModRM, 0, 0, OP_FLDENV, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2281 | OP("fldcw %Ew", IDX_ParseModRM, 0, 0, OP_FSUBR, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[63567] | 2282 | /// @todo ??
|
---|
[41676] | 2283 | OP("fstenv %M", IDX_ParseModRM, 0, 0, OP_FSTENV, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2284 | OP("fstcw %Ew", IDX_ParseModRM, 0, 0, OP_FSTCW, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2285 | };
|
---|
| 2286 |
|
---|
| 2287 |
|
---|
| 2288 | /* Floating point opcode starting with escape byte 0xD9 (outside 0-0xBF)*/
|
---|
[41690] | 2289 | const DISOPCODE g_aMapX86_EscF1_High[16*4] =
|
---|
[1] | 2290 | {
|
---|
| 2291 | /* c */
|
---|
[41676] | 2292 | OP("fld ST(0),ST(0)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2293 | OP("fld ST(0),ST(1)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2294 | OP("fld ST(0),ST(2)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2295 | OP("fld ST(0),ST(3)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2296 | OP("fld ST(0),ST(4)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2297 | OP("fld ST(0),ST(5)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2298 | OP("fld ST(0),ST(6)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2299 | OP("fld ST(0),ST(7)", 0, 0, 0, OP_FLD, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2300 | OP("fxch ST(0),ST(0)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2301 | OP("fxch ST(0),ST(1)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2302 | OP("fxch ST(0),ST(2)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2303 | OP("fxch ST(0),ST(3)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2304 | OP("fxch ST(0),ST(4)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2305 | OP("fxch ST(0),ST(5)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2306 | OP("fxch ST(0),ST(6)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2307 | OP("fxch ST(0),ST(7)", 0, 0, 0, OP_FXCH, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2308 |
|
---|
| 2309 | /* d */
|
---|
[41676] | 2310 | OP("fnop", 0, 0, 0, OP_FNOP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2311 | INVALID_OPCODE,
|
---|
| 2312 | INVALID_OPCODE,
|
---|
| 2313 | INVALID_OPCODE,
|
---|
| 2314 | INVALID_OPCODE,
|
---|
| 2315 | INVALID_OPCODE,
|
---|
| 2316 | INVALID_OPCODE,
|
---|
| 2317 | INVALID_OPCODE,
|
---|
| 2318 | INVALID_OPCODE,
|
---|
| 2319 | INVALID_OPCODE,
|
---|
| 2320 | INVALID_OPCODE,
|
---|
| 2321 | INVALID_OPCODE,
|
---|
| 2322 | INVALID_OPCODE,
|
---|
| 2323 | INVALID_OPCODE,
|
---|
| 2324 | INVALID_OPCODE,
|
---|
| 2325 | INVALID_OPCODE,
|
---|
| 2326 |
|
---|
| 2327 |
|
---|
| 2328 | /* e */
|
---|
[41676] | 2329 | OP("fchs", 0, 0, 0, OP_FCHS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2330 | OP("fabs", 0, 0, 0, OP_FABS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2331 | INVALID_OPCODE,
|
---|
| 2332 | INVALID_OPCODE,
|
---|
[41676] | 2333 | OP("ftst", 0, 0, 0, OP_FCHS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2334 | OP("fxam", 0, 0, 0, OP_FCHS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2335 | INVALID_OPCODE,
|
---|
| 2336 | INVALID_OPCODE,
|
---|
[41676] | 2337 | OP("fld1", 0, 0, 0, OP_FLD1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2338 | OP("fldl2t", 0, 0, 0, OP_FLDL2T, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2339 | OP("fldl2e", 0, 0, 0, OP_FLDL2E, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2340 | OP("fldpi", 0, 0, 0, OP_FLDPI, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2341 | OP("fldlg2", 0, 0, 0, OP_FLDLG2, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2342 | OP("fldln2", 0, 0, 0, OP_FLDLN2, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2343 | OP("fldz", 0, 0, 0, OP_FLDZ, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2344 | INVALID_OPCODE,
|
---|
| 2345 |
|
---|
| 2346 | /* f */
|
---|
[41676] | 2347 | OP("f2xm1", 0, 0, 0, OP_F2XM1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2348 | OP("fyl2x", 0, 0, 0, OP_FYL2X, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2349 | OP("fptan", 0, 0, 0, OP_FPTAN, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2350 | OP("fpatan", 0, 0, 0, OP_FPATAN, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2351 | OP("fxtract", 0, 0, 0, OP_FXTRACT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2352 | OP("frem1", 0, 0, 0, OP_FREM1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2353 | OP("fdecstp", 0, 0, 0, OP_FDECSTP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2354 | OP("fincstp", 0, 0, 0, OP_FINCSTP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2355 | OP("fprem", 0, 0, 0, OP_FPREM, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2356 | OP("fyl2xp1", 0, 0, 0, OP_FYL2XP1, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2357 | OP("fsqrt", 0, 0, 0, OP_FSQRT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2358 | OP("fsincos", 0, 0, 0, OP_FSINCOS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2359 | OP("frndint", 0, 0, 0, OP_FRNDINT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2360 | OP("fscale", 0, 0, 0, OP_FSCALE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2361 | OP("fsin", 0, 0, 0, OP_FSIN, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2362 | OP("fcos", 0, 0, 0, OP_FCOS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2363 | };
|
---|
| 2364 |
|
---|
| 2365 |
|
---|
| 2366 | /* Floating point opcode starting with escape byte 0xDA (values 0-0xBF)*/
|
---|
[41690] | 2367 | const DISOPCODE g_aMapX86_EscF2_Low[8] =
|
---|
[1] | 2368 | {
|
---|
| 2369 | /* 0 */
|
---|
[41676] | 2370 | OP("fiadd %Md", IDX_ParseModRM, 0, 0, OP_FIADD, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2371 | OP("fimul %Md", IDX_ParseModRM, 0, 0, OP_FIMUL, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2372 | OP("ficom %Md", IDX_ParseModRM, 0, 0, OP_FICOM, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2373 | OP("ficomp %Md", IDX_ParseModRM, 0, 0, OP_FICOMP, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2374 | OP("fisub %Md", IDX_ParseModRM, 0, 0, OP_FISUB, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2375 | OP("fisubr %Md", IDX_ParseModRM, 0, 0, OP_FISUBR, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2376 | OP("fidiv %Md", IDX_ParseModRM, 0, 0, OP_FIDIV, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2377 | OP("fidivr %Md", IDX_ParseModRM, 0, 0, OP_FIDIVR, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2378 | };
|
---|
| 2379 |
|
---|
| 2380 |
|
---|
| 2381 | /* Floating point opcode starting with escape byte 0xD9 (outside 0-0xBF)*/
|
---|
[41690] | 2382 | const DISOPCODE g_aMapX86_EscF2_High[16*4] =
|
---|
[1] | 2383 | {
|
---|
| 2384 | /* c */
|
---|
[41676] | 2385 | OP("fcmovb ST(0),ST(0)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2386 | OP("fcmovb ST(0),ST(1)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2387 | OP("fcmovb ST(0),ST(2)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2388 | OP("fcmovb ST(0),ST(3)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2389 | OP("fcmovb ST(0),ST(4)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2390 | OP("fcmovb ST(0),ST(5)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2391 | OP("fcmovb ST(0),ST(6)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2392 | OP("fcmovb ST(0),ST(7)", 0, 0, 0, OP_FCMOVB, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2393 | OP("fcmove ST(0),ST(0)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2394 | OP("fcmove ST(0),ST(1)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2395 | OP("fcmove ST(0),ST(2)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2396 | OP("fcmove ST(0),ST(3)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2397 | OP("fcmove ST(0),ST(4)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2398 | OP("fcmove ST(0),ST(5)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2399 | OP("fcmove ST(0),ST(6)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2400 | OP("fcmove ST(0),ST(7)", 0, 0, 0, OP_FCMOVE, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2401 |
|
---|
| 2402 | /* d */
|
---|
[65876] | 2403 | OP("fcmovbe ST(0),ST(0)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2404 | OP("fcmovbe ST(0),ST(1)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2405 | OP("fcmovbe ST(0),ST(2)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2406 | OP("fcmovbe ST(0),ST(3)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2407 | OP("fcmovbe ST(0),ST(4)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2408 | OP("fcmovbe ST(0),ST(5)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2409 | OP("fcmovbe ST(0),ST(6)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2410 | OP("fcmovbe ST(0),ST(7)", 0, 0, 0, OP_FCMOVBE, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 2411 | OP("fcmovu ST(0),ST(0)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2412 | OP("fcmovu ST(0),ST(1)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2413 | OP("fcmovu ST(0),ST(2)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2414 | OP("fcmovu ST(0),ST(3)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2415 | OP("fcmovu ST(0),ST(4)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2416 | OP("fcmovu ST(0),ST(5)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2417 | OP("fcmovu ST(0),ST(6)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2418 | OP("fcmovu ST(0),ST(7)", 0, 0, 0, OP_FCMOVU, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2419 |
|
---|
| 2420 | /* e */
|
---|
| 2421 | INVALID_OPCODE,
|
---|
| 2422 | INVALID_OPCODE,
|
---|
| 2423 | INVALID_OPCODE,
|
---|
| 2424 | INVALID_OPCODE,
|
---|
| 2425 | INVALID_OPCODE,
|
---|
| 2426 | INVALID_OPCODE,
|
---|
| 2427 | INVALID_OPCODE,
|
---|
| 2428 | INVALID_OPCODE,
|
---|
| 2429 | INVALID_OPCODE,
|
---|
[41676] | 2430 | OP("fucompp", 0, 0, 0, OP_FUCOMPP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2431 | INVALID_OPCODE,
|
---|
| 2432 | INVALID_OPCODE,
|
---|
| 2433 | INVALID_OPCODE,
|
---|
| 2434 | INVALID_OPCODE,
|
---|
| 2435 | INVALID_OPCODE,
|
---|
| 2436 | INVALID_OPCODE,
|
---|
| 2437 |
|
---|
| 2438 | /* f */
|
---|
| 2439 | INVALID_OPCODE_BLOCK
|
---|
| 2440 | };
|
---|
| 2441 |
|
---|
| 2442 |
|
---|
| 2443 | /* Floating point opcode starting with escape byte 0xDB (values 0-0xBF)*/
|
---|
[41690] | 2444 | const DISOPCODE g_aMapX86_EscF3_Low[8] =
|
---|
[1] | 2445 | {
|
---|
| 2446 | /* 0 */
|
---|
[41676] | 2447 | OP("fild %Md", IDX_ParseModRM, 0, 0, OP_FILD, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2448 | INVALID_OPCODE,
|
---|
[41676] | 2449 | OP("fist %Md", IDX_ParseModRM, 0, 0, OP_FIST, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2450 | OP("fistp %Md", IDX_ParseModRM, 0, 0, OP_FISTP, OP_PARM_Md, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2451 | INVALID_OPCODE,
|
---|
[41676] | 2452 | OP("fld %Mq", IDX_ParseModRM, 0, 0, OP_FLD, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2453 | INVALID_OPCODE,
|
---|
[41676] | 2454 | OP("fstp %Mq", IDX_ParseModRM, 0, 0, OP_FSTP, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2455 | };
|
---|
| 2456 |
|
---|
| 2457 |
|
---|
| 2458 | /* Floating point opcode starting with escape byte 0xDB (outside 0-0xBF)*/
|
---|
[41690] | 2459 | const DISOPCODE g_aMapX86_EscF3_High[16*4] =
|
---|
[1] | 2460 | {
|
---|
| 2461 | /* c */
|
---|
[65876] | 2462 | OP("fcmovnb ST(0),ST(0)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2463 | OP("fcmovnb ST(0),ST(1)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2464 | OP("fcmovnb ST(0),ST(2)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2465 | OP("fcmovnb ST(0),ST(3)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2466 | OP("fcmovnb ST(0),ST(4)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2467 | OP("fcmovnb ST(0),ST(5)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2468 | OP("fcmovnb ST(0),ST(6)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2469 | OP("fcmovnb ST(0),ST(7)", 0, 0, 0, OP_FCMOVNB, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2470 | OP("fcmovne ST(0),ST(0)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2471 | OP("fcmovne ST(0),ST(1)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2472 | OP("fcmovne ST(0),ST(2)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2473 | OP("fcmovne ST(0),ST(3)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2474 | OP("fcmovne ST(0),ST(4)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2475 | OP("fcmovne ST(0),ST(5)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2476 | OP("fcmovne ST(0),ST(6)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2477 | OP("fcmovne ST(0),ST(7)", 0, 0, 0, OP_FCMOVNE, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2478 |
|
---|
| 2479 | /* d */
|
---|
[65876] | 2480 | OP("fcmovnbe ST(0),ST(0)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2481 | OP("fcmovnbe ST(0),ST(1)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2482 | OP("fcmovnbe ST(0),ST(2)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2483 | OP("fcmovnbe ST(0),ST(3)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2484 | OP("fcmovnbe ST(0),ST(4)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2485 | OP("fcmovnbe ST(0),ST(5)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2486 | OP("fcmovnbe ST(0),ST(6)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2487 | OP("fcmovnbe ST(0),ST(7)", 0, 0, 0, OP_FCMOVNBE,OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2488 | OP("fcmovnu ST(0),ST(0)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2489 | OP("fcmovnu ST(0),ST(1)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2490 | OP("fcmovnu ST(0),ST(2)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2491 | OP("fcmovnu ST(0),ST(3)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2492 | OP("fcmovnu ST(0),ST(4)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2493 | OP("fcmovnu ST(0),ST(5)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2494 | OP("fcmovnu ST(0),ST(6)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2495 | OP("fcmovnu ST(0),ST(7)", 0, 0, 0, OP_FCMOVNU, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2496 |
|
---|
| 2497 | /* e */
|
---|
| 2498 | INVALID_OPCODE,
|
---|
| 2499 | INVALID_OPCODE,
|
---|
[41676] | 2500 | OP("fclex", 0, 0, 0, OP_FCLEX, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2501 | OP("finit", 0, 0, 0, OP_FINIT, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2502 | INVALID_OPCODE,
|
---|
| 2503 | INVALID_OPCODE,
|
---|
| 2504 | INVALID_OPCODE,
|
---|
| 2505 | INVALID_OPCODE,
|
---|
[65876] | 2506 | OP("fucomi ST(0),ST(0)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2507 | OP("fucomi ST(0),ST(1)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2508 | OP("fucomi ST(0),ST(2)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2509 | OP("fucomi ST(0),ST(3)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2510 | OP("fucomi ST(0),ST(4)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2511 | OP("fucomi ST(0),ST(5)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2512 | OP("fucomi ST(0),ST(6)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2513 | OP("fucomi ST(0),ST(7)", 0, 0, 0, OP_FUCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2514 |
|
---|
| 2515 |
|
---|
| 2516 | /* e */
|
---|
[65876] | 2517 | OP("fcomi ST(0),ST(0)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2518 | OP("fcomi ST(0),ST(1)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2519 | OP("fcomi ST(0),ST(2)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2520 | OP("fcomi ST(0),ST(3)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2521 | OP("fcomi ST(0),ST(4)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2522 | OP("fcomi ST(0),ST(5)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2523 | OP("fcomi ST(0),ST(6)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2524 | OP("fcomi ST(0),ST(7)", 0, 0, 0, OP_FCOMI, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2525 | INVALID_OPCODE,
|
---|
| 2526 | INVALID_OPCODE,
|
---|
| 2527 | INVALID_OPCODE,
|
---|
| 2528 | INVALID_OPCODE,
|
---|
| 2529 | INVALID_OPCODE,
|
---|
| 2530 | INVALID_OPCODE,
|
---|
| 2531 | INVALID_OPCODE,
|
---|
| 2532 | INVALID_OPCODE,
|
---|
| 2533 | };
|
---|
| 2534 |
|
---|
| 2535 |
|
---|
| 2536 | /* Floating point opcode starting with escape byte 0xDC (values 0-0xBF)*/
|
---|
[41690] | 2537 | const DISOPCODE g_aMapX86_EscF4_Low[8] =
|
---|
[1] | 2538 | {
|
---|
| 2539 | /* 0 */
|
---|
[41676] | 2540 | OP("fadd %Mq", IDX_ParseModRM, 0, 0, OP_FADD, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2541 | OP("fmul %Mq", IDX_ParseModRM, 0, 0, OP_FMUL, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2542 | OP("fcom %Mq", IDX_ParseModRM, 0, 0, OP_FCOM, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2543 | OP("fcomp %Mq", IDX_ParseModRM, 0, 0, OP_FCOMP, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2544 | OP("fsub %Mq", IDX_ParseModRM, 0, 0, OP_FSUB, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2545 | OP("fsubr %Mq", IDX_ParseModRM, 0, 0, OP_FSUBR, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2546 | OP("fdiv %Mq", IDX_ParseModRM, 0, 0, OP_FDIV, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2547 | OP("fdivr %Mq", IDX_ParseModRM, 0, 0, OP_FDIVR, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2548 | };
|
---|
| 2549 |
|
---|
| 2550 |
|
---|
| 2551 | /* Floating point opcode starting with escape byte 0xDC (outside 0-0xBF)*/
|
---|
[41690] | 2552 | const DISOPCODE g_aMapX86_EscF4_High[16*4] =
|
---|
[1] | 2553 | {
|
---|
| 2554 | /* c */
|
---|
[41676] | 2555 | OP("fadd ST(0),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2556 | OP("fadd ST(1),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2557 | OP("fadd ST(2),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2558 | OP("fadd ST(3),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2559 | OP("fadd ST(4),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2560 | OP("fadd ST(5),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2561 | OP("fadd ST(6),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2562 | OP("fadd ST(7),ST(0)", 0, 0, 0, OP_FADD, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2563 | OP("fmul ST(0),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2564 | OP("fmul ST(1),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2565 | OP("fmul ST(2),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2566 | OP("fmul ST(3),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2567 | OP("fmul ST(4),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2568 | OP("fmul ST(5),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2569 | OP("fmul ST(6),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2570 | OP("fmul ST(7),ST(0)", 0, 0, 0, OP_FMUL, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2571 |
|
---|
| 2572 | /* d */
|
---|
| 2573 | INVALID_OPCODE_BLOCK
|
---|
| 2574 |
|
---|
| 2575 |
|
---|
| 2576 | /* e */
|
---|
[41676] | 2577 | OP("fsubr ST(0),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2578 | OP("fsubr ST(1),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2579 | OP("fsubr ST(2),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2580 | OP("fsubr ST(3),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2581 | OP("fsubr ST(4),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2582 | OP("fsubr ST(5),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2583 | OP("fsubr ST(6),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2584 | OP("fsubr ST(7),ST(0)", 0, 0, 0, OP_FSUBR, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2585 | OP("fsub ST(0),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2586 | OP("fsub ST(1),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2587 | OP("fsub ST(2),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2588 | OP("fsub ST(3),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2589 | OP("fsub ST(4),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2590 | OP("fsub ST(5),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2591 | OP("fsub ST(6),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2592 | OP("fsub ST(7),ST(0)", 0, 0, 0, OP_FSUB, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2593 |
|
---|
| 2594 | /* f */
|
---|
[41676] | 2595 | OP("fdivr ST(0),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2596 | OP("fdivr ST(1),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2597 | OP("fdivr ST(2),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2598 | OP("fdivr ST(3),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2599 | OP("fdivr ST(4),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2600 | OP("fdivr ST(5),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2601 | OP("fdivr ST(6),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2602 | OP("fdivr ST(7),ST(0)", 0, 0, 0, OP_FDIVR, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2603 | OP("fdiv ST(0),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2604 | OP("fdiv ST(1),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2605 | OP("fdiv ST(2),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2606 | OP("fdiv ST(3),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2607 | OP("fdiv ST(4),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2608 | OP("fdiv ST(5),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2609 | OP("fdiv ST(6),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2610 | OP("fdiv ST(7),ST(0)", 0, 0, 0, OP_FDIV, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2611 | };
|
---|
| 2612 |
|
---|
| 2613 |
|
---|
| 2614 | /* Floating point opcode starting with escape byte 0xDD (values 0-0xBF)*/
|
---|
[41690] | 2615 | const DISOPCODE g_aMapX86_EscF5_Low[8] =
|
---|
[1] | 2616 | {
|
---|
| 2617 | /* 0 */
|
---|
[41676] | 2618 | OP("fld %Mq", IDX_ParseModRM, 0, 0, OP_FLD, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
[1] | 2619 | INVALID_OPCODE,
|
---|
[41676] | 2620 | OP("fst %Mq", IDX_ParseModRM, 0, 0, OP_FST, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
| 2621 | OP("fstp %Mq", IDX_ParseModRM, 0, 0, OP_FSTP, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
| 2622 | OP("frstor %M", IDX_ParseModRM, 0, 0, OP_FRSTOR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
[1] | 2623 | INVALID_OPCODE,
|
---|
[60416] | 2624 | OP("fnsave %M", IDX_ParseModRM, 0, 0, OP_FSAVE, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
[41676] | 2625 | OP("fnstsw %Mw", IDX_ParseModRM, 0, 0, OP_FNSTSW, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS /* fixme: wasn't initialized! */),
|
---|
[1] | 2626 | };
|
---|
| 2627 |
|
---|
| 2628 |
|
---|
| 2629 | /* Floating point opcode starting with escape byte 0xDD (outside 0-0xBF)*/
|
---|
[41690] | 2630 | const DISOPCODE g_aMapX86_EscF5_High[16*4] =
|
---|
[1] | 2631 | {
|
---|
| 2632 | /* c */
|
---|
[41676] | 2633 | OP("ffree ST(0)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_0, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2634 | OP("ffree ST(1)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_1, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2635 | OP("ffree ST(2)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_2, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2636 | OP("ffree ST(3)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_3, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2637 | OP("ffree ST(4)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_4, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2638 | OP("ffree ST(5)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_5, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2639 | OP("ffree ST(6)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_6, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2640 | OP("ffree ST(7)", 0, 0, 0, OP_FFREE, OP_PARM_REGFP_7, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2641 | INVALID_OPCODE,
|
---|
| 2642 | INVALID_OPCODE,
|
---|
| 2643 | INVALID_OPCODE,
|
---|
| 2644 | INVALID_OPCODE,
|
---|
| 2645 | INVALID_OPCODE,
|
---|
| 2646 | INVALID_OPCODE,
|
---|
| 2647 | INVALID_OPCODE,
|
---|
| 2648 | INVALID_OPCODE,
|
---|
| 2649 |
|
---|
| 2650 | /* d */
|
---|
[41676] | 2651 | OP("fst ST(0)", 0, 0, 0, OP_FST, OP_PARM_REGFP_0, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2652 | OP("fst ST(1)", 0, 0, 0, OP_FST, OP_PARM_REGFP_1, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2653 | OP("fst ST(2)", 0, 0, 0, OP_FST, OP_PARM_REGFP_2, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2654 | OP("fst ST(3)", 0, 0, 0, OP_FST, OP_PARM_REGFP_3, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2655 | OP("fst ST(4)", 0, 0, 0, OP_FST, OP_PARM_REGFP_4, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2656 | OP("fst ST(5)", 0, 0, 0, OP_FST, OP_PARM_REGFP_5, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2657 | OP("fst ST(6)", 0, 0, 0, OP_FST, OP_PARM_REGFP_6, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2658 | OP("fst ST(7)", 0, 0, 0, OP_FST, OP_PARM_REGFP_7, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2659 | OP("fstp ST(0)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_0, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2660 | OP("fstp ST(1)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_1, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2661 | OP("fstp ST(2)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_2, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2662 | OP("fstp ST(3)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_3, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2663 | OP("fstp ST(4)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_4, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2664 | OP("fstp ST(5)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_5, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2665 | OP("fstp ST(6)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_6, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2666 | OP("fstp ST(7)", 0, 0, 0, OP_FSTP, OP_PARM_REGFP_7, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2667 |
|
---|
| 2668 |
|
---|
| 2669 | /* e */
|
---|
[41676] | 2670 | OP("fucom ST(0)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_0, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2671 | OP("fucom ST(1)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_1, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2672 | OP("fucom ST(2)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_2, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2673 | OP("fucom ST(3)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_3, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2674 | OP("fucom ST(4)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_4, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2675 | OP("fucom ST(5)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_5, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2676 | OP("fucom ST(6)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_6, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2677 | OP("fucom ST(7)", 0, 0, 0, OP_FUCOM, OP_PARM_REGFP_7, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2678 | OP("fucomp ST(0)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_0, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2679 | OP("fucomp ST(1)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_1, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2680 | OP("fucomp ST(2)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_2, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2681 | OP("fucomp ST(3)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_3, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2682 | OP("fucomp ST(4)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_4, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2683 | OP("fucomp ST(5)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_5, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2684 | OP("fucomp ST(6)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_6, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2685 | OP("fucomp ST(7)", 0, 0, 0, OP_FUCOMP, OP_PARM_REGFP_7, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2686 |
|
---|
| 2687 | /* f */
|
---|
| 2688 | INVALID_OPCODE_BLOCK
|
---|
| 2689 | };
|
---|
| 2690 |
|
---|
| 2691 |
|
---|
| 2692 |
|
---|
| 2693 | /* Floating point opcode starting with escape byte 0xDE (values 0-0xBF)*/
|
---|
[41690] | 2694 | const DISOPCODE g_aMapX86_EscF6_Low[8] =
|
---|
[1] | 2695 | {
|
---|
| 2696 | /* 0 */
|
---|
[41676] | 2697 | OP("fiadd %Mw", IDX_ParseModRM, 0, 0, OP_FIADD, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2698 | OP("fimul %Mw", IDX_ParseModRM, 0, 0, OP_FIMUL, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2699 | OP("ficom %Mw", IDX_ParseModRM, 0, 0, OP_FICOM, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2700 | OP("ficomp %Mw", IDX_ParseModRM, 0, 0, OP_FICOMP, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2701 | OP("fisub %Mw", IDX_ParseModRM, 0, 0, OP_FISUB, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2702 | OP("fisubr %Mw", IDX_ParseModRM, 0, 0, OP_FISUBR, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2703 | OP("fidiv %Mw", IDX_ParseModRM, 0, 0, OP_FIDIV, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2704 | OP("fidivr %Mw", IDX_ParseModRM, 0, 0, OP_FIDIVR, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2705 | };
|
---|
| 2706 |
|
---|
| 2707 |
|
---|
| 2708 | /* Floating point opcode starting with escape byte 0xDE (outside 0-0xBF)*/
|
---|
[41690] | 2709 | const DISOPCODE g_aMapX86_EscF6_High[16*4] =
|
---|
[1] | 2710 | {
|
---|
| 2711 | /* c */
|
---|
[41676] | 2712 | OP("faddp ST(0),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2713 | OP("faddp ST(1),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2714 | OP("faddp ST(2),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2715 | OP("faddp ST(3),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2716 | OP("faddp ST(4),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2717 | OP("faddp ST(5),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2718 | OP("faddp ST(6),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2719 | OP("faddp ST(7),ST(0)", 0, 0, 0, OP_FADDP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2720 | OP("fmulp ST(0),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2721 | OP("fmulp ST(1),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2722 | OP("fmulp ST(2),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2723 | OP("fmulp ST(3),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2724 | OP("fmulp ST(4),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2725 | OP("fmulp ST(5),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2726 | OP("fmulp ST(6),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2727 | OP("fmulp ST(7),ST(0)", 0, 0, 0, OP_FMULP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2728 |
|
---|
| 2729 | /* d */
|
---|
| 2730 | INVALID_OPCODE,
|
---|
[41676] | 2731 | OP("fcompp", 0, 0, 0, OP_FCOMPP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2732 | INVALID_OPCODE,
|
---|
| 2733 | INVALID_OPCODE,
|
---|
| 2734 | INVALID_OPCODE,
|
---|
| 2735 | INVALID_OPCODE,
|
---|
| 2736 | INVALID_OPCODE,
|
---|
| 2737 | INVALID_OPCODE,
|
---|
| 2738 | INVALID_OPCODE,
|
---|
| 2739 | INVALID_OPCODE,
|
---|
| 2740 | INVALID_OPCODE,
|
---|
| 2741 | INVALID_OPCODE,
|
---|
| 2742 | INVALID_OPCODE,
|
---|
| 2743 | INVALID_OPCODE,
|
---|
| 2744 | INVALID_OPCODE,
|
---|
| 2745 | INVALID_OPCODE,
|
---|
| 2746 |
|
---|
| 2747 |
|
---|
| 2748 | /* e */
|
---|
[41676] | 2749 | OP("fsubrp ST(0),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2750 | OP("fsubrp ST(1),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2751 | OP("fsubrp ST(2),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2752 | OP("fsubrp ST(3),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2753 | OP("fsubrp ST(4),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2754 | OP("fsubrp ST(5),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2755 | OP("fsubrp ST(6),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2756 | OP("fsubrp ST(7),ST(0)", 0, 0, 0, OP_FSUBRP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2757 | OP("fsubp ST(0),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2758 | OP("fsubp ST(1),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2759 | OP("fsubp ST(2),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2760 | OP("fsubp ST(3),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2761 | OP("fsubp ST(4),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2762 | OP("fsubp ST(5),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2763 | OP("fsubp ST(6),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2764 | OP("fsubp ST(7),ST(0)", 0, 0, 0, OP_FSUBP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2765 |
|
---|
| 2766 | /* f */
|
---|
[41676] | 2767 | OP("fdivrp ST(0),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2768 | OP("fdivrp ST(1),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2769 | OP("fdivrp ST(2),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2770 | OP("fdivrp ST(3),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2771 | OP("fdivrp ST(4),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2772 | OP("fdivrp ST(5),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2773 | OP("fdivrp ST(6),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2774 | OP("fdivrp ST(7),ST(0)", 0, 0, 0, OP_FDIVRP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2775 | OP("fdivp ST(0),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2776 | OP("fdivp ST(1),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_1, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2777 | OP("fdivp ST(2),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_2, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2778 | OP("fdivp ST(3),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_3, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2779 | OP("fdivp ST(4),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_4, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2780 | OP("fdivp ST(5),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_5, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2781 | OP("fdivp ST(6),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_6, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2782 | OP("fdivp ST(7),ST(0)", 0, 0, 0, OP_FDIVP, OP_PARM_REGFP_7, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2783 | };
|
---|
| 2784 |
|
---|
| 2785 | /* Floating point opcode starting with escape byte 0xDF (values 0-0xBF)*/
|
---|
[41690] | 2786 | const DISOPCODE g_aMapX86_EscF7_Low[8] =
|
---|
[1] | 2787 | {
|
---|
| 2788 | /* 0 */
|
---|
[41676] | 2789 | OP("fild %Mw", IDX_ParseModRM, 0, 0, OP_FILD, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2790 | INVALID_OPCODE,
|
---|
[41676] | 2791 | OP("fist %Mw", IDX_ParseModRM, 0, 0, OP_FIST, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2792 | OP("fistp %Mw", IDX_ParseModRM, 0, 0, OP_FISTP, OP_PARM_Mw, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2793 | OP("fbld %M", IDX_ParseModRM, 0, 0, OP_FBLD, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2794 | OP("fild %Mq", IDX_ParseModRM, 0, 0, OP_FILD, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2795 | OP("fbstp %M", IDX_ParseModRM, 0, 0, OP_FBSTP, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2796 | OP("fistp %Mq", IDX_ParseModRM, 0, 0, OP_FISTP, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2797 | };
|
---|
| 2798 |
|
---|
| 2799 |
|
---|
| 2800 | /* Floating point opcode starting with escape byte 0xDF (outside 0-0xBF)*/
|
---|
[41690] | 2801 | const DISOPCODE g_aMapX86_EscF7_High[16*4] =
|
---|
[1] | 2802 | {
|
---|
| 2803 | /* c */
|
---|
| 2804 | INVALID_OPCODE_BLOCK
|
---|
| 2805 |
|
---|
| 2806 | /* d */
|
---|
| 2807 | INVALID_OPCODE_BLOCK
|
---|
| 2808 |
|
---|
| 2809 | /* e */
|
---|
[41676] | 2810 | OP("fnstsw ax", IDX_ParseFixedReg, 0, 0, OP_FNSTSW, OP_PARM_REG_AX, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2811 | INVALID_OPCODE,
|
---|
| 2812 | INVALID_OPCODE,
|
---|
| 2813 | INVALID_OPCODE,
|
---|
| 2814 | INVALID_OPCODE,
|
---|
| 2815 | INVALID_OPCODE,
|
---|
| 2816 | INVALID_OPCODE,
|
---|
| 2817 | INVALID_OPCODE,
|
---|
[65876] | 2818 | OP("fucomip ST(0),ST(0)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2819 | OP("fucomip ST(0),ST(1)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2820 | OP("fucomip ST(0),ST(2)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2821 | OP("fucomip ST(0),ST(3)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2822 | OP("fucomip ST(0),ST(4)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2823 | OP("fucomip ST(0),ST(5)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2824 | OP("fucomip ST(0),ST(6)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2825 | OP("fucomip ST(0),ST(7)", 0, 0, 0, OP_FUCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2826 |
|
---|
| 2827 | /* f */
|
---|
[41676] | 2828 | OP("fcomip ST(0),ST(0)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_0,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2829 | OP("fcomip ST(0),ST(1)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_1,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2830 | OP("fcomip ST(0),ST(2)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_2,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2831 | OP("fcomip ST(0),ST(3)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_3,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2832 | OP("fcomip ST(0),ST(4)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_4,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2833 | OP("fcomip ST(0),ST(5)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_5,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2834 | OP("fcomip ST(0),ST(6)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_6,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2835 | OP("fcomip ST(0),ST(7)", 0, 0, 0, OP_FCOMIP, OP_PARM_REGFP_0, OP_PARM_REGFP_7,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2836 | INVALID_OPCODE,
|
---|
| 2837 | INVALID_OPCODE,
|
---|
| 2838 | INVALID_OPCODE,
|
---|
| 2839 | INVALID_OPCODE,
|
---|
| 2840 | INVALID_OPCODE,
|
---|
| 2841 | INVALID_OPCODE,
|
---|
| 2842 | INVALID_OPCODE,
|
---|
| 2843 | INVALID_OPCODE,
|
---|
| 2844 | };
|
---|
| 2845 |
|
---|
| 2846 |
|
---|
[41707] | 2847 | const PCDISOPCODE g_apMapX86_FP_Low[8] =
|
---|
[1] | 2848 | {
|
---|
| 2849 | g_aMapX86_EscF0_Low,
|
---|
| 2850 | g_aMapX86_EscF1_Low,
|
---|
| 2851 | g_aMapX86_EscF2_Low,
|
---|
| 2852 | g_aMapX86_EscF3_Low,
|
---|
| 2853 | g_aMapX86_EscF4_Low,
|
---|
| 2854 | g_aMapX86_EscF5_Low,
|
---|
| 2855 | g_aMapX86_EscF6_Low,
|
---|
| 2856 | g_aMapX86_EscF7_Low
|
---|
| 2857 | };
|
---|
| 2858 |
|
---|
[41707] | 2859 | const PCDISOPCODE g_apMapX86_FP_High[8] =
|
---|
[1] | 2860 | {
|
---|
| 2861 | g_aMapX86_EscF0_High,
|
---|
| 2862 | g_aMapX86_EscF1_High,
|
---|
| 2863 | g_aMapX86_EscF2_High,
|
---|
| 2864 | g_aMapX86_EscF3_High,
|
---|
| 2865 | g_aMapX86_EscF4_High,
|
---|
| 2866 | g_aMapX86_EscF5_High,
|
---|
| 2867 | g_aMapX86_EscF6_High,
|
---|
| 2868 | g_aMapX86_EscF7_High
|
---|
| 2869 | };
|
---|
| 2870 |
|
---|
| 2871 | /* Opcode extensions (Group tables) */
|
---|
[41690] | 2872 | const DISOPCODE g_aMapX86_Group1[8*4] =
|
---|
[1] | 2873 | {
|
---|
| 2874 | /* 80 */
|
---|
[65876] | 2875 | OP("add %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ADD, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2876 | OP("or %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_OR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2877 | OP("adc %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ADC, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2878 | OP("sbb %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SBB, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2879 | OP("and %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_AND, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2880 | OP("sub %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SUB, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2881 | OP("xor %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_XOR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2882 | OP("cmp %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_CMP, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2883 |
|
---|
| 2884 | /* 81 */
|
---|
[41676] | 2885 | OP("add %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_ADD, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2886 | OP("or %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_OR, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2887 | OP("adc %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_ADC, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2888 | OP("sbb %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_SBB, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2889 | OP("and %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_AND, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2890 | OP("sub %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_SUB, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2891 | OP("xor %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_XOR, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2892 | OP("cmp %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_CMP, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2893 |
|
---|
| 2894 | /* 82 */
|
---|
[65876] | 2895 | OP("add %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ADD, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2896 | OP("or %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_OR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2897 | OP("adc %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ADC, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2898 | OP("sbb %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SBB, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2899 | OP("and %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_AND, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2900 | OP("sub %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SUB, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2901 | OP("xor %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_XOR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2902 | OP("cmp %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_CMP, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2903 |
|
---|
| 2904 | /* 83 */
|
---|
[65876] | 2905 | OP("add %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_ADD, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2906 | OP("or %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_OR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2907 | OP("adc %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_ADC, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2908 | OP("sbb %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_SBB, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2909 | OP("and %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_AND, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2910 | OP("sub %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_SUB, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2911 | OP("xor %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_XOR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2912 | OP("cmp %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByteSX, 0, OP_CMP, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2913 | };
|
---|
| 2914 |
|
---|
[41690] | 2915 | const DISOPCODE g_aMapX86_Group2[8*6] =
|
---|
[1] | 2916 | {
|
---|
| 2917 | /* C0 */
|
---|
[65876] | 2918 | OP("rol %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ROL, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2919 | OP("ror %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ROR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2920 | OP("rcl %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_RCL, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2921 | OP("rcr %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_RCR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2922 | OP("shl/sal %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHL, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2923 | OP("shr %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2924 | OP("shl/sal %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHL, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2925 | OP("sar %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SAR, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2926 |
|
---|
| 2927 | /* C1 */
|
---|
[65876] | 2928 | OP("rol %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ROL, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2929 | OP("ror %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_ROR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2930 | OP("rcl %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_RCL, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2931 | OP("rcr %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_RCR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2932 | OP("shl/sal %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHL, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2933 | OP("shr %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2934 | OP("shl/sal %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SHL, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2935 | OP("sar %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_SAR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2936 |
|
---|
| 2937 | /* D0 */
|
---|
[41676] | 2938 | OP("rol %Eb,1", IDX_ParseModRM, 0, 0, OP_ROL, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2939 | OP("ror %Eb,1", IDX_ParseModRM, 0, 0, OP_ROR, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2940 | OP("rcl %Eb,1", IDX_ParseModRM, 0, 0, OP_RCL, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2941 | OP("rcr %Eb,1", IDX_ParseModRM, 0, 0, OP_RCR, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2942 | OP("shl/sal %Eb,1", IDX_ParseModRM, 0, 0, OP_SHL, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2943 | OP("shr %Eb,1", IDX_ParseModRM, 0, 0, OP_SHR, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2944 | OP("shl/sal %Eb,1", IDX_ParseModRM, 0, 0, OP_SHL, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2945 | OP("sar %Eb,1", IDX_ParseModRM, 0, 0, OP_SAR, OP_PARM_Eb, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2946 |
|
---|
| 2947 | /* D1 */
|
---|
[41676] | 2948 | OP("rol %Ev,1", IDX_ParseModRM, 0, 0, OP_ROL, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2949 | OP("ror %Ev,1", IDX_ParseModRM, 0, 0, OP_ROR, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2950 | OP("rcl %Ev,1", IDX_ParseModRM, 0, 0, OP_RCL, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2951 | OP("rcr %Ev,1", IDX_ParseModRM, 0, 0, OP_RCR, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2952 | OP("shl/sal %Ev,1", IDX_ParseModRM, 0, 0, OP_SHL, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2953 | OP("shr %Ev,1", IDX_ParseModRM, 0, 0, OP_SHR, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2954 | OP("shl/sal %Ev,1", IDX_ParseModRM, 0, 0, OP_SHL, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2955 | OP("sar %Ev,1", IDX_ParseModRM, 0, 0, OP_SAR, OP_PARM_Ev, OP_PARM_1 , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2956 |
|
---|
| 2957 | /* D2 */
|
---|
[41676] | 2958 | OP("rol %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_ROL, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2959 | OP("ror %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_ROR, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2960 | OP("rcl %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_RCL, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2961 | OP("rcr %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_RCR, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2962 | OP("shl/sal %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHL, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2963 | OP("shr %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHR, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2964 | OP("shl/sal %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHL, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2965 | OP("sar %Eb,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SAR, OP_PARM_Eb, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2966 |
|
---|
| 2967 | /* D3 */
|
---|
[41676] | 2968 | OP("rol %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_ROL, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2969 | OP("ror %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_ROR, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2970 | OP("rcl %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_RCL, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2971 | OP("rcr %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_RCR, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2972 | OP("shl/sal %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHL, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2973 | OP("shr %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHR, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2974 | OP("shl/sal %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SHL, OP_PARM_Ev, OP_PARM_REG_CL, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2975 | OP("sar %Ev,CL", IDX_ParseModRM, IDX_ParseFixedReg, 0, OP_SAR, OP_PARM_Ev, OP_PARM_REG_CL ,OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2976 |
|
---|
| 2977 | };
|
---|
| 2978 |
|
---|
| 2979 |
|
---|
[41690] | 2980 | const DISOPCODE g_aMapX86_Group3[8*2] =
|
---|
[1] | 2981 | {
|
---|
| 2982 | /* F6 */
|
---|
[65876] | 2983 | OP("test %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_TEST, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2984 | //AMD manual claims test??
|
---|
[41863] | 2985 | INVALID_OPCODE_MOD_RM(0xf601),
|
---|
[41676] | 2986 | OP("not %Eb", IDX_ParseModRM, 0, 0, OP_NOT, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2987 | OP("neg %Eb", IDX_ParseModRM, 0, 0, OP_NEG, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2988 | OP("mul %Eb", IDX_ParseModRM, 0, 0, OP_MUL, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2989 | OP("imul %Eb", IDX_ParseModRM, 0, 0, OP_IMUL, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2990 | OP("div %Eb", IDX_ParseModRM, 0, 0, OP_DIV, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2991 | OP("idiv %Eb", IDX_ParseModRM, 0, 0, OP_IDIV, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2992 |
|
---|
| 2993 | /* F7 */
|
---|
[41676] | 2994 | OP("test %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_TEST, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 2995 | //AMD manual claims test??
|
---|
[41863] | 2996 | INVALID_OPCODE_MOD_RM(0xf701),
|
---|
[41676] | 2997 | OP("not %Ev", IDX_ParseModRM, 0, 0, OP_NOT, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2998 | OP("neg %Ev", IDX_ParseModRM, 0, 0, OP_NEG, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 2999 | OP("mul %Ev", IDX_ParseModRM, 0, 0, OP_MUL, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3000 | OP("imul %Ev", IDX_ParseModRM, 0, 0, OP_IMUL, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3001 | OP("div %Ev", IDX_ParseModRM, 0, 0, OP_DIV, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3002 | OP("idiv %Ev", IDX_ParseModRM, 0, 0, OP_IDIV, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3003 | };
|
---|
| 3004 |
|
---|
[41690] | 3005 | const DISOPCODE g_aMapX86_Group4[8] =
|
---|
[1] | 3006 | {
|
---|
| 3007 | /* FE */
|
---|
[41676] | 3008 | OP("inc %Eb", IDX_ParseModRM, 0, 0, OP_INC, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3009 | OP("dec %Eb", IDX_ParseModRM, 0, 0, OP_DEC, OP_PARM_Eb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3010 | INVALID_OPCODE_MOD_RM(0xfe02),
|
---|
| 3011 | INVALID_OPCODE_MOD_RM(0xfe03),
|
---|
| 3012 | INVALID_OPCODE_MOD_RM(0xfe04),
|
---|
| 3013 | INVALID_OPCODE_MOD_RM(0xfe05),
|
---|
| 3014 | INVALID_OPCODE_MOD_RM(0xfe06),
|
---|
| 3015 | INVALID_OPCODE_MOD_RM(0xfe07),
|
---|
[1] | 3016 | };
|
---|
| 3017 |
|
---|
[41690] | 3018 | const DISOPCODE g_aMapX86_Group5[8] =
|
---|
[1] | 3019 | {
|
---|
| 3020 | /* FF */
|
---|
[41676] | 3021 | OP("inc %Ev", IDX_ParseModRM, 0, 0, OP_INC, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3022 | OP("dec %Ev", IDX_ParseModRM, 0, 0, OP_DEC, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 3023 | OP("call %Ev", IDX_ParseModRM, 0, 0, OP_CALL, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[41676] | 3024 | OP("call %Ep", IDX_ParseModRM, 0, 0, OP_CALL, OP_PARM_Ep, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW),
|
---|
[99220] | 3025 | OP("jmp %Ev", IDX_ParseModRM, 0, 0, OP_JMP, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW | DISOPTYPE_X86_FORCED_64_OP_SIZE),
|
---|
[41676] | 3026 | OP("jmp %Ep", IDX_ParseModRM, 0, 0, OP_JMP, OP_PARM_Ep, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_CONTROLFLOW | DISOPTYPE_UNCOND_CONTROLFLOW),
|
---|
[99220] | 3027 | OP("push %Ev", IDX_ParseModRM, 0, 0, OP_PUSH, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[41863] | 3028 | INVALID_OPCODE_MOD_RM(0xff07),
|
---|
[1] | 3029 | };
|
---|
| 3030 |
|
---|
| 3031 |
|
---|
[41690] | 3032 | const DISOPCODE g_aMapX86_Group6[8] =
|
---|
[1] | 3033 | {
|
---|
| 3034 | /* 0F 00 */
|
---|
[41676] | 3035 | OP("sldt %Ew", IDX_ParseModRM, 0, 0, OP_SLDT, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 3036 | OP("str %Ev", IDX_ParseModRM, 0, 0, OP_STR, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 3037 | OP("lldt %Ew", IDX_ParseModRM, 0, 0, OP_LLDT, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 3038 | OP("ltr %Ew", IDX_ParseModRM, 0, 0, OP_LTR, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 3039 | OP("verr %Ew", IDX_ParseModRM, 0, 0, OP_VERR, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 3040 | OP("verw %Ew", IDX_ParseModRM, 0, 0, OP_VERW, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
[41863] | 3041 | INVALID_OPCODE_MOD_RM(0x0f0006),
|
---|
| 3042 | INVALID_OPCODE_MOD_RM(0x0f0007),
|
---|
[1] | 3043 | };
|
---|
| 3044 |
|
---|
[41796] | 3045 | /* Note!! Group 7 is NOT using the INVALID_OPCODE_MOD_RM because of monitor and vmcall. */
|
---|
[41690] | 3046 | const DISOPCODE g_aMapX86_Group7_mem[8] =
|
---|
[1] | 3047 | {
|
---|
| 3048 | /* 0F 01 */
|
---|
[41676] | 3049 | OP("sgdt %Ms", IDX_ParseModRM, 0, 0, OP_SGDT, OP_PARM_Ms, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 3050 | OP("sidt %Ms", IDX_ParseModRM, 0, 0, OP_SIDT, OP_PARM_Ms, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
| 3051 | OP("lgdt %Ms", IDX_ParseModRM, 0, 0, OP_LGDT, OP_PARM_Ms, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 3052 | OP("lidt %Ms", IDX_ParseModRM, 0, 0, OP_LIDT, OP_PARM_Ms, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 3053 | OP("smsw %Ew", IDX_ParseModRM, 0, 0, OP_SMSW, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP),
|
---|
[1] | 3054 | INVALID_OPCODE,
|
---|
[41676] | 3055 | OP("lmsw %Ew", IDX_ParseModRM, 0, 0, OP_LMSW, OP_PARM_Ew, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
| 3056 | OP("invlpg %Mb", IDX_ParseModRM, 0, 0, OP_INVLPG, OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED),
|
---|
[1] | 3057 | };
|
---|
| 3058 |
|
---|
[103698] | 3059 | const DISOPCODE g_aMapX86_Group7_mod11_reg000[8] =
|
---|
[1] | 3060 | {
|
---|
[103698] | 3061 | OP("enclv", 0, 0, 0, OP_ENCLV, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3062 | OP("vmcall", 0, 0, 0, OP_VMCALL, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3063 | OP("vmlaunch", 0, 0, 0, OP_VMLAUNCH, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3064 | OP("vmresume", 0, 0, 0, OP_VMRESUME, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
[103709] | 3065 | OP("vmxoff", 0, 0, 0, OP_VMXOFF, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
[1] | 3066 | INVALID_OPCODE,
|
---|
| 3067 | INVALID_OPCODE,
|
---|
| 3068 | INVALID_OPCODE,
|
---|
| 3069 | };
|
---|
| 3070 |
|
---|
[103698] | 3071 | const DISOPCODE g_aMapX86_Group7_mod11_reg001[8] =
|
---|
[1] | 3072 | {
|
---|
[103698] | 3073 | OP("monitor %eAX,%eCX,%eDX", IDX_ParseFixedReg, IDX_ParseFixedReg, IDX_ParseFixedReg, OP_MONITOR, OP_PARM_REG_EAX, OP_PARM_REG_ECX, OP_PARM_REG_EDX, DISOPTYPE_HARMLESS ),
|
---|
| 3074 | OP("mwait %eAX,%eCX", IDX_ParseFixedReg, IDX_ParseFixedReg, 0, OP_MWAIT, OP_PARM_REG_EAX, OP_PARM_REG_ECX, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3075 | OP("clac", 0, 0, 0, OP_CLAC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3076 | OP("stac", 0, 0, 0, OP_STAC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3077 | INVALID_OPCODE,
|
---|
| 3078 | INVALID_OPCODE,
|
---|
| 3079 | INVALID_OPCODE,
|
---|
| 3080 | OP("encls", 0, 0, 0, OP_ENCLS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3081 | };
|
---|
| 3082 |
|
---|
| 3083 | const DISOPCODE g_aMapX86_Group7_mod11_reg010[8] =
|
---|
| 3084 | {
|
---|
| 3085 | OP("xgetbv", 0, 0, 0, OP_XGETBV, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ), /* fixed ops: ECX & EDX:EAX like wrmsr we don't details these */
|
---|
[95362] | 3086 | OP("xsetbv", 0, 0, 0, OP_XSETBV, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ), /* fixed ops: ECX & EDX:EAX like wrmsr we don't details these */
|
---|
[1] | 3087 | INVALID_OPCODE,
|
---|
[103698] | 3088 | INVALID_OPCODE,
|
---|
| 3089 | OP("vmfunc", 0, 0, 0, OP_VMFUNC, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3090 | OP("xend", 0, 0, 0, OP_XEND, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3091 | OP("xtest", 0, 0, 0, OP_XTEST, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3092 | OP("enclu", 0, 0, 0, OP_ENCLU, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
[1] | 3093 | };
|
---|
| 3094 |
|
---|
[103698] | 3095 | const DISOPCODE g_aMapX86_Group7_mod11_reg111[8] =
|
---|
| 3096 | {
|
---|
| 3097 | OP("swapgs", 0, 0, 0, OP_SWAPGS, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS ),
|
---|
| 3098 | OP("rdtscp", 0, 0, 0, OP_RDTSCP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_POTENTIALLY_DANGEROUS ),
|
---|
| 3099 | INVALID_OPCODE,
|
---|
| 3100 | INVALID_OPCODE,
|
---|
| 3101 | INVALID_OPCODE,
|
---|
| 3102 | INVALID_OPCODE,
|
---|
| 3103 | INVALID_OPCODE,
|
---|
| 3104 | INVALID_OPCODE,
|
---|
| 3105 | };
|
---|
| 3106 |
|
---|
[41690] | 3107 | const DISOPCODE g_aMapX86_Group8[8] =
|
---|
[1] | 3108 | {
|
---|
| 3109 | /* 0F BA */
|
---|
[41863] | 3110 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3111 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3112 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3113 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[41676] | 3114 | OP("bt %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_BT, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3115 | OP("bts %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_BTS, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3116 | OP("btr %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_BTR, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3117 | OP("btc %Ev,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_BTC, OP_PARM_Ev, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3118 | };
|
---|
| 3119 |
|
---|
[103717] | 3120 | /* 0F C7 mode=mem index by /reg + REX.W*8 - w/o SSE prefix */
|
---|
| 3121 | const DISOPCODE g_aMapX86_Group9_mem_none[8 * 2] =
|
---|
[1] | 3122 | {
|
---|
[103717] | 3123 | /* REX.W = 0 */
|
---|
[103709] | 3124 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
[103717] | 3125 | OP("cmpxchg8b %Mq", IDX_ParseModRM, 0, 0, OP_CMPXCHG8B, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3126 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3127 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3128 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3129 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
[103717] | 3130 | OP("vmptrld %Mq", IDX_ParseModRM, 0, 0, OP_VMPTRLD, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3131 | OP("vmptrst %Mq", IDX_ParseModRM, 0, 0, OP_VMPTRST, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3132 | /* REX.W = 1 */
|
---|
| 3133 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3134 | OP("cmpxchg16b %Mdq", IDX_ParseModRM, 0, 0, OP_CMPXCHG16B, OP_PARM_Mdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3135 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3136 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3137 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3138 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3139 | INVALID_OPCODE_MOD_RM(0x6),
|
---|
| 3140 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
[103709] | 3141 | };
|
---|
| 3142 |
|
---|
| 3143 | /* 0F C7 mode=mem index by /reg - w/ 0x66 SSE prefix */
|
---|
| 3144 | const DISOPCODE g_aMapX86_Group9_mem_66[8] =
|
---|
| 3145 | {
|
---|
| 3146 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3147 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3148 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3149 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3150 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3151 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3152 | OP("vmclear %M", IDX_ParseModRM, 0, 0, OP_VMCLEAR, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3153 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
| 3154 | };
|
---|
| 3155 |
|
---|
| 3156 | /* 0F C7 mode=mem index by /reg - w/ 0xf3 SSE prefix */
|
---|
| 3157 | const DISOPCODE g_aMapX86_Group9_mem_f3[8] =
|
---|
| 3158 | {
|
---|
| 3159 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3160 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3161 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3162 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3163 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3164 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3165 | OP("vmxon %M", IDX_ParseModRM, 0, 0, OP_VMXON, OP_PARM_Mq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3166 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
| 3167 | };
|
---|
| 3168 |
|
---|
| 3169 | /* 0F C7 mode=reg index by /reg - w/o SSE prefix */
|
---|
| 3170 | const DISOPCODE g_aMapX86_Group9_mod11_none[8] =
|
---|
| 3171 | {
|
---|
| 3172 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3173 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3174 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3175 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3176 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3177 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
[97044] | 3178 | OP("rdrand %Ev", IDX_ParseModRM, 0, 0, OP_RDRAND, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3179 | OP("rdseed %Ev", IDX_ParseModRM, 0, 0, OP_RDSEED, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3180 | };
|
---|
| 3181 |
|
---|
[103709] | 3182 | /* 0F C7 mode=reg index by /reg - w/ 0xf3 SSE prefix */
|
---|
| 3183 | const DISOPCODE g_aMapX86_Group9_mod11_f3[8] =
|
---|
| 3184 | {
|
---|
| 3185 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3186 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3187 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3188 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3189 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3190 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3191 | INVALID_OPCODE_MOD_RM(0x6),
|
---|
| 3192 | OP("rdpid %Ev", IDX_ParseModRM, 0, 0, OP_RDPID, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3193 | };
|
---|
| 3194 |
|
---|
| 3195 | /* 0F B9 - UD1 */
|
---|
[41690] | 3196 | const DISOPCODE g_aMapX86_Group10[8] =
|
---|
[1] | 3197 | {
|
---|
[41863] | 3198 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3199 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3200 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3201 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3202 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3203 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3204 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3205 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[1] | 3206 | };
|
---|
| 3207 |
|
---|
| 3208 |
|
---|
[41690] | 3209 | const DISOPCODE g_aMapX86_Group11[8*2] =
|
---|
[1] | 3210 | {
|
---|
| 3211 | /* 0F C6 */
|
---|
[41676] | 3212 | OP("mov %Eb,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_MOV, OP_PARM_Eb, OP_PARM_Ib , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3213 | INVALID_OPCODE,
|
---|
| 3214 | INVALID_OPCODE,
|
---|
| 3215 | INVALID_OPCODE,
|
---|
| 3216 | INVALID_OPCODE,
|
---|
| 3217 | INVALID_OPCODE,
|
---|
| 3218 | INVALID_OPCODE,
|
---|
| 3219 | INVALID_OPCODE,
|
---|
| 3220 | /* 0F C7 */
|
---|
[41676] | 3221 | OP("mov %Ev,%Iz", IDX_ParseModRM, IDX_ParseImmZ, 0, OP_MOV, OP_PARM_Ev, OP_PARM_Iz , OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3222 | INVALID_OPCODE,
|
---|
| 3223 | INVALID_OPCODE,
|
---|
| 3224 | INVALID_OPCODE,
|
---|
| 3225 | INVALID_OPCODE,
|
---|
| 3226 | INVALID_OPCODE,
|
---|
| 3227 | INVALID_OPCODE,
|
---|
| 3228 | INVALID_OPCODE,
|
---|
| 3229 | };
|
---|
| 3230 |
|
---|
| 3231 |
|
---|
| 3232 | /* 0xF 0x71 */
|
---|
[41690] | 3233 | const DISOPCODE g_aMapX86_Group12[8*2] =
|
---|
[1] | 3234 | {
|
---|
[103709] | 3235 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3236 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
[65876] | 3237 | OP("psrlw %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLW, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3238 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
[65876] | 3239 | OP("psraw %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRAW, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3240 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
[65876] | 3241 | OP("psllw %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLW, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3242 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
[1] | 3243 |
|
---|
| 3244 | /* Group 12 with prefix 0x66 */
|
---|
[103709] | 3245 | INVALID_OPCODE_MOD_RM(0x8),
|
---|
| 3246 | INVALID_OPCODE_MOD_RM(0x9),
|
---|
[65876] | 3247 | OP("psrlw %Pdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLW, OP_PARM_Pdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3248 | INVALID_OPCODE_MOD_RM(0xb),
|
---|
[65876] | 3249 | OP("psraw %Pdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRAW, OP_PARM_Pdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3250 | INVALID_OPCODE_MOD_RM(0xd),
|
---|
[65876] | 3251 | OP("psllw %Pdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLW, OP_PARM_Pdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3252 | INVALID_OPCODE_MOD_RM(0xf),
|
---|
[1] | 3253 | };
|
---|
| 3254 |
|
---|
[103709] | 3255 | /* vex map1 0x72 w/ prefix 0x66 (VEX.pp=1) */
|
---|
| 3256 | const DISOPCODE g_aMapX86_VGroup12[8] =
|
---|
| 3257 | {
|
---|
| 3258 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3259 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3260 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3261 | OPVEX("vpsrlw %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRLW, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3262 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3263 | OPVEX("vpsraw %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRAW, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3264 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3265 | OPVEX("vpsllw %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSLLW, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3266 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
| 3267 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3268 | };
|
---|
| 3269 |
|
---|
[1] | 3270 | /* 0xF 0x72 */
|
---|
[41690] | 3271 | const DISOPCODE g_aMapX86_Group13[8*2] =
|
---|
[1] | 3272 | {
|
---|
[41863] | 3273 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3274 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3275 | OP("psrld %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLD, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3276 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3277 | OP("psrad %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRAD, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3278 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3279 | OP("pslld %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLD, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3280 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[1] | 3281 |
|
---|
| 3282 | /* Group 13 with prefix 0x66 */
|
---|
[41863] | 3283 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3284 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3285 | OP("psrld %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLD, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3286 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3287 | OP("psrad %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRAD, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3288 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3289 | OP("pslld %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLD, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3290 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[1] | 3291 | };
|
---|
| 3292 |
|
---|
[103709] | 3293 | /* vex map1 0x72 w/ prefix 0x66 (VEX.pp=1) */
|
---|
| 3294 | const DISOPCODE g_aMapX86_VGroup13[8] =
|
---|
[103511] | 3295 | {
|
---|
| 3296 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[103709] | 3297 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3298 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
[103511] | 3299 | OPVEX("vpsrld %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRLD, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3300 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
[103511] | 3301 | OPVEX("vpsrad %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRAD, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3302 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
[103511] | 3303 | OPVEX("vpslld %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSLLD, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3304 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
[103511] | 3305 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3306 | };
|
---|
| 3307 |
|
---|
[1] | 3308 | /* 0xF 0x73 */
|
---|
[41690] | 3309 | const DISOPCODE g_aMapX86_Group14[8*2] =
|
---|
[1] | 3310 | {
|
---|
[41863] | 3311 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3312 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3313 | OP("psrlq %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLQ, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3314 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3315 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3316 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3317 | OP("psllq %Pq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLQ, OP_PARM_Pq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3318 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[1] | 3319 |
|
---|
| 3320 | /* Group 14 with prefix 0x66 */
|
---|
[41863] | 3321 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3322 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3323 | OP("psrlq %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLD, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3324 | OP("psrldq %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSRLDQ, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3325 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3326 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[65876] | 3327 | OP("psllq %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLD, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3328 | OP("pslldq %Wdq,%Ib", IDX_ParseModRM, IDX_ParseImmByte, 0, OP_PSLLDQ, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3329 | };
|
---|
| 3330 |
|
---|
[103709] | 3331 | /* vex map1 0x73 w/ prefix 0x66 (VEX.pp=1) */
|
---|
| 3332 | const DISOPCODE g_aMapX86_VGroup14[8] =
|
---|
| 3333 | {
|
---|
| 3334 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3335 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3336 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3337 | OPVEX("vpsrlq %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRLQ, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3338 | OPVEX("vpsrldq %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSRLDQ, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3339 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3340 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3341 | OPVEX("vpsllq %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSLLQ, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3342 | OPVEX("vpslldq %Hx,%Ux,%Ib", IDX_ParseVexDest, IDX_ParseModRM, IDX_ParseImmByte, 0, OP_VPSLLDQ, OP_PARM_Hx, OP_PARM_Ux, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3343 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3344 | };
|
---|
[1] | 3345 |
|
---|
[103709] | 3346 |
|
---|
| 3347 | /* 0xF 0xAE in memory mode */
|
---|
[41690] | 3348 | const DISOPCODE g_aMapX86_Group15_mem[8] =
|
---|
[1] | 3349 | {
|
---|
[41676] | 3350 | OP("fxsave %M", IDX_ParseModRM, 0, 0, OP_FXSAVE, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3351 | OP("fxrstor %M", IDX_ParseModRM, 0, 0, OP_FXRSTOR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3352 | OP("ldmxcsr %M", IDX_ParseModRM, 0, 0, OP_LDMXCSR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3353 | OP("stmxcsr %M", IDX_ParseModRM, 0, 0, OP_STMXCSR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[68191] | 3354 | OP("xsave %M", IDX_ParseModRM, 0, 0, OP_XSAVE, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3355 | OP("xrstor %M", IDX_ParseModRM, 0, 0, OP_XRSTOR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3356 | OP("xsaveopt %M", IDX_ParseModRM, 0, 0, OP_XSAVEOPT, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41676] | 3357 | OP("clflush %Mb", IDX_ParseModRM, 0, 0, OP_CLFLUSH, OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3358 | };
|
---|
| 3359 |
|
---|
[103709] | 3360 | /* 0xF 0xAE in register mode. f3 used in indexing. */
|
---|
| 3361 | const DISOPCODE g_aMapX86_Group15_mod11[8*2] =
|
---|
[1] | 3362 | {
|
---|
[103709] | 3363 | /* No prefix: */
|
---|
| 3364 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3365 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3366 | INVALID_OPCODE_MOD_RM(0x2),
|
---|
| 3367 | INVALID_OPCODE_MOD_RM(0x3),
|
---|
| 3368 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
[41676] | 3369 | OP("lfence", IDX_ParseModFence, 0, 0, OP_LFENCE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3370 | OP("mfence", IDX_ParseModFence, 0, 0, OP_MFENCE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3371 | OP("sfence", IDX_ParseModFence, 0, 0, OP_SFENCE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3372 | /* 0xf3 prefix: */
|
---|
| 3373 | OP("rdfsbase %Ev", IDX_ParseModRM, 0, 0, OP_RDFSBASE, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3374 | OP("rdgsbase %Ev", IDX_ParseModRM, 0, 0, OP_RDGSBASE, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3375 | OP("wrfsbase %Ev", IDX_ParseModRM, 0, 0, OP_WRFSBASE, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3376 | OP("wrgsbase %Ev", IDX_ParseModRM, 0, 0, OP_WRGSBASE, OP_PARM_Ev, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3377 | INVALID_OPCODE_MOD_RM(0xc),
|
---|
| 3378 | INVALID_OPCODE_MOD_RM(0xd),
|
---|
| 3379 | INVALID_OPCODE_MOD_RM(0xe),
|
---|
| 3380 | INVALID_OPCODE_MOD_RM(0xf),
|
---|
[1] | 3381 | };
|
---|
| 3382 |
|
---|
[103709] | 3383 | /* vex map1 0xae w/o prefix (VEX.pp=0) */
|
---|
| 3384 | const DISOPCODE g_aMapX86_VGroup15[8] =
|
---|
| 3385 | {
|
---|
| 3386 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3387 | INVALID_OPCODE_MOD_RM(0x0),
|
---|
| 3388 | INVALID_OPCODE_MOD_RM(0x1),
|
---|
| 3389 | OPVEX("vldmxcsr %M", IDX_ParseModRM, 0, 0, 0, OP_VLDMXCSR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3390 | OPVEX("vstmxcsr %M", IDX_ParseModRM, 0, 0, 0, OP_VSTMXCSR, OP_PARM_M, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3391 | INVALID_OPCODE_MOD_RM(0x4),
|
---|
| 3392 | INVALID_OPCODE_MOD_RM(0x5),
|
---|
| 3393 | INVALID_OPCODE_MOD_RM(0x6),
|
---|
| 3394 | INVALID_OPCODE_MOD_RM(0x7),
|
---|
| 3395 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3396 | };
|
---|
| 3397 |
|
---|
| 3398 |
|
---|
| 3399 |
|
---|
[1] | 3400 | /* 0xF 0x18 */
|
---|
[41690] | 3401 | const DISOPCODE g_aMapX86_Group16[8] =
|
---|
[1] | 3402 | {
|
---|
[41676] | 3403 | OP("prefetchnta %Mb", IDX_ParseModRM, 0, 0, OP_PREFETCH,OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3404 | OP("prefetcht0 %Mb", IDX_ParseModRM, 0, 0, OP_PREFETCH,OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3405 | OP("prefetcht1 %Mb", IDX_ParseModRM, 0, 0, OP_PREFETCH,OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3406 | OP("prefetcht2 %Mb", IDX_ParseModRM, 0, 0, OP_PREFETCH,OP_PARM_Mb, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[41863] | 3407 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3408 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3409 | INVALID_OPCODE_MOD_RM(0x),
|
---|
| 3410 | INVALID_OPCODE_MOD_RM(0x),
|
---|
[1] | 3411 | };
|
---|
| 3412 |
|
---|
| 3413 | /* 0x90 or 0xF3 0x90 */
|
---|
[41690] | 3414 | const DISOPCODE g_aMapX86_NopPause[2] =
|
---|
[1] | 3415 | {
|
---|
[41676] | 3416 | OP("nop", 0, 0, 0, OP_NOP, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3417 | OP("pause", 0, 0, 0, OP_PAUSE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[1] | 3418 | };
|
---|
| 3419 |
|
---|
[95544] | 3420 |
|
---|
| 3421 |
|
---|
| 3422 | /* VEX Map 1 - two bytes opcodes starting with 0Fh */
|
---|
[95167] | 3423 | const DISOPCODE g_aDisasVexMap1[] =
|
---|
[53094] | 3424 | {
|
---|
[95544] | 3425 | /* 1 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3426 | OPVEX("vmovups %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVUPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3427 | OPVEX("vmovups %Wps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVUPS, OP_PARM_Wps, OP_PARM_Vps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3428 | OPVEX("&vmovlps/vmovhlps %Vq,%Hq,%Wq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVLPS, OP_PARM_Vq, OP_PARM_Hq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3429 | OPVEX("vmovlps %Mq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVLPS, OP_PARM_Mq, OP_PARM_Vq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3430 | OPVEX("vunpcklps %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VUNPCKLPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3431 | OPVEX("vunpckhps %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VUNPCKHPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3432 | OPVEX("&vmovhps/vmovlhps %Vdq,%Hq,%Wq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVHPS, OP_PARM_Vdq, OP_PARM_Hq, OP_PARM_Wq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3433 | OPVEX("vmovhps %Mq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVHPS, OP_PARM_Mq, OP_PARM_Vq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3434 | INVALID_OPCODE,
|
---|
| 3435 | INVALID_OPCODE,
|
---|
| 3436 | INVALID_OPCODE,
|
---|
| 3437 | INVALID_OPCODE,
|
---|
| 3438 | INVALID_OPCODE,
|
---|
| 3439 | INVALID_OPCODE,
|
---|
| 3440 | INVALID_OPCODE,
|
---|
| 3441 | INVALID_OPCODE,
|
---|
| 3442 |
|
---|
| 3443 | /* 2 */
|
---|
| 3444 | INVALID_OPCODE,
|
---|
| 3445 | INVALID_OPCODE,
|
---|
| 3446 | INVALID_OPCODE,
|
---|
| 3447 | INVALID_OPCODE,
|
---|
| 3448 | INVALID_OPCODE,
|
---|
| 3449 | INVALID_OPCODE,
|
---|
| 3450 | INVALID_OPCODE,
|
---|
| 3451 | INVALID_OPCODE,
|
---|
[95544] | 3452 | OPVEX("vmovaps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVAPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3453 | OPVEX("vmovaps %Wps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVAPS, OP_PARM_Wps, OP_PARM_Vps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3454 | INVALID_OPCODE,
|
---|
[95544] | 3455 | OPVEX("vmovntps %Mps,%Vps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVNTPS, OP_PARM_Mps, OP_PARM_Vps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3456 | INVALID_OPCODE,
|
---|
| 3457 | INVALID_OPCODE,
|
---|
[95544] | 3458 | OPVEX("vucomiss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VUCOMISS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3459 | OPVEX("vcomiss %Vss,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCOMISS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3460 |
|
---|
| 3461 | /* 3 */
|
---|
| 3462 | INVALID_OPCODE_BLOCK
|
---|
| 3463 |
|
---|
| 3464 | /* 4 */
|
---|
| 3465 | INVALID_OPCODE_BLOCK
|
---|
| 3466 |
|
---|
| 3467 | /* 5 */
|
---|
[95544] | 3468 | OPVEX("vmovmskps %Gy,%Ups", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVMSKPS, OP_PARM_Gy, OP_PARM_Ups, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3469 | OPVEX("vsqrtps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VSQRTPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3470 | OPVEX("vrsqrtps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VRSQRTPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3471 | OPVEX("vrcpps %Vps,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VRCPPS, OP_PARM_Vps, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3472 | OPVEX("vandps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VANDPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3473 | OPVEX("vandnps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VANDNPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3474 | OPVEX("vorps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VORPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3475 | OPVEX("vxorps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VXORPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3476 | OPVEX("vaddps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3477 | OPVEX("vmulps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMULPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3478 | OPVEX("vcvtps2pd %Vpd,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTPS2PD, OP_PARM_Vpd, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3479 | OPVEX("vcvtdq2ps %Vps,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTDQ2PS, OP_PARM_Vps, OP_PARM_Wdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3480 | OPVEX("vsubps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSUBPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3481 | OPVEX("vminps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMINPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3482 | OPVEX("vdivps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VDIVPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3483 | OPVEX("vmaxps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMAXPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3484 |
|
---|
[95544] | 3485 | /* 6 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3486 | INVALID_OPCODE_BLOCK
|
---|
| 3487 |
|
---|
| 3488 | /* 7 */
|
---|
| 3489 | INVALID_OPCODE,
|
---|
| 3490 | INVALID_OPCODE,
|
---|
| 3491 | INVALID_OPCODE,
|
---|
| 3492 | INVALID_OPCODE,
|
---|
| 3493 | INVALID_OPCODE,
|
---|
| 3494 | INVALID_OPCODE,
|
---|
| 3495 | INVALID_OPCODE,
|
---|
[53245] | 3496 | /* Next instruction has the following format:
|
---|
| 3497 | * @name1/name2,
|
---|
| 3498 | * where name2 is used when VEX.L bit is set,
|
---|
| 3499 | * name1 otherwise. */
|
---|
[95544] | 3500 | OPVEX("@vzeroupper/vzeroall", 0, 0, 0, 0, OP_VZEROALL, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3501 | INVALID_OPCODE,
|
---|
| 3502 | INVALID_OPCODE,
|
---|
| 3503 | INVALID_OPCODE,
|
---|
| 3504 | INVALID_OPCODE,
|
---|
| 3505 | INVALID_OPCODE,
|
---|
| 3506 | INVALID_OPCODE,
|
---|
| 3507 | INVALID_OPCODE,
|
---|
| 3508 | INVALID_OPCODE,
|
---|
| 3509 |
|
---|
| 3510 | /* 8 */
|
---|
| 3511 | INVALID_OPCODE_BLOCK
|
---|
| 3512 |
|
---|
| 3513 | /* 9 */
|
---|
| 3514 | INVALID_OPCODE_BLOCK
|
---|
| 3515 |
|
---|
| 3516 | /* a */
|
---|
| 3517 | INVALID_OPCODE_BLOCK
|
---|
| 3518 |
|
---|
| 3519 | /* b */
|
---|
| 3520 | INVALID_OPCODE_BLOCK
|
---|
| 3521 |
|
---|
| 3522 | /* c */
|
---|
| 3523 | INVALID_OPCODE,
|
---|
| 3524 | INVALID_OPCODE,
|
---|
[95544] | 3525 | OPVEX("vcmpss %Vps,%Hps,%Wps,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VCMPSS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3526 | INVALID_OPCODE,
|
---|
| 3527 | INVALID_OPCODE,
|
---|
| 3528 | INVALID_OPCODE,
|
---|
[95544] | 3529 | OPVEX("vshufps %Vps,%Hps,%Wps,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VSHUFPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 3530 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3531 | };
|
---|
[95167] | 3532 | const DISOPMAPDESC g_DisasVexMap1Range = { &g_aDisasVexMap1[0], 0x10, RT_ELEMENTS(g_aDisasVexMap1) };
|
---|
[53094] | 3533 |
|
---|
| 3534 | /* Vex codes for two bytes opcodes starting with 0Fh with prefix 66H*/
|
---|
[95167] | 3535 | static const DISOPCODE g_aDisasVexMap1_66[] =
|
---|
[53094] | 3536 | {
|
---|
[95544] | 3537 | /* 1 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3538 | OPVEX("vmovupd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVUPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3539 | OPVEX("vmovupd %Wpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVUPD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3540 | OPVEX("vmovlpd %Vq,%Hq,%Mq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVLPD, OP_PARM_Vq, OP_PARM_Hq, OP_PARM_Mq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3541 | OPVEX("vmovlpd %Mq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVLPD, OP_PARM_Mq, OP_PARM_Vq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3542 | OPVEX("vunpcklpd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VUNPCKLPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3543 | OPVEX("vunpckhpd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VUNPCKHPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3544 | OPVEX("vmovhpd %Vdq,%Hq,%Mq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVHPD, OP_PARM_Vdq, OP_PARM_Hq, OP_PARM_Mq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3545 | OPVEX("vmovhpd %Mq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVHPD, OP_PARM_Mq, OP_PARM_Vq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3546 | INVALID_OPCODE,
|
---|
| 3547 | INVALID_OPCODE,
|
---|
| 3548 | INVALID_OPCODE,
|
---|
| 3549 | INVALID_OPCODE,
|
---|
| 3550 | INVALID_OPCODE,
|
---|
| 3551 | INVALID_OPCODE,
|
---|
| 3552 | INVALID_OPCODE,
|
---|
| 3553 | INVALID_OPCODE,
|
---|
| 3554 |
|
---|
| 3555 | /* 2 */
|
---|
| 3556 | INVALID_OPCODE,
|
---|
| 3557 | INVALID_OPCODE,
|
---|
| 3558 | INVALID_OPCODE,
|
---|
| 3559 | INVALID_OPCODE,
|
---|
| 3560 | INVALID_OPCODE,
|
---|
| 3561 | INVALID_OPCODE,
|
---|
| 3562 | INVALID_OPCODE,
|
---|
| 3563 | INVALID_OPCODE,
|
---|
[95544] | 3564 | OPVEX("vmovapd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVAPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3565 | OPVEX("vmovapd %Wpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVAPD, OP_PARM_Wpd, OP_PARM_Vpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3566 | INVALID_OPCODE,
|
---|
[95544] | 3567 | OPVEX("vmovntpd %Mpd,%Vpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVNTPD, OP_PARM_Mpd, OP_PARM_Vpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3568 | INVALID_OPCODE,
|
---|
| 3569 | INVALID_OPCODE,
|
---|
[95544] | 3570 | OPVEX("vucomisd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VUCOMISD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3571 | OPVEX("vcomisd %Vsd,%Wsd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCOMISD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3572 |
|
---|
| 3573 | /* 3 */
|
---|
| 3574 | INVALID_OPCODE_BLOCK
|
---|
| 3575 |
|
---|
| 3576 | /* 4 */
|
---|
| 3577 | INVALID_OPCODE_BLOCK
|
---|
| 3578 |
|
---|
| 3579 | /* 5 */
|
---|
[95544] | 3580 | OPVEX("vmovmskpd %Gy,%Upd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVMSKPD, OP_PARM_Gy, OP_PARM_Upd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3581 | OPVEX("vsqrtpd %Vpd,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VSQRTPD, OP_PARM_Vpd, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3582 | INVALID_OPCODE,
|
---|
| 3583 | INVALID_OPCODE,
|
---|
[95544] | 3584 | OPVEX("vandpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VANDPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3585 | OPVEX("vandnpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VANDNPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3586 | OPVEX("vorpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VORPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3587 | OPVEX("vxorpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VXORPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3588 | OPVEX("vaddpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3589 | OPVEX("vmulpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMULPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3590 | OPVEX("vcvtpd2ps %Vps,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTPD2PS, OP_PARM_Vps, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3591 | OPVEX("vcvtps2dq %Vdq,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTPS2DQ, OP_PARM_Vdq, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3592 | OPVEX("vsubpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSUBPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3593 | OPVEX("vminpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMINPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3594 | OPVEX("vdivpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VDIVPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3595 | OPVEX("vmaxpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMAXPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3596 |
|
---|
| 3597 |
|
---|
| 3598 | /* 6 */
|
---|
[95544] | 3599 | OPVEX("vpunpcklbw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKLBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3600 | OPVEX("vpunpcklwd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKLWD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3601 | OPVEX("vpunpckldq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKLDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3602 | OPVEX("vpacksswb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPACKSSWB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3603 | OPVEX("vpcmpgtb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPGTB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3604 | OPVEX("vpcmpgtw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPGTW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3605 | OPVEX("vpcmpgtd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPGTD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3606 | OPVEX("vpackuswb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPACKUSWB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3607 | OPVEX("vpunpckhbw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKHBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3608 | OPVEX("vpunpckhwd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKHWD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3609 | OPVEX("vpunpckhdq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKHDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3610 | OPVEX("vpackssdw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPACKSSDW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3611 | OPVEX("vpunpcklqdq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKLQDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3612 | OPVEX("vpunpckhqdq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPUNPCKHQDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3613 | OPVEX("#vmovd/vmovq %Vy,%Ey", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVD, OP_PARM_Vy, OP_PARM_Ey, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3614 | OPVEX("vmovdqa %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVDQA, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3615 |
|
---|
| 3616 | /* 7 */
|
---|
[95544] | 3617 | OPVEX("vpshufd %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPSHUFD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 3618 | OP("vgroup12", IDX_ParseVGrp12, 0, 0, OP_GRP12, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3619 | OP("vgroup13", IDX_ParseVGrp13, 0, 0, OP_GRP13, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3620 | OP("vgroup14", IDX_ParseVGrp14, 0, 0, OP_GRP14, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95544] | 3621 | OPVEX("vpcmpeqb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPEQB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3622 | OPVEX("vpcmpeqw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPEQW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3623 | OPVEX("vpcmpeqd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPEQD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3624 | INVALID_OPCODE,
|
---|
| 3625 | INVALID_OPCODE,
|
---|
| 3626 | INVALID_OPCODE,
|
---|
| 3627 | INVALID_OPCODE,
|
---|
| 3628 | INVALID_OPCODE,
|
---|
[95544] | 3629 | OPVEX("vhaddpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VHADDPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3630 | OPVEX("vhsubpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VHSUBPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3631 | OPVEX("vmovd/vmovq %Ey,%Vy", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVD, OP_PARM_Ey, OP_PARM_Vy, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3632 | OPVEX("vmovdqa %Wx,%Vx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVDQA, OP_PARM_Wx, OP_PARM_Vx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3633 |
|
---|
[95544] | 3634 | /* 8 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3635 | INVALID_OPCODE_BLOCK
|
---|
| 3636 |
|
---|
| 3637 | /* 9 */
|
---|
| 3638 | INVALID_OPCODE_BLOCK
|
---|
| 3639 |
|
---|
| 3640 | /* a */
|
---|
[103709] | 3641 | INVALID_OPCODE,
|
---|
| 3642 | INVALID_OPCODE,
|
---|
| 3643 | INVALID_OPCODE,
|
---|
| 3644 | INVALID_OPCODE,
|
---|
| 3645 | INVALID_OPCODE,
|
---|
| 3646 | INVALID_OPCODE,
|
---|
| 3647 | INVALID_OPCODE,
|
---|
| 3648 | INVALID_OPCODE,
|
---|
| 3649 | INVALID_OPCODE,
|
---|
| 3650 | INVALID_OPCODE,
|
---|
| 3651 | INVALID_OPCODE,
|
---|
| 3652 | INVALID_OPCODE,
|
---|
| 3653 | INVALID_OPCODE,
|
---|
[104111] | 3654 | INVALID_OPCODE,
|
---|
[103709] | 3655 | OP("vgroup15", IDX_ParseVGrp15, 0, 0, OP_GRP15, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3656 | INVALID_OPCODE,
|
---|
[53094] | 3657 |
|
---|
| 3658 | /* b */
|
---|
| 3659 | INVALID_OPCODE_BLOCK
|
---|
| 3660 |
|
---|
[95544] | 3661 | /* c format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3662 | INVALID_OPCODE,
|
---|
| 3663 | INVALID_OPCODE,
|
---|
[95544] | 3664 | OPVEX("vcmpps %Vpd,%Hpd,%Wpd,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VCMPSS, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3665 | INVALID_OPCODE,
|
---|
| 3666 | // vpinsrw Vdq,Hdq,Ry/Mw,Ib
|
---|
[95544] | 3667 | OPVEX("vpinsrw %Vdq,%Hdq,%Ey,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPINSRW, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Ey, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 3668 | OPVEX("vpextrw %Gd,%Udq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPEXTRW, OP_PARM_Gd, OP_PARM_Udq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3669 | OPVEX("vshufpd %Vpd,%Hpd,%Wpd,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VSHUFPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3670 | INVALID_OPCODE,
|
---|
| 3671 | INVALID_OPCODE,
|
---|
| 3672 | INVALID_OPCODE,
|
---|
| 3673 | INVALID_OPCODE,
|
---|
| 3674 | INVALID_OPCODE,
|
---|
| 3675 | INVALID_OPCODE,
|
---|
| 3676 | INVALID_OPCODE,
|
---|
| 3677 | INVALID_OPCODE,
|
---|
| 3678 | INVALID_OPCODE,
|
---|
| 3679 |
|
---|
| 3680 | /* d */
|
---|
[95544] | 3681 | OPVEX("vaddsubpd %Vpd,%Hpd,%Wpd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDSUBPD, OP_PARM_Vpd, OP_PARM_Hpd, OP_PARM_Wpd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3682 | OPVEX("vpsrlw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRLW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3683 | OPVEX("vpsrld %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRLD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3684 | OPVEX("vpsrlq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRLQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3685 | OPVEX("vpaddq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3686 | OPVEX("vpmullw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULLW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3687 | OPVEX("vmovq %Wq,%Vq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVQ, OP_PARM_Wq, OP_PARM_Vq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[99220] | 3688 | OPVEX("vpmovmskb %Gd,%Ux", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVMSKB, OP_PARM_Gd, OP_PARM_Ux, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE),
|
---|
[95544] | 3689 | OPVEX("vpsubusb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBUSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3690 | OPVEX("vpsubusw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBUSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3691 | OPVEX("vpminub %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINUB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3692 | OPVEX("vpand %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPAND, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3693 | OPVEX("vpaddusb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDUSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3694 | OPVEX("vpaddusw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDUSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3695 | OPVEX("vpmaxub %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXUB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3696 | OPVEX("vpandn %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPANDN, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3697 |
|
---|
| 3698 | /* e */
|
---|
[95544] | 3699 | OPVEX("vpavgb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPAVGB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3700 | OPVEX("vpsraw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRAW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3701 | OPVEX("vpsrad %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRAD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3702 | OPVEX("vpavgw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPAVGW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3703 | OPVEX("vpmulhuw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULHUW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3704 | OPVEX("vpmulhw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULHW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3705 | OPVEX("vcvttpd2dq %Vx,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTTPD2DQ, OP_PARM_Vx, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3706 | OPVEX("vmovntdq %Mx,%Vx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVNTDQ, OP_PARM_Mx, OP_PARM_Vx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3707 | OPVEX("vpsubsb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3708 | OPVEX("vpsubsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3709 | OPVEX("vpminsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3710 | OPVEX("vpor %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPOR, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3711 | OPVEX("vpaddsb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3712 | OPVEX("vpaddsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3713 | OPVEX("vpmaxsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3714 | OPVEX("vpxor %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPXOR, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3715 |
|
---|
| 3716 | /* f */
|
---|
| 3717 | INVALID_OPCODE,
|
---|
[95544] | 3718 | OPVEX("vpsllw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSLLW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3719 | OPVEX("vpslld %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSLLD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3720 | OPVEX("vpsllq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSLLQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3721 | OPVEX("vpmuludq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULUDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3722 | OPVEX("vpmaddwd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMADDWD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3723 | OPVEX("vpsadbw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSADBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3724 | OPVEX("vmaskmovdqu %Vdq,%Udq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMASKMOVDQU, OP_PARM_Vdq, OP_PARM_Udq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3725 | OPVEX("vpsubb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3726 | OPVEX("vpsubw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3727 | OPVEX("vpsubd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3728 | OPVEX("vpsubq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSUBQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3729 | OPVEX("vpaddb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3730 | OPVEX("vpaddw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3731 | OPVEX("vpaddd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPADDD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[104111] | 3732 | /*INVALID_OPCODE,*/
|
---|
[95544] | 3733 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3734 | };
|
---|
[104111] | 3735 | AssertCompile(RT_ELEMENTS(g_aDisasVexMap1_66) == 256-16-1);
|
---|
[95167] | 3736 | const DISOPMAPDESC g_DisasVexMap1_66Range = { &g_aDisasVexMap1_66[0], 0x10, RT_ELEMENTS(g_aDisasVexMap1_66) };
|
---|
[53094] | 3737 |
|
---|
[95167] | 3738 | static const DISOPCODE g_aDisasVexMap1F2[] =
|
---|
[53094] | 3739 | {
|
---|
[95544] | 3740 | /* 1 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3741 | OPVEX("vmovsd %Vx,%Hx,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVSD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3742 | OPVEX("vmovsd %Wsd,%Hx,%Vsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVSD, OP_PARM_Wsd, OP_PARM_Hx, OP_PARM_Vsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3743 | OPVEX("vmovddup %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVDDUP, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3744 | INVALID_OPCODE,
|
---|
| 3745 | INVALID_OPCODE,
|
---|
| 3746 | INVALID_OPCODE,
|
---|
| 3747 | INVALID_OPCODE,
|
---|
| 3748 | INVALID_OPCODE,
|
---|
| 3749 | INVALID_OPCODE,
|
---|
| 3750 | INVALID_OPCODE,
|
---|
| 3751 | INVALID_OPCODE,
|
---|
| 3752 | INVALID_OPCODE,
|
---|
| 3753 | INVALID_OPCODE,
|
---|
| 3754 | INVALID_OPCODE,
|
---|
| 3755 | INVALID_OPCODE,
|
---|
| 3756 | INVALID_OPCODE,
|
---|
| 3757 |
|
---|
| 3758 | /* 2 */
|
---|
| 3759 | INVALID_OPCODE_BLOCK
|
---|
| 3760 |
|
---|
| 3761 | /* 3 */
|
---|
| 3762 | INVALID_OPCODE_BLOCK
|
---|
| 3763 |
|
---|
| 3764 | /* 4 */
|
---|
| 3765 | INVALID_OPCODE_BLOCK
|
---|
| 3766 |
|
---|
| 3767 | /* 5 */
|
---|
| 3768 | INVALID_OPCODE,
|
---|
[95544] | 3769 | OPVEX("vsqrtsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSQRTSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3770 | INVALID_OPCODE,
|
---|
| 3771 | INVALID_OPCODE,
|
---|
| 3772 | INVALID_OPCODE,
|
---|
| 3773 | INVALID_OPCODE,
|
---|
| 3774 | INVALID_OPCODE,
|
---|
| 3775 | INVALID_OPCODE,
|
---|
[95544] | 3776 | OPVEX("vaddsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3777 | OPVEX("vmulsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMULSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3778 | OPVEX("vcvtsd2ss %Vss,%Hx,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VCVTSD2SS, OP_PARM_Vss, OP_PARM_Hx, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3779 | INVALID_OPCODE,
|
---|
[95544] | 3780 | OPVEX("vsubsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSUBSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3781 | OPVEX("vminsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMINSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3782 | OPVEX("vdivsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VDIVSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3783 | OPVEX("vmaxsd %Vsd,%Hsd,%Wsd", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMAXSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3784 |
|
---|
| 3785 | /* 6 */
|
---|
| 3786 | INVALID_OPCODE_BLOCK
|
---|
| 3787 |
|
---|
| 3788 | /* 7 */
|
---|
[95544] | 3789 | OPVEX("vpshuflw %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPSHUFLW, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3790 | INVALID_OPCODE,
|
---|
| 3791 | INVALID_OPCODE,
|
---|
| 3792 | INVALID_OPCODE,
|
---|
| 3793 | INVALID_OPCODE,
|
---|
| 3794 | INVALID_OPCODE,
|
---|
| 3795 | INVALID_OPCODE,
|
---|
| 3796 | INVALID_OPCODE,
|
---|
| 3797 | INVALID_OPCODE,
|
---|
| 3798 | INVALID_OPCODE,
|
---|
| 3799 | INVALID_OPCODE,
|
---|
| 3800 | INVALID_OPCODE,
|
---|
[95544] | 3801 | OPVEX("vhaddps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VHADDPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3802 | OPVEX("vhsubps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VHSUBPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3803 | INVALID_OPCODE,
|
---|
| 3804 | INVALID_OPCODE,
|
---|
| 3805 |
|
---|
[95544] | 3806 | /* 8 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3807 | INVALID_OPCODE_BLOCK
|
---|
| 3808 |
|
---|
| 3809 | /* 9 */
|
---|
| 3810 | INVALID_OPCODE_BLOCK
|
---|
| 3811 |
|
---|
| 3812 | /* a */
|
---|
| 3813 | INVALID_OPCODE_BLOCK
|
---|
| 3814 |
|
---|
| 3815 | /* b */
|
---|
| 3816 | INVALID_OPCODE_BLOCK
|
---|
| 3817 |
|
---|
| 3818 | /* c */
|
---|
| 3819 | INVALID_OPCODE,
|
---|
| 3820 | INVALID_OPCODE,
|
---|
[95544] | 3821 | OPVEX("vcmpsd %Vsd,%Hsd,%Wsd,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VCMPSD, OP_PARM_Vsd, OP_PARM_Hsd, OP_PARM_Wsd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3822 | INVALID_OPCODE,
|
---|
| 3823 | INVALID_OPCODE,
|
---|
| 3824 | INVALID_OPCODE,
|
---|
| 3825 | INVALID_OPCODE,
|
---|
| 3826 | INVALID_OPCODE,
|
---|
| 3827 | INVALID_OPCODE,
|
---|
| 3828 | INVALID_OPCODE,
|
---|
| 3829 | INVALID_OPCODE,
|
---|
| 3830 | INVALID_OPCODE,
|
---|
| 3831 | INVALID_OPCODE,
|
---|
| 3832 | INVALID_OPCODE,
|
---|
| 3833 | INVALID_OPCODE,
|
---|
| 3834 | INVALID_OPCODE,
|
---|
| 3835 |
|
---|
| 3836 | /* d */
|
---|
[95544] | 3837 | OPVEX("vaddsubps %Vps,%Hps,%Wps", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDSUBPS, OP_PARM_Vps, OP_PARM_Hps, OP_PARM_Wps, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3838 | INVALID_OPCODE,
|
---|
| 3839 | INVALID_OPCODE,
|
---|
| 3840 | INVALID_OPCODE,
|
---|
| 3841 | INVALID_OPCODE,
|
---|
| 3842 | INVALID_OPCODE,
|
---|
| 3843 | INVALID_OPCODE,
|
---|
| 3844 | INVALID_OPCODE,
|
---|
| 3845 | INVALID_OPCODE,
|
---|
| 3846 | INVALID_OPCODE,
|
---|
| 3847 | INVALID_OPCODE,
|
---|
| 3848 | INVALID_OPCODE,
|
---|
| 3849 | INVALID_OPCODE,
|
---|
| 3850 | INVALID_OPCODE,
|
---|
| 3851 | INVALID_OPCODE,
|
---|
| 3852 | INVALID_OPCODE,
|
---|
| 3853 |
|
---|
| 3854 | /* e */
|
---|
| 3855 | INVALID_OPCODE,
|
---|
| 3856 | INVALID_OPCODE,
|
---|
| 3857 | INVALID_OPCODE,
|
---|
| 3858 | INVALID_OPCODE,
|
---|
| 3859 | INVALID_OPCODE,
|
---|
| 3860 | INVALID_OPCODE,
|
---|
[95544] | 3861 | OPVEX("vcvtpd2dq %Vx,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTPD2DQ, OP_PARM_Vx, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3862 | INVALID_OPCODE,
|
---|
| 3863 | INVALID_OPCODE,
|
---|
| 3864 | INVALID_OPCODE,
|
---|
| 3865 | INVALID_OPCODE,
|
---|
| 3866 | INVALID_OPCODE,
|
---|
| 3867 | INVALID_OPCODE,
|
---|
| 3868 | INVALID_OPCODE,
|
---|
| 3869 | INVALID_OPCODE,
|
---|
| 3870 | INVALID_OPCODE,
|
---|
| 3871 |
|
---|
| 3872 | /* f */
|
---|
[95544] | 3873 | OPVEX("vlddqu %Vx,%Mx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VLDDQU, OP_PARM_Vx, OP_PARM_Mx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3874 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3875 | };
|
---|
[95167] | 3876 | const DISOPMAPDESC g_DisasVexMap1F2Range = { &g_aDisasVexMap1F2[0], 0x10, RT_ELEMENTS(g_aDisasVexMap1F2) };
|
---|
[53094] | 3877 |
|
---|
| 3878 | /* Vex codes for two bytes opcodes starting with 0Fh with prefix F3H*/
|
---|
[95167] | 3879 | static const DISOPCODE g_aDisasVexMap1F3[] =
|
---|
[53094] | 3880 | {
|
---|
[95544] | 3881 | /* 1 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 3882 | OPVEX("vmovss %Vx,%Hx,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVSS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3883 | OPVEX("vmovss %Wss,%Hx,%Vss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMOVSS, OP_PARM_Wss, OP_PARM_Hx, OP_PARM_Vss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3884 | OPVEX("vmovsldup %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVSLDUP, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3885 | INVALID_OPCODE,
|
---|
| 3886 | INVALID_OPCODE,
|
---|
| 3887 | INVALID_OPCODE,
|
---|
[95544] | 3888 | OPVEX("vmovshdup %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVSHDUP, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3889 | INVALID_OPCODE,
|
---|
| 3890 | INVALID_OPCODE,
|
---|
| 3891 | INVALID_OPCODE,
|
---|
| 3892 | INVALID_OPCODE,
|
---|
| 3893 | INVALID_OPCODE,
|
---|
| 3894 | INVALID_OPCODE,
|
---|
| 3895 | INVALID_OPCODE,
|
---|
| 3896 | INVALID_OPCODE,
|
---|
| 3897 | INVALID_OPCODE,
|
---|
| 3898 |
|
---|
| 3899 | /* 2 */
|
---|
| 3900 | INVALID_OPCODE,
|
---|
| 3901 | INVALID_OPCODE,
|
---|
| 3902 | INVALID_OPCODE,
|
---|
| 3903 | INVALID_OPCODE,
|
---|
| 3904 | INVALID_OPCODE,
|
---|
| 3905 | INVALID_OPCODE,
|
---|
| 3906 | INVALID_OPCODE,
|
---|
| 3907 | INVALID_OPCODE,
|
---|
| 3908 | INVALID_OPCODE,
|
---|
| 3909 | INVALID_OPCODE,
|
---|
[95544] | 3910 | OPVEX("vcvtsi2ss %Vss,%Hss,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VCVTSI2SS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3911 | INVALID_OPCODE,
|
---|
[95544] | 3912 | OPVEX("vcvttss2si %Gy,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTTSS2SI, OP_PARM_Gy, OP_PARM_Wss, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3913 | OPVEX("vcvtss2si %Gy,%Wss", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTSS2SI, OP_PARM_Gy, OP_PARM_Wss, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3914 | INVALID_OPCODE,
|
---|
| 3915 | INVALID_OPCODE,
|
---|
| 3916 |
|
---|
| 3917 | /* 3 */
|
---|
| 3918 | INVALID_OPCODE_BLOCK
|
---|
| 3919 |
|
---|
| 3920 | /* 4 */
|
---|
| 3921 | INVALID_OPCODE_BLOCK
|
---|
| 3922 |
|
---|
| 3923 | /* 5 */
|
---|
| 3924 | INVALID_OPCODE,
|
---|
[95544] | 3925 | OPVEX("vsqrtss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSQRTSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3926 | OPVEX("vrsqrtss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VRSQRTSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3927 | OPVEX("vrcpss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VRCPSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3928 | INVALID_OPCODE,
|
---|
| 3929 | INVALID_OPCODE,
|
---|
| 3930 | INVALID_OPCODE,
|
---|
| 3931 | INVALID_OPCODE,
|
---|
[95544] | 3932 | OPVEX("vaddss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VADDSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3933 | OPVEX("vmulss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMULSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3934 | OPVEX("vcvtss2sd %Vsd,%Hx,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VCVTSS2SD, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3935 | OPVEX("vcvttps2dq %Vdq,%Wps", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTTPS2DQ, OP_PARM_Vdq, OP_PARM_Wps, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3936 | OPVEX("vsubss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VSUBSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3937 | OPVEX("vminss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMINSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3938 | OPVEX("vdivss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VDIVSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3939 | OPVEX("vmaxss %Vss,%Hss,%Wss", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMAXSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3940 |
|
---|
| 3941 | /* 6 */
|
---|
| 3942 | INVALID_OPCODE,
|
---|
| 3943 | INVALID_OPCODE,
|
---|
| 3944 | INVALID_OPCODE,
|
---|
| 3945 | INVALID_OPCODE,
|
---|
| 3946 | INVALID_OPCODE,
|
---|
| 3947 | INVALID_OPCODE,
|
---|
| 3948 | INVALID_OPCODE,
|
---|
| 3949 | INVALID_OPCODE,
|
---|
| 3950 | INVALID_OPCODE,
|
---|
| 3951 | INVALID_OPCODE,
|
---|
| 3952 | INVALID_OPCODE,
|
---|
| 3953 | INVALID_OPCODE,
|
---|
| 3954 | INVALID_OPCODE,
|
---|
| 3955 | INVALID_OPCODE,
|
---|
| 3956 | INVALID_OPCODE,
|
---|
[95544] | 3957 | OPVEX("vmovdqu %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVDQU, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3958 |
|
---|
| 3959 | /* 7 */
|
---|
[95544] | 3960 | OPVEX("vpshufhw %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPSHUFHW, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3961 | INVALID_OPCODE,
|
---|
| 3962 | INVALID_OPCODE,
|
---|
| 3963 | INVALID_OPCODE,
|
---|
| 3964 | INVALID_OPCODE,
|
---|
| 3965 | INVALID_OPCODE,
|
---|
| 3966 | INVALID_OPCODE,
|
---|
| 3967 | INVALID_OPCODE,
|
---|
| 3968 | INVALID_OPCODE,
|
---|
| 3969 | INVALID_OPCODE,
|
---|
| 3970 | INVALID_OPCODE,
|
---|
| 3971 | INVALID_OPCODE,
|
---|
| 3972 | INVALID_OPCODE,
|
---|
| 3973 | INVALID_OPCODE,
|
---|
[95544] | 3974 | OPVEX("vmovq %Vq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVQ, OP_PARM_Vq, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 3975 | OPVEX("vmovdqu %Wx,%Vx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVDQU, OP_PARM_Wx, OP_PARM_Vx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3976 |
|
---|
[95544] | 3977 | /* 8 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 3978 | INVALID_OPCODE_BLOCK
|
---|
| 3979 |
|
---|
| 3980 | /* 9 */
|
---|
| 3981 | INVALID_OPCODE_BLOCK
|
---|
| 3982 |
|
---|
| 3983 | /* a */
|
---|
| 3984 | INVALID_OPCODE_BLOCK
|
---|
| 3985 |
|
---|
| 3986 | /* b */
|
---|
| 3987 | INVALID_OPCODE_BLOCK
|
---|
| 3988 |
|
---|
| 3989 | /* c */
|
---|
| 3990 | INVALID_OPCODE,
|
---|
| 3991 | INVALID_OPCODE,
|
---|
[95544] | 3992 | OPVEX("vcmpps %Vss,%Hss,%Wss,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VCMPSS, OP_PARM_Vss, OP_PARM_Hss, OP_PARM_Wss, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53094] | 3993 | INVALID_OPCODE,
|
---|
| 3994 | INVALID_OPCODE,
|
---|
| 3995 | INVALID_OPCODE,
|
---|
| 3996 | INVALID_OPCODE,
|
---|
| 3997 | INVALID_OPCODE,
|
---|
| 3998 | INVALID_OPCODE,
|
---|
| 3999 | INVALID_OPCODE,
|
---|
| 4000 | INVALID_OPCODE,
|
---|
| 4001 | INVALID_OPCODE,
|
---|
| 4002 | INVALID_OPCODE,
|
---|
| 4003 | INVALID_OPCODE,
|
---|
| 4004 | INVALID_OPCODE,
|
---|
| 4005 | INVALID_OPCODE,
|
---|
| 4006 |
|
---|
| 4007 | /* d */
|
---|
| 4008 | INVALID_OPCODE_BLOCK
|
---|
| 4009 |
|
---|
| 4010 | /* e */
|
---|
| 4011 | INVALID_OPCODE,
|
---|
| 4012 | INVALID_OPCODE,
|
---|
| 4013 | INVALID_OPCODE,
|
---|
| 4014 | INVALID_OPCODE,
|
---|
| 4015 | INVALID_OPCODE,
|
---|
| 4016 | INVALID_OPCODE,
|
---|
[95544] | 4017 | OPVEX("vcvtdq2pd %Vx,%Wpd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VCVTDQ2PD, OP_PARM_Vx, OP_PARM_Wpd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4018 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53094] | 4019 | };
|
---|
[95167] | 4020 | const DISOPMAPDESC g_DisasVexMap1F3Range = { &g_aDisasVexMap1F3[0], 0x10, RT_ELEMENTS(g_aDisasVexMap1F3) };
|
---|
[53094] | 4021 |
|
---|
[95319] | 4022 | /** Indexed by: (/r << 1) | VEX.L */
|
---|
[103709] | 4023 | const DISOPCODE g_aMapX86_VGroup17[8*2] =
|
---|
[95314] | 4024 | {
|
---|
[95544] | 4025 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[95319] | 4026 | INVALID_OPCODE_MOD_RM(0x00),
|
---|
| 4027 | INVALID_OPCODE_MOD_RM(0x01),
|
---|
[95544] | 4028 | OPVEX("blsr %By,%Ey", IDX_ParseVexDest, IDX_ParseModRM, 0, 0, OP_BLSR, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95319] | 4029 | INVALID_OPCODE_MOD_RM(0x03),
|
---|
[95544] | 4030 | OPVEX("blsmsk %By,%Ey", IDX_ParseVexDest, IDX_ParseModRM, 0, 0, OP_BLSMSK, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95319] | 4031 | INVALID_OPCODE_MOD_RM(0x05),
|
---|
[95544] | 4032 | OPVEX("blsi %By,%Ey", IDX_ParseVexDest, IDX_ParseModRM, 0, 0, OP_BLSI, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95319] | 4033 | INVALID_OPCODE_MOD_RM(0x07),
|
---|
| 4034 | INVALID_OPCODE_MOD_RM(0x08),
|
---|
| 4035 | INVALID_OPCODE_MOD_RM(0x09),
|
---|
| 4036 | INVALID_OPCODE_MOD_RM(0x0a),
|
---|
| 4037 | INVALID_OPCODE_MOD_RM(0x0b),
|
---|
| 4038 | INVALID_OPCODE_MOD_RM(0x0c),
|
---|
| 4039 | INVALID_OPCODE_MOD_RM(0x0d),
|
---|
| 4040 | INVALID_OPCODE_MOD_RM(0x0e),
|
---|
| 4041 | INVALID_OPCODE_MOD_RM(0x0f),
|
---|
[95314] | 4042 | };
|
---|
| 4043 |
|
---|
[95167] | 4044 | static const DISOPCODE g_aDisasVexMap2[] =
|
---|
[53131] | 4045 | {
|
---|
[95167] | 4046 | /** @todo vsha1nexte at 0xc8 + ? */
|
---|
[95544] | 4047 | /* 0xf2 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 4048 | OPVEX("andn %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_ANDN, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[103709] | 4049 | OPVEX("vgroup17", IDX_ParseVGrp17, 0, 0, 0, OP_GRP17, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4050 | INVALID_OPCODE,
|
---|
[95544] | 4051 | OPVEX("bzhi %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_BZHI, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4052 | INVALID_OPCODE,
|
---|
[95544] | 4053 | OPVEX("bextr %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_BEXTR, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4054 | };
|
---|
[95167] | 4055 | const DISOPMAPDESC g_DisasVexMap2Range = { &g_aDisasVexMap2[0], 0xf2, RT_ELEMENTS(g_aDisasVexMap2) };
|
---|
[53131] | 4056 |
|
---|
[95167] | 4057 | static const DISOPCODE g_aDisasVexMap2F3[] =
|
---|
[53131] | 4058 | {
|
---|
[95544] | 4059 | /* 0xf5 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 4060 | OPVEX("pext %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_PEXT, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4061 | INVALID_OPCODE,
|
---|
[95544] | 4062 | OPVEX("sarx %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_SARX, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4063 | };
|
---|
[95314] | 4064 | const DISOPMAPDESC g_DisasVexMap2F3Range = { &g_aDisasVexMap2F3[0], 0xf5, RT_ELEMENTS(g_aDisasVexMap2F3) };
|
---|
[53131] | 4065 |
|
---|
[95246] | 4066 | static const DISOPCODE g_aDisasVexMap2F2[] =
|
---|
[53131] | 4067 | {
|
---|
[95544] | 4068 | /* 0xf5 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 4069 | OPVEX("pdep %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_PDEP, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4070 | OPVEX("mulx %By,%Gy,%Ey", IDX_ParseVexDest, IDX_ParseModRM, IDX_UseModRM, 0, OP_MULX, OP_PARM_By, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4071 | OPVEX("shrx %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_SHRX, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4072 | };
|
---|
[95167] | 4073 | const DISOPMAPDESC g_DisasVexMap2F2Range = { &g_aDisasVexMap2F2[0], 0xf5, RT_ELEMENTS(g_aDisasVexMap2F2) };
|
---|
[53131] | 4074 |
|
---|
[95167] | 4075 | static const DISOPCODE g_aDisasVexMap2_66[] =
|
---|
[53131] | 4076 | {
|
---|
[95544] | 4077 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 4078 | OPVEX("vpshufb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSHUFB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4079 | OPVEX("vphaddw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHADDW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4080 | OPVEX("vphaddd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHADDD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4081 | OPVEX("vphaddsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHADDSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4082 | OPVEX("vpmaddubsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMADDUBSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4083 | OPVEX("vphsubw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHSUBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4084 | OPVEX("vphsubd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHSUBD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4085 | OPVEX("vphsubsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPHSUBSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4086 | OPVEX("vpsignb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSIGNB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4087 | OPVEX("vpsignw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSIGNW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4088 | OPVEX("vpsignd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSIGND, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4089 | OPVEX("vpmulhrsw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULHRSW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4090 | OPVEX("vpermilps %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPERMILPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4091 | OPVEX("vpermilpd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPERMILPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4092 | OPVEX("vtestps %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VTESTPS, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4093 | OPVEX("vtestpd %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VTESTPD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4094 |
|
---|
| 4095 | /* 1 */
|
---|
| 4096 | INVALID_OPCODE,
|
---|
| 4097 | INVALID_OPCODE,
|
---|
| 4098 | INVALID_OPCODE,
|
---|
[95544] | 4099 | OPVEX("vcvtph2ps %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VCVTPH2PS, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4100 | INVALID_OPCODE,
|
---|
| 4101 | INVALID_OPCODE,
|
---|
[95544] | 4102 | OPVEX("vpermps %Vqq,%Hqq,%Wqq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPERMPS, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4103 | OPVEX("vptest %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPTEST, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4104 | OPVEX("vbroadcastss %Vx,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VBROADCASTSS, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4105 | OPVEX("vbroadcastsd %Vqq,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VBROADCASTSD, OP_PARM_Vqq, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4106 | OPVEX("vbroadcastf128 %Vqq,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VBROADCASTF128, OP_PARM_Vqq, OP_PARM_Wdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4107 | INVALID_OPCODE,
|
---|
[95544] | 4108 | OPVEX("vpabsb %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPABSB, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4109 | OPVEX("vpabsw %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPABSW, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4110 | OPVEX("vpabsd %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPABSD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4111 | INVALID_OPCODE,
|
---|
| 4112 |
|
---|
| 4113 | /* 2 */
|
---|
[96114] | 4114 | OPVEX("vpmovsxbw %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXBW, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4115 | OPVEX("vpmovsxbd %Vx,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXBD, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4116 | OPVEX("vpmovsxbq %Vx,%Ww", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXBQ, OP_PARM_Vx, OP_PARM_Ww, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4117 | OPVEX("vpmovsxwd %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXWD, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4118 | OPVEX("vpmovsxwq %Vx,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXWQ, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4119 | OPVEX("vpmovsxdq %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVSXDQ, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4120 | INVALID_OPCODE,
|
---|
| 4121 | INVALID_OPCODE,
|
---|
[95544] | 4122 | OPVEX("vpmuldq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULDQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4123 | OPVEX("vpcmpeqq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPEQQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4124 | OPVEX("vmovntdqa %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VMOVNTDQA, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4125 | OPVEX("vpackusdw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VVPACKUSDW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4126 | OPVEX("vmaskmovps %Vx,%Hx,%Mx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMASKMOVPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Mx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4127 | OPVEX("vmaskmovpd %Vx,%Hx,%Mx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMASKMOVPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Mx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4128 | OPVEX("vmaskmovps %Mx,%Hx,%Vx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMASKMOVPS, OP_PARM_Mx, OP_PARM_Hx, OP_PARM_Vx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4129 | OPVEX("vmaskmovpd %Mx,%Hx,%Vx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VMASKMOVPD, OP_PARM_Mx, OP_PARM_Hx, OP_PARM_Vx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4130 |
|
---|
| 4131 | /* 3 */
|
---|
[96114] | 4132 | OPVEX("vpmovzxbw %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXBW, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4133 | OPVEX("vpmovzxbd %Vx,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXBD, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4134 | OPVEX("vpmovzxbq %Vx,%Ww", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXBQ, OP_PARM_Vx, OP_PARM_Ww, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4135 | OPVEX("vpmovzxwd %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXWD, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4136 | OPVEX("vpmovzxwq %Vx,%Wd", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXWQ, OP_PARM_Vx, OP_PARM_Wd, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4137 | OPVEX("vpmovzxdq %Vx,%Wq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPMOVZXDQ, OP_PARM_Vx, OP_PARM_Wq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95544] | 4138 | OPVEX("vpermd %Vqq,%Hqq,%Wqq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPERMD, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4139 | OPVEX("vpcmpgtq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPCMPGTQ, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4140 | OPVEX("vpminsb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[96006] | 4141 | OPVEX("vpminsd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINSD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[95544] | 4142 | OPVEX("vpminuw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINUW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4143 | OPVEX("vpminud %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMINUD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4144 | OPVEX("vpmaxsb %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXSB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4145 | OPVEX("vpmaxsd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXSD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4146 | OPVEX("vpmaxuw %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXUW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4147 | OPVEX("vpmaxud %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMAXUD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4148 |
|
---|
| 4149 | /* 4 */
|
---|
[95544] | 4150 | OPVEX("vpmulld %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMULLD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4151 | OPVEX("vphminposuw %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPHMINPOSUW, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4152 | INVALID_OPCODE,
|
---|
| 4153 | INVALID_OPCODE,
|
---|
| 4154 | INVALID_OPCODE,
|
---|
[95544] | 4155 | OPVEX("#vpsrlvd/vpsrlvq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRLVD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4156 | OPVEX("vpsravd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSRAVD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4157 | OPVEX("#vpsllvd/vpsllvq %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPSLLVD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4158 | INVALID_OPCODE,
|
---|
| 4159 | INVALID_OPCODE,
|
---|
| 4160 | INVALID_OPCODE,
|
---|
| 4161 | INVALID_OPCODE,
|
---|
| 4162 | INVALID_OPCODE,
|
---|
| 4163 | INVALID_OPCODE,
|
---|
| 4164 | INVALID_OPCODE,
|
---|
| 4165 | INVALID_OPCODE,
|
---|
| 4166 |
|
---|
| 4167 | /* 5 */
|
---|
| 4168 | INVALID_OPCODE,
|
---|
| 4169 | INVALID_OPCODE,
|
---|
| 4170 | INVALID_OPCODE,
|
---|
| 4171 | INVALID_OPCODE,
|
---|
| 4172 | INVALID_OPCODE,
|
---|
| 4173 | INVALID_OPCODE,
|
---|
| 4174 | INVALID_OPCODE,
|
---|
| 4175 | INVALID_OPCODE,
|
---|
[95544] | 4176 | OPVEX("vpbroadcastd %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPBROADCASTD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4177 | OPVEX("vpbroadcastq %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPBROADCASTQ, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[100571] | 4178 | OPVEX("vbroadcasti128 %Vqq,%Mdq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VBROADCASTI128, OP_PARM_Vqq, OP_PARM_Mdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4179 | INVALID_OPCODE,
|
---|
| 4180 | INVALID_OPCODE,
|
---|
| 4181 | INVALID_OPCODE,
|
---|
| 4182 | INVALID_OPCODE,
|
---|
| 4183 | INVALID_OPCODE,
|
---|
| 4184 |
|
---|
| 4185 | /* 6 */
|
---|
| 4186 | INVALID_OPCODE_BLOCK
|
---|
| 4187 |
|
---|
| 4188 | /* 7 */
|
---|
| 4189 | INVALID_OPCODE,
|
---|
| 4190 | INVALID_OPCODE,
|
---|
| 4191 | INVALID_OPCODE,
|
---|
| 4192 | INVALID_OPCODE,
|
---|
| 4193 | INVALID_OPCODE,
|
---|
| 4194 | INVALID_OPCODE,
|
---|
| 4195 | INVALID_OPCODE,
|
---|
| 4196 | INVALID_OPCODE,
|
---|
[95544] | 4197 | OPVEX("vpbroadcastb %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPBROADCASTB, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4198 | OPVEX("vpbroadcastw %Vx,%Wx", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VPBROADCASTW, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4199 | INVALID_OPCODE,
|
---|
| 4200 | INVALID_OPCODE,
|
---|
| 4201 | INVALID_OPCODE,
|
---|
| 4202 | INVALID_OPCODE,
|
---|
| 4203 | INVALID_OPCODE,
|
---|
| 4204 | INVALID_OPCODE,
|
---|
| 4205 |
|
---|
[95544] | 4206 | /* 8 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53131] | 4207 | INVALID_OPCODE,
|
---|
| 4208 | INVALID_OPCODE,
|
---|
| 4209 | INVALID_OPCODE,
|
---|
| 4210 | INVALID_OPCODE,
|
---|
| 4211 | INVALID_OPCODE,
|
---|
| 4212 | INVALID_OPCODE,
|
---|
| 4213 | INVALID_OPCODE,
|
---|
| 4214 | INVALID_OPCODE,
|
---|
| 4215 | INVALID_OPCODE,
|
---|
| 4216 | INVALID_OPCODE,
|
---|
| 4217 | INVALID_OPCODE,
|
---|
| 4218 | INVALID_OPCODE,
|
---|
[95544] | 4219 | OPVEX("#vpmaskmovd/vpmaskmovq %Vx,%Hx,%Mx",IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VPMASKMOVD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Mx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4220 | INVALID_OPCODE,
|
---|
[95544] | 4221 | OPVEX("#vpmaskmovd/vpmaskmovq %Mx,%Vx,%Hx",IDX_ParseModRM, IDX_UseModRM, IDX_ParseVexDest, 0, OP_VPMASKMOVD, OP_PARM_Mx, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4222 | INVALID_OPCODE,
|
---|
| 4223 |
|
---|
| 4224 | /* 9 */
|
---|
[53172] | 4225 | /* Seems incorrect format is used in the Intel opcode tables.
|
---|
| 4226 | * Correct form according to Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z
|
---|
| 4227 | * is the following:
|
---|
| 4228 | * v?gather?d/q %Vx, %Md/q, %Hx ,
|
---|
| 4229 | * where d/q is defined by VEX.W bit.
|
---|
[53245] | 4230 | *
|
---|
| 4231 | * The instruction are in the following format:
|
---|
| 4232 | * #name1/name2 format
|
---|
| 4233 | * if REX.W is set name2 is used,
|
---|
| 4234 | * otherwise name1.
|
---|
[53172] | 4235 | */
|
---|
[95544] | 4236 | OPVEX("#vpgatherdd/vpgatherdq %Vx,%My,%Hx", IDX_ParseModRM, IDX_UseModRM, IDX_ParseVexDest, 0, OP_VGATHER, OP_PARM_Vx, OP_PARM_My, OP_PARM_Hx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4237 | OPVEX("#vpgatherqd/vpgatherqq %Vx,%My,%Hx", IDX_ParseModRM, IDX_UseModRM, IDX_ParseVexDest, 0, OP_VGATHER, OP_PARM_Vx, OP_PARM_My, OP_PARM_Hx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4238 | OPVEX("#vgatherdps/vgatherdpd %Vx,%My,%Hx", IDX_ParseModRM, IDX_UseModRM, IDX_ParseVexDest, 0, OP_VGATHER, OP_PARM_Vx, OP_PARM_My, OP_PARM_Hx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4239 | OPVEX("#vgatherqps/vgatherqpd %Vx,%My,%Hx", IDX_ParseModRM, IDX_UseModRM, IDX_ParseVexDest, 0, OP_VGATHER, OP_PARM_Vx, OP_PARM_My, OP_PARM_Hx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4240 | INVALID_OPCODE,
|
---|
| 4241 | INVALID_OPCODE,
|
---|
[95544] | 4242 | OPVEX("#vfmaddsub132ps/vfmaddsub132pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADDSUB132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4243 | OPVEX("#vfmsubadd132ps/vfmsubadd132pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUBADD132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4244 | OPVEX("#vfmadd132ps/vfmadd132pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4245 | OPVEX("#vfmadd132ss/vfmadd132sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD132SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4246 | OPVEX("#vfmsub132ps/vfmsub132pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4247 | OPVEX("#vfmsub132ss/vfmsub132sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB132SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4248 | OPVEX("#vfnmadd132ps/vfnmadd132pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4249 | OPVEX("#vfnmadd132ss/vfnmadd132sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD132SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4250 | OPVEX("#vfnmsub132ps/vfnmsub132pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB132PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4251 | OPVEX("#vfnmsub132ss/vfnmsub132sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB132SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4252 |
|
---|
| 4253 | /* a */
|
---|
| 4254 | INVALID_OPCODE,
|
---|
| 4255 | INVALID_OPCODE,
|
---|
| 4256 | INVALID_OPCODE,
|
---|
| 4257 | INVALID_OPCODE,
|
---|
| 4258 | INVALID_OPCODE,
|
---|
| 4259 | INVALID_OPCODE,
|
---|
[95544] | 4260 | OPVEX("#vfmaddsub213ps/vfmaddsub213pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADDSUB213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4261 | OPVEX("#vfmsubadd213ps/vfmsubadd213pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUBADD213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4262 | OPVEX("#vfmadd213ps/vfmadd213pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4263 | OPVEX("#vfmadd213ss/vfmadd213sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD213SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4264 | OPVEX("#vfmsub213ps/vfmsub213pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4265 | OPVEX("#vfmsub213ss/vfmsub213sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB213SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4266 | OPVEX("#vfnmadd213ps/vfnmadd213pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4267 | OPVEX("#vfnmadd213ss/vfnmadd213sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD213SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4268 | OPVEX("#vfnmsub213ps/vfnmsub213pd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB213PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4269 | OPVEX("#vfnmsub213ss/vfnmsub213sd %Vx,%Hx,%Wx",IDX_ParseModRM,IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB213SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4270 |
|
---|
| 4271 | /* b */
|
---|
| 4272 | INVALID_OPCODE,
|
---|
| 4273 | INVALID_OPCODE,
|
---|
| 4274 | INVALID_OPCODE,
|
---|
| 4275 | INVALID_OPCODE,
|
---|
| 4276 | INVALID_OPCODE,
|
---|
| 4277 | INVALID_OPCODE,
|
---|
[95544] | 4278 | OPVEX("#vfmaddsub231ps/vfmaddsub231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADDSUB231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4279 | OPVEX("#vfmsubadd231ps/vfmsubadd231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUBADD231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4280 | OPVEX("#vfmadd231ps/vfmadd231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4281 | OPVEX("#vfmadd231ss/vfmadd231sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMADD231SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4282 | OPVEX("#vfmsub231ps/vfmsub231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4283 | OPVEX("#vfmsub231ss/vfmsub231sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFMSUB231SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4284 | OPVEX("#vfnmadd231ps/vfnmadd231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4285 | OPVEX("#vfnmadd231ss/vfnmadd231sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMADD231SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4286 | OPVEX("#vfnmsub231ps/vfnmsub231pd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB231PS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4287 | OPVEX("#vfnmsub231ss/vfnmsub231sd %Vx,%Hx,%Wx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VFNMSUB231SS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4288 |
|
---|
| 4289 | /* c */
|
---|
| 4290 | INVALID_OPCODE_BLOCK
|
---|
| 4291 |
|
---|
| 4292 | /* d */
|
---|
| 4293 | INVALID_OPCODE,
|
---|
| 4294 | INVALID_OPCODE,
|
---|
| 4295 | INVALID_OPCODE,
|
---|
| 4296 | INVALID_OPCODE,
|
---|
| 4297 | INVALID_OPCODE,
|
---|
| 4298 | INVALID_OPCODE,
|
---|
| 4299 | INVALID_OPCODE,
|
---|
| 4300 | INVALID_OPCODE,
|
---|
| 4301 | INVALID_OPCODE,
|
---|
| 4302 | INVALID_OPCODE,
|
---|
| 4303 | INVALID_OPCODE,
|
---|
[95544] | 4304 | OPVEX("vaesimc %Vdq,%Wdq", IDX_ParseModRM, IDX_UseModRM, 0, 0, OP_VAESIMC, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_NONE, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4305 | OPVEX("vaesenc %Vdq,%Hdq,%Wdq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VAESENC, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4306 | OPVEX("vaesenclast %Vdq,%Hdq,%Wdq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VAESENCLAST, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4307 | OPVEX("vaesdec %Vdq,%Hdq,%Wdq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VAESDEC, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4308 | OPVEX("vaesdeclast %Vdq,%Hdq,%Wdq", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_VAESDECLAST, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4309 |
|
---|
| 4310 | /* e */
|
---|
| 4311 | INVALID_OPCODE_BLOCK
|
---|
| 4312 |
|
---|
| 4313 | /* f */
|
---|
| 4314 | INVALID_OPCODE,
|
---|
| 4315 | INVALID_OPCODE,
|
---|
| 4316 | INVALID_OPCODE,
|
---|
| 4317 | INVALID_OPCODE,
|
---|
| 4318 | INVALID_OPCODE,
|
---|
| 4319 | INVALID_OPCODE,
|
---|
| 4320 | INVALID_OPCODE,
|
---|
[95544] | 4321 | OPVEX("shlx %Gy,%By,%Ey", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, 0, OP_SHLX, OP_PARM_Gy, OP_PARM_By, OP_PARM_Ey, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4322 | /* format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
[53131] | 4323 | };
|
---|
[95167] | 4324 | const DISOPMAPDESC g_DisasVexMap2_66Range = { &g_aDisasVexMap2_66[0], 0x00, RT_ELEMENTS(g_aDisasVexMap2_66) };
|
---|
[53131] | 4325 |
|
---|
[95167] | 4326 | const DISOPCODE g_aDisasVexMap3[] =
|
---|
[53131] | 4327 | {
|
---|
[95167] | 4328 | INVALID_OPCODE, /* dummy */
|
---|
| 4329 | };
|
---|
| 4330 | const DISOPMAPDESC g_DisasVexMap3Range = { &g_aDisasVexMap3[0], 0, RT_ELEMENTS(g_aDisasVexMap3) };
|
---|
| 4331 |
|
---|
| 4332 | static const DISOPCODE g_aDisasVexMap3_66[] =
|
---|
| 4333 | {
|
---|
[95544] | 4334 | /* 0 format string, parse param #1, parse param #2, parse param #3, parse param #4, opcode, param #1, param #2, param #3, param #4, flags */
|
---|
| 4335 | OPVEX("vpermq %Vqq,%Wqq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPERMQ, OP_PARM_Vqq, OP_PARM_Wqq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4336 | OPVEX("vpermpd %Vqq,%Wqq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPERMPD, OP_PARM_Vqq, OP_PARM_Wqq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4337 | OPVEX("vpblendd %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPBLENDD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4338 | INVALID_OPCODE,
|
---|
[95544] | 4339 | OPVEX("vpermilps %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPERMILPS, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4340 | OPVEX("vpermilpd %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPERMILPD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4341 | OPVEX("vperm2f128 %Vqq,%Hqq,%Wqq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPERM2F128, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4342 | INVALID_OPCODE,
|
---|
[95544] | 4343 | OPVEX("vroundps %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VROUNDPS, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4344 | OPVEX("vroundpd %Vx,%Wx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VROUNDPD, OP_PARM_Vx, OP_PARM_Wx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4345 | OPVEX("vroundss %Vss,%Wss,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VROUNDSS, OP_PARM_Vss, OP_PARM_Wss, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4346 | OPVEX("vroundsd %Vsd,%Wsd,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VROUNDSD, OP_PARM_Vsd, OP_PARM_Wsd, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4347 | OPVEX("vblendps %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VBLENDPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4348 | OPVEX("vblendpd %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VBLENDPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4349 | OPVEX("vpblendw %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPBLENDW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4350 | OPVEX("vpalignr %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPALIGNR, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4351 |
|
---|
| 4352 | /* 1 */
|
---|
| 4353 | INVALID_OPCODE,
|
---|
| 4354 | INVALID_OPCODE,
|
---|
| 4355 | INVALID_OPCODE,
|
---|
| 4356 | INVALID_OPCODE,
|
---|
| 4357 | // vpextrb %Rd/Mb,%Vdq,%Ib
|
---|
[95544] | 4358 | OPVEX("vpextrb %Eb,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPEXTRB, OP_PARM_Eb, OP_PARM_Vdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4359 | // vpextrw %Rd/Mw,%Vdq,%Ib
|
---|
[95544] | 4360 | OPVEX("vpextrw %Ew,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPEXTRW, OP_PARM_Ew, OP_PARM_Vdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4361 | OPVEX("#vpextrd/vpextrq %Ey,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPEXTRD, OP_PARM_Ey, OP_PARM_Vdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4362 | OPVEX("vextractps %Ed,%Vdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VEXTRACTPS, OP_PARM_Ed, OP_PARM_Vdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4363 | OPVEX("vinsertf128 %Vqq,%Hqq,%Wqq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VINSERTF128, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4364 | OPVEX("vextractf128 %Wdq,%Vqq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VEXTRACTF128, OP_PARM_Eb, OP_PARM_Vdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4365 | INVALID_OPCODE,
|
---|
| 4366 | INVALID_OPCODE,
|
---|
| 4367 | INVALID_OPCODE,
|
---|
[95544] | 4368 | OPVEX("vcvtps2ph %Wx,%Vx,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VCVTPS2PH, OP_PARM_Wx, OP_PARM_Vx, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4369 | INVALID_OPCODE,
|
---|
| 4370 | INVALID_OPCODE,
|
---|
| 4371 |
|
---|
| 4372 | /* 2 */
|
---|
| 4373 | // vpinsrb %Vdq,%Hdq,%Ry/Mb,%Ib
|
---|
[95544] | 4374 | OPVEX("vpinsrb %Vdq,%Hdq,%Eb,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPINSRB, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Eb, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4375 | // vinsertps %Vdq,%Hdq,%Udq/Md,%Ib
|
---|
[95544] | 4376 | OPVEX("vinsertps %Vdq,%Hdq,%Wd,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VINSERTPS, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wd, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4377 | OPVEX("#vpinsrd/vpinsrq %Vdq,%Hdq,%Ey,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPINSRD, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Ey, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4378 | INVALID_OPCODE,
|
---|
| 4379 | INVALID_OPCODE,
|
---|
| 4380 | INVALID_OPCODE,
|
---|
| 4381 | INVALID_OPCODE,
|
---|
| 4382 | INVALID_OPCODE,
|
---|
| 4383 | INVALID_OPCODE,
|
---|
| 4384 | INVALID_OPCODE,
|
---|
| 4385 | INVALID_OPCODE,
|
---|
| 4386 | INVALID_OPCODE,
|
---|
| 4387 | INVALID_OPCODE,
|
---|
| 4388 | INVALID_OPCODE,
|
---|
| 4389 | INVALID_OPCODE,
|
---|
| 4390 | INVALID_OPCODE,
|
---|
| 4391 |
|
---|
| 4392 | /* 3 */
|
---|
| 4393 | INVALID_OPCODE,
|
---|
| 4394 | INVALID_OPCODE,
|
---|
| 4395 | INVALID_OPCODE,
|
---|
| 4396 | INVALID_OPCODE,
|
---|
| 4397 | INVALID_OPCODE,
|
---|
| 4398 | INVALID_OPCODE,
|
---|
| 4399 | INVALID_OPCODE,
|
---|
| 4400 | INVALID_OPCODE,
|
---|
[95544] | 4401 | OPVEX("vinserti128 %Vqq,%Hqq,%Wqq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VINSERTI128, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4402 | OPVEX("vextracti128 %Wdq,%Vqq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VEXTRACTI128, OP_PARM_Wdq, OP_PARM_Vqq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4403 | INVALID_OPCODE,
|
---|
| 4404 | INVALID_OPCODE,
|
---|
| 4405 | INVALID_OPCODE,
|
---|
| 4406 | INVALID_OPCODE,
|
---|
| 4407 | INVALID_OPCODE,
|
---|
| 4408 | INVALID_OPCODE,
|
---|
| 4409 |
|
---|
| 4410 | /* 4 */
|
---|
[95544] | 4411 | OPVEX("vdpps %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VDPPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4412 | OPVEX("vdppd %Vdq,%Hdq,%Wdq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VDPPD, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
| 4413 | OPVEX("vmpsadbw %Vx,%Hx,%Wx,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VMPSADBW, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4414 | INVALID_OPCODE,
|
---|
[95544] | 4415 | OPVEX("vpclmulqdq %Vdq,%Hdq,%Wdq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPCLMULQDQ, OP_PARM_Vdq, OP_PARM_Hdq, OP_PARM_Wdq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4416 | INVALID_OPCODE,
|
---|
[95544] | 4417 | OPVEX("vperm2i128 %Vqq,%Hqq,%Wqq,%Ib", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPERM2I128, OP_PARM_Vqq, OP_PARM_Hqq, OP_PARM_Wqq, OP_PARM_Ib, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4418 | INVALID_OPCODE,
|
---|
| 4419 | INVALID_OPCODE,
|
---|
| 4420 | INVALID_OPCODE,
|
---|
[95544] | 4421 | OPVEX("vblendvps %Vx,%Hx,%Wx,%Lx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VBLENDVPS, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Lx, DISOPTYPE_HARMLESS),
|
---|
| 4422 | OPVEX("vblendvpd %Vx,%Hx,%Wx,%Lx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VBLENDVPD, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Lx, DISOPTYPE_HARMLESS),
|
---|
| 4423 | OPVEX("vpblendvb %Vx,%Hx,%Wx,%Lx", IDX_ParseModRM, IDX_ParseVexDest, IDX_UseModRM, IDX_ParseImmByte, OP_VPBLENDVB, OP_PARM_Vx, OP_PARM_Hx, OP_PARM_Wx, OP_PARM_Lx, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4424 | INVALID_OPCODE,
|
---|
| 4425 | INVALID_OPCODE,
|
---|
| 4426 | INVALID_OPCODE,
|
---|
| 4427 |
|
---|
| 4428 | /* 5 */
|
---|
| 4429 | INVALID_OPCODE_BLOCK
|
---|
| 4430 |
|
---|
| 4431 | /* 6 */
|
---|
[95544] | 4432 | OPVEX("vpcmpestrm %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPCMPESTRM, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4433 | OPVEX("vpcmpestri %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPCMPESTRI, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4434 | OPVEX("vpcmpistrm %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPCMPISTRM, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
| 4435 | OPVEX("vpcmpistri %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VPCMPISTRI, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4436 | INVALID_OPCODE,
|
---|
| 4437 | INVALID_OPCODE,
|
---|
| 4438 | INVALID_OPCODE,
|
---|
| 4439 | INVALID_OPCODE,
|
---|
| 4440 | INVALID_OPCODE,
|
---|
| 4441 | INVALID_OPCODE,
|
---|
| 4442 | INVALID_OPCODE,
|
---|
| 4443 | INVALID_OPCODE,
|
---|
| 4444 | INVALID_OPCODE,
|
---|
| 4445 | INVALID_OPCODE,
|
---|
| 4446 | INVALID_OPCODE,
|
---|
| 4447 | INVALID_OPCODE,
|
---|
| 4448 |
|
---|
| 4449 | /* 7 */
|
---|
| 4450 | INVALID_OPCODE_BLOCK
|
---|
| 4451 |
|
---|
| 4452 | /* 8 */
|
---|
| 4453 | INVALID_OPCODE_BLOCK
|
---|
| 4454 |
|
---|
| 4455 | /* 9 */
|
---|
| 4456 | INVALID_OPCODE_BLOCK
|
---|
| 4457 |
|
---|
| 4458 | /* a */
|
---|
| 4459 | INVALID_OPCODE_BLOCK
|
---|
| 4460 |
|
---|
| 4461 | /* b */
|
---|
| 4462 | INVALID_OPCODE_BLOCK
|
---|
| 4463 |
|
---|
| 4464 | /* c */
|
---|
| 4465 | INVALID_OPCODE_BLOCK
|
---|
| 4466 |
|
---|
| 4467 | /* d */
|
---|
| 4468 | INVALID_OPCODE,
|
---|
| 4469 | INVALID_OPCODE,
|
---|
| 4470 | INVALID_OPCODE,
|
---|
| 4471 | INVALID_OPCODE,
|
---|
| 4472 | INVALID_OPCODE,
|
---|
| 4473 | INVALID_OPCODE,
|
---|
| 4474 | INVALID_OPCODE,
|
---|
| 4475 | INVALID_OPCODE,
|
---|
| 4476 | INVALID_OPCODE,
|
---|
| 4477 | INVALID_OPCODE,
|
---|
| 4478 | INVALID_OPCODE,
|
---|
| 4479 | INVALID_OPCODE,
|
---|
| 4480 | INVALID_OPCODE,
|
---|
| 4481 | INVALID_OPCODE,
|
---|
| 4482 | INVALID_OPCODE,
|
---|
[95544] | 4483 | OPVEX("vaeskeygen %Vdq,%Wdq,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_VAESKEYGEN, OP_PARM_Vdq, OP_PARM_Wdq, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4484 | };
|
---|
[95167] | 4485 | const DISOPMAPDESC g_DisasVexMap3_66Range = { &g_aDisasVexMap3_66[0], 0x00, RT_ELEMENTS(g_aDisasVexMap3_66) };
|
---|
[53131] | 4486 |
|
---|
[95167] | 4487 | const DISOPCODE g_aDisasVexMap3F2[] =
|
---|
[53131] | 4488 | {
|
---|
[95544] | 4489 | OPVEX("rorx %Gy,%Ey,%Ib", IDX_ParseModRM, IDX_UseModRM, IDX_ParseImmByte, 0, OP_RORX, OP_PARM_Gy, OP_PARM_Ey, OP_PARM_Ib, OP_PARM_NONE, DISOPTYPE_HARMLESS),
|
---|
[53131] | 4490 | };
|
---|
[95167] | 4491 | const DISOPMAPDESC g_DisasVexMap3F2Range = { &g_aDisasVexMap3F2[0], 0xf0, RT_ELEMENTS(g_aDisasVexMap3F2) };
|
---|
[53131] | 4492 |
|
---|
[95167] | 4493 | const DISOPCODE g_aDisasVexMap3F3[] =
|
---|
[53094] | 4494 | {
|
---|
[95167] | 4495 | INVALID_OPCODE, /* dummy */
|
---|
[53094] | 4496 | };
|
---|
[95167] | 4497 | const DISOPMAPDESC g_DisasVexMap3F3Range = { &g_aDisasVexMap3F3[0], 0, RT_ELEMENTS(g_aDisasVexMap3F3) };
|
---|
[53094] | 4498 |
|
---|
| 4499 |
|
---|
[95167] | 4500 | /** Invalid range for the g_aapVexOpcodesMapRanges table. */
|
---|
| 4501 | const DISOPMAPDESC g_DisasVexMapInvalidRange = { &g_InvalidOpcode[0], 0, 1 };
|
---|
| 4502 |
|
---|
| 4503 |
|
---|
| 4504 | PCDISOPMAPDESC const g_aapVexOpcodesMapRanges[4][4] =
|
---|
[53094] | 4505 | {
|
---|
[95167] | 4506 | /* No prefix: */
|
---|
| 4507 | {
|
---|
| 4508 | &g_DisasVexMapInvalidRange,
|
---|
| 4509 | &g_DisasVexMap1Range, // 0fh 2-byte opcodes
|
---|
| 4510 | &g_DisasVexMap2Range, // 0f38h 3-byte opcodes
|
---|
| 4511 | &g_DisasVexMap3Range, // 0f3ah 3-byte opcodes
|
---|
| 4512 | },
|
---|
| 4513 | /* 66h prefix: */
|
---|
| 4514 | {
|
---|
| 4515 | &g_DisasVexMapInvalidRange,
|
---|
| 4516 | &g_DisasVexMap1_66Range, // 0fh 2-byte opcodes
|
---|
| 4517 | &g_DisasVexMap2_66Range, // 0f38h 3-byte opcodes
|
---|
| 4518 | &g_DisasVexMap3_66Range, // 0f3ah 3-byte opcodes
|
---|
| 4519 | },
|
---|
| 4520 | /* f3h prefix: */
|
---|
| 4521 | {
|
---|
| 4522 | &g_DisasVexMapInvalidRange,
|
---|
| 4523 | &g_DisasVexMap1F3Range, // 0fh 2-byte opcodes
|
---|
| 4524 | &g_DisasVexMap2F3Range, // 0f38h 3-byte opcodes
|
---|
| 4525 | &g_DisasVexMap3F3Range, // 0f3ah 3-byte opcodes
|
---|
| 4526 | },
|
---|
| 4527 | /* f2h prefix: */
|
---|
| 4528 | {
|
---|
| 4529 | &g_DisasVexMapInvalidRange,
|
---|
| 4530 | &g_DisasVexMap1F2Range, // 0fh 2-byte opcodes
|
---|
| 4531 | &g_DisasVexMap2F2Range, // 0f38h 3-byte opcodes2
|
---|
| 4532 | &g_DisasVexMap3F2Range, // 0f3ah 3-byte opcodes
|
---|
| 4533 | }
|
---|
[53094] | 4534 | };
|
---|
| 4535 |
|
---|