diff --git a/include/Zydis/Internal/SharedData.h b/include/Zydis/Internal/SharedData.h index 2a5b3693..74d9f9c3 100644 --- a/include/Zydis/Internal/SharedData.h +++ b/include/Zydis/Internal/SharedData.h @@ -278,11 +278,12 @@ typedef enum ZydisRegisterConstraint_ ZYDIS_REG_CONSTRAINTS_MASK, ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_VSIB, + ZYDIS_REG_CONSTRAINTS_NO_REL, /** * @brief Maximum value of this enum. */ - ZYDIS_REG_CONSTRAINTS_MAX_VALUE = ZYDIS_REG_CONSTRAINTS_VSIB, + ZYDIS_REG_CONSTRAINTS_MAX_VALUE = ZYDIS_REG_CONSTRAINTS_NO_REL, /** * @brief The minimum number of bits required to represent all values of this enum. */ diff --git a/src/Decoder.c b/src/Decoder.c index 1c1808a4..70d32f22 100644 --- a/src/Decoder.c +++ b/src/Decoder.c @@ -1991,12 +1991,6 @@ static ZyanStatus ZydisDecodeOperands(ZydisDecoderContext* context, ZydisDecodeOperandMemory( context, instruction, &instruction->operands[i], ZYDIS_REGCLASS_INVALID)); instruction->operands[i].mem.type = ZYDIS_MEMOP_TYPE_MIB; - // Relative addressing is not allowed for this type of memory-operand - if ((instruction->operands[i].mem.base == ZYDIS_REGISTER_EIP) || - (instruction->operands[i].mem.base == ZYDIS_REGISTER_RIP)) - { - return ZYDIS_STATUS_DECODING_ERROR; - } break; default: break; @@ -4465,6 +4459,12 @@ static ZyanStatus ZydisCheckErrorConditions(ZydisDecoderContext* context, case ZYDIS_REG_CONSTRAINTS_VSIB: has_VSIB = ZYAN_TRUE; break; + case ZYDIS_REG_CONSTRAINTS_NO_REL: + if (instruction->raw.modrm.mod == 0 && instruction->raw.modrm.rm == 5) + { + return ZYDIS_STATUS_DECODING_ERROR; + } + break; default: ZYAN_UNREACHABLE; } diff --git a/src/Generated/InstructionDefinitions.inc b/src/Generated/InstructionDefinitions.inc index eddd2da5..6013ca11 100644 --- a/src/Generated/InstructionDefinitions.inc +++ b/src/Generated/InstructionDefinitions.inc @@ -120,8 +120,8 @@ const ZydisInstructionDefinitionLEGACY ISTR_DEFINITIONS_LEGACY[] = { ZYDIS_MNEMONIC_BNDCU ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16AB), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BNDCU ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16AD), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) }, { ZYDIS_MNEMONIC_BNDCU ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16AB), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, - { ZYDIS_MNEMONIC_BNDLDX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16AF), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, - { ZYDIS_MNEMONIC_BNDLDX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16B1), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, + { ZYDIS_MNEMONIC_BNDLDX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16AF), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NO_REL ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, + { ZYDIS_MNEMONIC_BNDLDX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16B1), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NO_REL ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BNDMK ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16B3), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BNDMK ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16B3), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BNDMOV ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16B5), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_BND ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) }, @@ -130,8 +130,8 @@ const ZydisInstructionDefinitionLEGACY ISTR_DEFINITIONS_LEGACY[] = { ZYDIS_MNEMONIC_BNDMOV ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16BB), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_BND ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) }, { ZYDIS_MNEMONIC_BNDMOV ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16BD), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BNDMOV ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16BF), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, - { ZYDIS_MNEMONIC_BNDSTX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C1), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, - { ZYDIS_MNEMONIC_BNDSTX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C3), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, + { ZYDIS_MNEMONIC_BNDSTX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C1), 0, 1 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NO_REL ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, + { ZYDIS_MNEMONIC_BNDSTX ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C3), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_SET_MPX) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_MPX) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_BND, ZYDIS_REG_CONSTRAINTS_NO_REL ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BOUND ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C5), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_INTERRUPT) ZYDIS_NOTMIN(ZYDIS_ISA_SET_I186) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_BASE) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_NONE, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BOUND ZYDIS_NOTMIN(2) ZYDIS_NOTMIN(0x16C7), 0, 0 ZYDIS_NOTMIN(0x0), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_INTERRUPT) ZYDIS_NOTMIN(ZYDIS_ISA_SET_I186) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_BASE) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_NONE, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_TRUE) }, { ZYDIS_MNEMONIC_BSF ZYDIS_NOTMIN(3) ZYDIS_NOTMIN(0xBD8), 0, 0 ZYDIS_NOTMIN(0x46), ZYAN_FALSE ZYDIS_NOTMIN(ZYDIS_CATEGORY_BITBYTE) ZYDIS_NOTMIN(ZYDIS_ISA_SET_I386) ZYDIS_NOTMIN(ZYDIS_ISA_EXT_BASE) ZYDIS_NOTMIN(ZYDIS_BRANCH_TYPE_NONE) ZYDIS_NOTMIN(ZYDIS_EXCEPTION_CLASS_NONE), ZYDIS_REG_CONSTRAINTS_NONE, ZYDIS_REG_CONSTRAINTS_NONE ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYDIS_RW_ACTION_NONE) ZYDIS_NOTMIN(ZYAN_FALSE), ZYAN_FALSE ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) ZYDIS_NOTMIN(ZYAN_FALSE) },