mirror of https://github.com/x64dbg/zydis
Changed type of implicit memory operands to `ZYDIS_MEMOP_TYPE_MEM` instead of `ZYDIS_MEMOP_TYPE_INVALID`
This commit is contained in:
parent
6a8825ead2
commit
c6b3c5d242
|
@ -124,10 +124,20 @@ enum ZydisDecoderModes
|
||||||
* This mode is enabled by default.
|
* This mode is enabled by default.
|
||||||
*/
|
*/
|
||||||
ZYDIS_DECODER_MODE_TZCNT,
|
ZYDIS_DECODER_MODE_TZCNT,
|
||||||
|
/**
|
||||||
|
* @brief Enables the WBNOINVD mode.
|
||||||
|
*
|
||||||
|
* The `WBINVD` instruction is interpreted as `WBNOINVD` on ICL chips, if a `F3` prefix is
|
||||||
|
* used.
|
||||||
|
*
|
||||||
|
* This mode is disabled by default.
|
||||||
|
*/
|
||||||
|
ZYDIS_DECODER_MODE_WBNOINVD,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Maximum value of this enum.
|
* @brief Maximum value of this enum.
|
||||||
*/
|
*/
|
||||||
ZYDIS_DECODER_MODE_MAX_VALUE = ZYDIS_DECODER_MODE_TZCNT
|
ZYDIS_DECODER_MODE_MAX_VALUE = ZYDIS_DECODER_MODE_WBNOINVD
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------------------------------- */
|
||||||
|
|
|
@ -72,8 +72,7 @@ enum ZydisMemoryOperandTypes
|
||||||
ZYDIS_MEMOP_TYPE_AGEN,
|
ZYDIS_MEMOP_TYPE_AGEN,
|
||||||
/**
|
/**
|
||||||
* @brief A memory operand using `SIB` addressing form, where the index register is not used
|
* @brief A memory operand using `SIB` addressing form, where the index register is not used
|
||||||
* in address calculation and scale is ignored. No real memory-access is
|
* in address calculation and scale is ignored. No real memory-access is caused.
|
||||||
* caused.
|
|
||||||
*/
|
*/
|
||||||
ZYDIS_MEMOP_TYPE_MIB
|
ZYDIS_MEMOP_TYPE_MIB
|
||||||
};
|
};
|
||||||
|
@ -627,6 +626,11 @@ typedef ZydisU8 ZydisMaskMode;
|
||||||
enum ZydisMaskModes
|
enum ZydisMaskModes
|
||||||
{
|
{
|
||||||
ZYDIS_MASK_MODE_INVALID,
|
ZYDIS_MASK_MODE_INVALID,
|
||||||
|
|
||||||
|
// TODO: Add `ZYDIS_MASK_MODE_DISABLED` for for `EVEX`/`MVEX` instructions with `K0` mask
|
||||||
|
// TODO: Add `ZYDIS_MASK_MODE_CONTROL` and `ZYDIS_MASK_MODE_CONTROL_ZERO` as replacement for
|
||||||
|
// the `isControlMask` field
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The embedded mask register is used as a merge-mask. This is the default mode for
|
* @brief The embedded mask register is used as a merge-mask. This is the default mode for
|
||||||
* all EVEX/MVEX-instructions.
|
* all EVEX/MVEX-instructions.
|
||||||
|
|
|
@ -1632,6 +1632,7 @@ static void ZydisDecodeOperandImplicitMemory(ZydisDecoderContext* context,
|
||||||
};
|
};
|
||||||
|
|
||||||
operand->type = ZYDIS_OPERAND_TYPE_MEMORY;
|
operand->type = ZYDIS_OPERAND_TYPE_MEMORY;
|
||||||
|
operand->mem.type = ZYDIS_MEMOP_TYPE_MEM;
|
||||||
|
|
||||||
switch (definition->op.mem.base)
|
switch (definition->op.mem.base)
|
||||||
{
|
{
|
||||||
|
@ -4588,7 +4589,8 @@ ZydisStatus ZydisDecoderInit(ZydisDecoder* decoder, ZydisMachineMode machineMode
|
||||||
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_MPX
|
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_MPX
|
||||||
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_CET
|
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_CET
|
||||||
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_LZCNT
|
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_LZCNT
|
||||||
ZYDIS_TRUE // ZYDIS_DECODER_MODE_TZCNT
|
ZYDIS_TRUE , // ZYDIS_DECODER_MODE_TZCNT
|
||||||
|
ZYDIS_FALSE // ZYDIS_DECODER_MODE_WBNOINVD
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!decoder ||
|
if (!decoder ||
|
||||||
|
@ -4659,8 +4661,6 @@ ZydisStatus ZydisDecoderDecodeBuffer(const ZydisDecoder* decoder, const void* bu
|
||||||
ZYDIS_CHECK(ZydisCollectOptionalPrefixes(&context, instruction));
|
ZYDIS_CHECK(ZydisCollectOptionalPrefixes(&context, instruction));
|
||||||
ZYDIS_CHECK(ZydisDecodeInstruction(&context, instruction));
|
ZYDIS_CHECK(ZydisDecodeInstruction(&context, instruction));
|
||||||
|
|
||||||
// TODO: More EVEX UD conditions (page 81)
|
|
||||||
|
|
||||||
return ZYDIS_STATUS_SUCCESS;
|
return ZYDIS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue