#ifndef _X86_ZYDIS_H_
#define _X86_ZYDIS_H_
#include <stdint.h>
#define ZYDIS_DECODER_MODE_MAX_VALUE 8
typedef uint32_t ZyanStatus;
#define ZYAN_SUCCESS(status) \
(!((status) & 0x80000000))
#define ZYAN_FAILED(status) \
((status) & 0x80000000)
#define ZYAN_CHECK(status) \
do \
{ \
const ZyanStatus status_047620348 = (status); \
if (!ZYAN_SUCCESS(status_047620348)) \
{ \
return status_047620348; \
} \
} while (0)
* @brief Checks, if the bit at index `b` is required to present the ordinal value `n`.
*
* @param n The ordinal value.
* @param b The bit index.
*
* @return `ZYAN_TRUE`, if the bit at index `b` is required to present the ordinal value `n` or
* `ZYAN_FALSE`, if not.
*
* Note that this macro always returns `ZYAN_FALSE` for `n == 0`.
*/
#define ZYAN_NEEDS_BIT(n, b) (((unsigned long)(n) >> (b)) > 0)
* @brief Returns the number of bits required to represent the ordinal value `n`.
*
* @param n The ordinal value.
*
* @return The number of bits required to represent the ordinal value `n`.
*
* Note that this macro returns `0` for `n == 0`.
*/
#define ZYAN_BITS_TO_REPRESENT(n) \
( \
ZYAN_NEEDS_BIT(n, 0) + ZYAN_NEEDS_BIT(n, 1) + \
ZYAN_NEEDS_BIT(n, 2) + ZYAN_NEEDS_BIT(n, 3) + \
ZYAN_NEEDS_BIT(n, 4) + ZYAN_NEEDS_BIT(n, 5) + \
ZYAN_NEEDS_BIT(n, 6) + ZYAN_NEEDS_BIT(n, 7) + \
ZYAN_NEEDS_BIT(n, 8) + ZYAN_NEEDS_BIT(n, 9) + \
ZYAN_NEEDS_BIT(n, 10) + ZYAN_NEEDS_BIT(n, 11) + \
ZYAN_NEEDS_BIT(n, 12) + ZYAN_NEEDS_BIT(n, 13) + \
ZYAN_NEEDS_BIT(n, 14) + ZYAN_NEEDS_BIT(n, 15) + \
ZYAN_NEEDS_BIT(n, 16) + ZYAN_NEEDS_BIT(n, 17) + \
ZYAN_NEEDS_BIT(n, 18) + ZYAN_NEEDS_BIT(n, 19) + \
ZYAN_NEEDS_BIT(n, 20) + ZYAN_NEEDS_BIT(n, 21) + \
ZYAN_NEEDS_BIT(n, 22) + ZYAN_NEEDS_BIT(n, 23) + \
ZYAN_NEEDS_BIT(n, 24) + ZYAN_NEEDS_BIT(n, 25) + \
ZYAN_NEEDS_BIT(n, 26) + ZYAN_NEEDS_BIT(n, 27) + \
ZYAN_NEEDS_BIT(n, 28) + ZYAN_NEEDS_BIT(n, 29) + \
ZYAN_NEEDS_BIT(n, 30) + ZYAN_NEEDS_BIT(n, 31) \
)
typedef size_t ZyanUSize;
typedef uint8_t ZyanU8;
typedef uint16_t ZyanU16;
typedef uint32_t ZyanU32;
typedef uint64_t ZyanU64;
typedef int32_t ZyanI32;
typedef int64_t ZyanI64;
typedef uint8_t ZyanBool;
#define ZYDIS_MAX_INSTRUCTION_LENGTH 15
#define ZYDIS_MAX_OPERAND_COUNT 10
struct ZyanAllocator_;
* @brief Defines the `ZyanAllocatorAllocate` function prototype.
*
* @param allocator A pointer to the `ZyanAllocator` instance.
* @param p Receives a pointer to the first memory block sufficient to hold an
* array of `n` elements with a size of `element_size`.
* @param element_size The size of a single element.
* @param n The number of elements to allocate storage for.
*
* @return A zyan status code.
*
* This prototype is used for the `allocate()` and `reallocate()` functions.
*
* The result of the `reallocate()` function is undefined, if `p` does not point to a memory block
* previously obtained by `(re-)allocate()`.
*/
typedef ZyanStatus (*ZyanAllocatorAllocate)(struct ZyanAllocator_* allocator, void** p,
ZyanUSize element_size, ZyanUSize n);
* @brief Defines the `ZyanAllocatorDeallocate` function prototype.
*
* @param allocator A pointer to the `ZyanAllocator` instance.
* @param p The pointer obtained from `(re-)allocate()`.
* @param element_size The size of a single element.
* @param n The number of elements earlier passed to `(re-)allocate()`.
*
* @return A zyan status code.
*/
typedef ZyanStatus (*ZyanAllocatorDeallocate)(struct ZyanAllocator_* allocator, void* p,
ZyanUSize element_size, ZyanUSize n);
* @brief Defines the `ZyanAllocator` struct.
*
* This is the base class for all custom allocator implementations.
*
* All fields in this struct should be considered as "private". Any changes may lead to unexpected
* behavior.
*/
typedef struct ZyanAllocator_
{
* @brief The allocate function.
*/
ZyanAllocatorAllocate allocate;
* @brief The reallocate function.
*/
ZyanAllocatorAllocate reallocate;
* @brief The deallocate function.
*/
ZyanAllocatorDeallocate deallocate;
} ZyanAllocator;
typedef struct ZyanVector_
{
* @brief The memory allocator.
*/
ZyanAllocator* allocator;
* @brief The growth factor.
*/
float growth_factor;
* @brief The shrink threshold.
*/
float shrink_threshold;
* @brief The current number of elements in the vector.
*/
ZyanUSize size;
* @brief The maximum capacity (number of elements).
*/
ZyanUSize capacity;
* @brief The size of a single element in bytes.
*/
ZyanUSize element_size;
* @brief The data pointer.
*/
void* data;
} ZyanVector;
typedef ZyanU8 ZyanStringFlags;
* @brief Defines the `ZyanString` struct.
*
* The `ZyanString` type is implemented as a size-prefixed string - which allows for a lot of
* performance optimizations.
* Nevertheless null-termination is guaranteed at all times to provide maximum compatibility with
* default C-style strings (use `ZyanStringGetData` to access the C-style string).
*
* All fields in this struct should be considered as "private". Any changes may lead to unexpected
* behavior.
*/
typedef struct ZyanString_
{
* @brief String flags.
*/
ZyanStringFlags flags;
* @brief The vector that contains the actual string.
*/
ZyanVector vector;
} ZyanString;
* @brief Defines the `ZyanStringView` struct.
*
* The `ZyanStringView` type provides a view inside a string (`ZyanString` instances, null-
* terminated C-style strings, or even not-null-terminated custom strings). A view is immutable
* by design and can't be directly converted to a C-style string.
*
* Views might become invalid (e.g. pointing to invalid memory), if the underlying string gets
* destroyed or resized.
*
* The `ZYAN_STRING_TO_VIEW` macro can be used to cast a `ZyanString` to a `ZyanStringView` pointer
* without any runtime overhead.
* Casting a view to a normal string is not supported and will lead to unexpected behavior (use
* `ZyanStringDuplicate` to create a deep-copy instead).
*
* All fields in this struct should be considered as "private". Any changes may lead to unexpected
* behavior.
*/
typedef struct ZyanStringView_
{
* @brief The string data.
*
* The view internally re-uses the normal string struct to allow casts without any runtime
* overhead.
*/
ZyanString string;
} ZyanStringView;
typedef enum ZydisMachineMode_
{
* @brief 64 bit mode.
*/
ZYDIS_MACHINE_MODE_LONG_64,
* @brief 32 bit protected mode.
*/
ZYDIS_MACHINE_MODE_LONG_COMPAT_32,
* @brief 16 bit protected mode.
*/
ZYDIS_MACHINE_MODE_LONG_COMPAT_16,
* @brief 32 bit protected mode.
*/
ZYDIS_MACHINE_MODE_LEGACY_32,
* @brief 16 bit protected mode.
*/
ZYDIS_MACHINE_MODE_LEGACY_16,
* @brief 16 bit real mode.
*/
ZYDIS_MACHINE_MODE_REAL_16,
* @brief Maximum value of this enum.
*/
ZYDIS_MACHINE_MODE_MAX_VALUE = ZYDIS_MACHINE_MODE_REAL_16,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_MACHINE_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MACHINE_MODE_MAX_VALUE)
} ZydisMachineMode;
typedef enum ZydisAddressWidth_
{
ZYDIS_ADDRESS_WIDTH_16,
ZYDIS_ADDRESS_WIDTH_32,
ZYDIS_ADDRESS_WIDTH_64,
* @brief Maximum value of this enum.
*/
ZYDIS_ADDRESS_WIDTH_MAX_VALUE = ZYDIS_ADDRESS_WIDTH_64,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_ADDRESS_WIDTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ADDRESS_WIDTH_MAX_VALUE)
} ZydisAddressWidth;
typedef struct ZydisDecoder_
{
* @brief The machine mode.
*/
ZydisMachineMode machine_mode;
* @brief The address width.
*/
ZydisAddressWidth address_width;
* @brief The decoder mode array.
*/
uint8_t decoder_mode[ZYDIS_DECODER_MODE_MAX_VALUE + 1];
} ZydisDecoder;
typedef enum ZydisFormatterStyle_
{
* @brief Generates `AT&T`-style disassembly.
*/
ZYDIS_FORMATTER_STYLE_ATT,
* @brief Generates `Intel`-style disassembly.
*/
ZYDIS_FORMATTER_STYLE_INTEL,
* @brief Generates `MASM`-style disassembly that is directly accepted as input for the
* `MASM` assembler.
*
* The runtime-address is ignored in this mode.
*/
ZYDIS_FORMATTER_STYLE_INTEL_MASM,
* @brief Maximum value of this enum.
*/
ZYDIS_FORMATTER_STYLE_MAX_VALUE = ZYDIS_FORMATTER_STYLE_INTEL_MASM,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_FORMATTER_STYLE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_STYLE_MAX_VALUE)
} ZydisFormatterStyle;
* @brief Defines the `ZydisRegister` enum.
*/
typedef enum ZydisRegister_
{
ZYDIS_REGISTER_NONE,
ZYDIS_REGISTER_AL,
ZYDIS_REGISTER_CL,
ZYDIS_REGISTER_DL,
ZYDIS_REGISTER_BL,
ZYDIS_REGISTER_AH,
ZYDIS_REGISTER_CH,
ZYDIS_REGISTER_DH,
ZYDIS_REGISTER_BH,
ZYDIS_REGISTER_SPL,
ZYDIS_REGISTER_BPL,
ZYDIS_REGISTER_SIL,
ZYDIS_REGISTER_DIL,
ZYDIS_REGISTER_R8B,
ZYDIS_REGISTER_R9B,
ZYDIS_REGISTER_R10B,
ZYDIS_REGISTER_R11B,
ZYDIS_REGISTER_R12B,
ZYDIS_REGISTER_R13B,
ZYDIS_REGISTER_R14B,
ZYDIS_REGISTER_R15B,
ZYDIS_REGISTER_AX,
ZYDIS_REGISTER_CX,
ZYDIS_REGISTER_DX,
ZYDIS_REGISTER_BX,
ZYDIS_REGISTER_SP,
ZYDIS_REGISTER_BP,
ZYDIS_REGISTER_SI,
ZYDIS_REGISTER_DI,
ZYDIS_REGISTER_R8W,
ZYDIS_REGISTER_R9W,
ZYDIS_REGISTER_R10W,
ZYDIS_REGISTER_R11W,
ZYDIS_REGISTER_R12W,
ZYDIS_REGISTER_R13W,
ZYDIS_REGISTER_R14W,
ZYDIS_REGISTER_R15W,
ZYDIS_REGISTER_EAX,
ZYDIS_REGISTER_ECX,
ZYDIS_REGISTER_EDX,
ZYDIS_REGISTER_EBX,
ZYDIS_REGISTER_ESP,
ZYDIS_REGISTER_EBP,
ZYDIS_REGISTER_ESI,
ZYDIS_REGISTER_EDI,
ZYDIS_REGISTER_R8D,
ZYDIS_REGISTER_R9D,
ZYDIS_REGISTER_R10D,
ZYDIS_REGISTER_R11D,
ZYDIS_REGISTER_R12D,
ZYDIS_REGISTER_R13D,
ZYDIS_REGISTER_R14D,
ZYDIS_REGISTER_R15D,
ZYDIS_REGISTER_RAX,
ZYDIS_REGISTER_RCX,
ZYDIS_REGISTER_RDX,
ZYDIS_REGISTER_RBX,
ZYDIS_REGISTER_RSP,
ZYDIS_REGISTER_RBP,
ZYDIS_REGISTER_RSI,
ZYDIS_REGISTER_RDI,
ZYDIS_REGISTER_R8,
ZYDIS_REGISTER_R9,
ZYDIS_REGISTER_R10,
ZYDIS_REGISTER_R11,
ZYDIS_REGISTER_R12,
ZYDIS_REGISTER_R13,
ZYDIS_REGISTER_R14,
ZYDIS_REGISTER_R15,
ZYDIS_REGISTER_ST0,
ZYDIS_REGISTER_ST1,
ZYDIS_REGISTER_ST2,
ZYDIS_REGISTER_ST3,
ZYDIS_REGISTER_ST4,
ZYDIS_REGISTER_ST5,
ZYDIS_REGISTER_ST6,
ZYDIS_REGISTER_ST7,
ZYDIS_REGISTER_X87CONTROL,
ZYDIS_REGISTER_X87STATUS,
ZYDIS_REGISTER_X87TAG,
ZYDIS_REGISTER_MM0,
ZYDIS_REGISTER_MM1,
ZYDIS_REGISTER_MM2,
ZYDIS_REGISTER_MM3,
ZYDIS_REGISTER_MM4,
ZYDIS_REGISTER_MM5,
ZYDIS_REGISTER_MM6,
ZYDIS_REGISTER_MM7,
ZYDIS_REGISTER_XMM0,
ZYDIS_REGISTER_XMM1,
ZYDIS_REGISTER_XMM2,
ZYDIS_REGISTER_XMM3,
ZYDIS_REGISTER_XMM4,
ZYDIS_REGISTER_XMM5,
ZYDIS_REGISTER_XMM6,
ZYDIS_REGISTER_XMM7,
ZYDIS_REGISTER_XMM8,
ZYDIS_REGISTER_XMM9,
ZYDIS_REGISTER_XMM10,
ZYDIS_REGISTER_XMM11,
ZYDIS_REGISTER_XMM12,
ZYDIS_REGISTER_XMM13,
ZYDIS_REGISTER_XMM14,
ZYDIS_REGISTER_XMM15,
ZYDIS_REGISTER_XMM16,
ZYDIS_REGISTER_XMM17,
ZYDIS_REGISTER_XMM18,
ZYDIS_REGISTER_XMM19,
ZYDIS_REGISTER_XMM20,
ZYDIS_REGISTER_XMM21,
ZYDIS_REGISTER_XMM22,
ZYDIS_REGISTER_XMM23,
ZYDIS_REGISTER_XMM24,
ZYDIS_REGISTER_XMM25,
ZYDIS_REGISTER_XMM26,
ZYDIS_REGISTER_XMM27,
ZYDIS_REGISTER_XMM28,
ZYDIS_REGISTER_XMM29,
ZYDIS_REGISTER_XMM30,
ZYDIS_REGISTER_XMM31,
ZYDIS_REGISTER_YMM0,
ZYDIS_REGISTER_YMM1,
ZYDIS_REGISTER_YMM2,
ZYDIS_REGISTER_YMM3,
ZYDIS_REGISTER_YMM4,
ZYDIS_REGISTER_YMM5,
ZYDIS_REGISTER_YMM6,
ZYDIS_REGISTER_YMM7,
ZYDIS_REGISTER_YMM8,
ZYDIS_REGISTER_YMM9,
ZYDIS_REGISTER_YMM10,
ZYDIS_REGISTER_YMM11,
ZYDIS_REGISTER_YMM12,
ZYDIS_REGISTER_YMM13,
ZYDIS_REGISTER_YMM14,
ZYDIS_REGISTER_YMM15,
ZYDIS_REGISTER_YMM16,
ZYDIS_REGISTER_YMM17,
ZYDIS_REGISTER_YMM18,
ZYDIS_REGISTER_YMM19,
ZYDIS_REGISTER_YMM20,
ZYDIS_REGISTER_YMM21,
ZYDIS_REGISTER_YMM22,
ZYDIS_REGISTER_YMM23,
ZYDIS_REGISTER_YMM24,
ZYDIS_REGISTER_YMM25,
ZYDIS_REGISTER_YMM26,
ZYDIS_REGISTER_YMM27,
ZYDIS_REGISTER_YMM28,
ZYDIS_REGISTER_YMM29,
ZYDIS_REGISTER_YMM30,
ZYDIS_REGISTER_YMM31,
ZYDIS_REGISTER_ZMM0,
ZYDIS_REGISTER_ZMM1,
ZYDIS_REGISTER_ZMM2,
ZYDIS_REGISTER_ZMM3,
ZYDIS_REGISTER_ZMM4,
ZYDIS_REGISTER_ZMM5,
ZYDIS_REGISTER_ZMM6,
ZYDIS_REGISTER_ZMM7,
ZYDIS_REGISTER_ZMM8,
ZYDIS_REGISTER_ZMM9,
ZYDIS_REGISTER_ZMM10,
ZYDIS_REGISTER_ZMM11,
ZYDIS_REGISTER_ZMM12,
ZYDIS_REGISTER_ZMM13,
ZYDIS_REGISTER_ZMM14,
ZYDIS_REGISTER_ZMM15,
ZYDIS_REGISTER_ZMM16,
ZYDIS_REGISTER_ZMM17,
ZYDIS_REGISTER_ZMM18,
ZYDIS_REGISTER_ZMM19,
ZYDIS_REGISTER_ZMM20,
ZYDIS_REGISTER_ZMM21,
ZYDIS_REGISTER_ZMM22,
ZYDIS_REGISTER_ZMM23,
ZYDIS_REGISTER_ZMM24,
ZYDIS_REGISTER_ZMM25,
ZYDIS_REGISTER_ZMM26,
ZYDIS_REGISTER_ZMM27,
ZYDIS_REGISTER_ZMM28,
ZYDIS_REGISTER_ZMM29,
ZYDIS_REGISTER_ZMM30,
ZYDIS_REGISTER_ZMM31,
ZYDIS_REGISTER_FLAGS,
ZYDIS_REGISTER_EFLAGS,
ZYDIS_REGISTER_RFLAGS,
ZYDIS_REGISTER_IP,
ZYDIS_REGISTER_EIP,
ZYDIS_REGISTER_RIP,
ZYDIS_REGISTER_ES,
ZYDIS_REGISTER_CS,
ZYDIS_REGISTER_SS,
ZYDIS_REGISTER_DS,
ZYDIS_REGISTER_FS,
ZYDIS_REGISTER_GS,
ZYDIS_REGISTER_GDTR,
ZYDIS_REGISTER_LDTR,
ZYDIS_REGISTER_IDTR,
ZYDIS_REGISTER_TR,
ZYDIS_REGISTER_TR0,
ZYDIS_REGISTER_TR1,
ZYDIS_REGISTER_TR2,
ZYDIS_REGISTER_TR3,
ZYDIS_REGISTER_TR4,
ZYDIS_REGISTER_TR5,
ZYDIS_REGISTER_TR6,
ZYDIS_REGISTER_TR7,
ZYDIS_REGISTER_CR0,
ZYDIS_REGISTER_CR1,
ZYDIS_REGISTER_CR2,
ZYDIS_REGISTER_CR3,
ZYDIS_REGISTER_CR4,
ZYDIS_REGISTER_CR5,
ZYDIS_REGISTER_CR6,
ZYDIS_REGISTER_CR7,
ZYDIS_REGISTER_CR8,
ZYDIS_REGISTER_CR9,
ZYDIS_REGISTER_CR10,
ZYDIS_REGISTER_CR11,
ZYDIS_REGISTER_CR12,
ZYDIS_REGISTER_CR13,
ZYDIS_REGISTER_CR14,
ZYDIS_REGISTER_CR15,
ZYDIS_REGISTER_DR0,
ZYDIS_REGISTER_DR1,
ZYDIS_REGISTER_DR2,
ZYDIS_REGISTER_DR3,
ZYDIS_REGISTER_DR4,
ZYDIS_REGISTER_DR5,
ZYDIS_REGISTER_DR6,
ZYDIS_REGISTER_DR7,
ZYDIS_REGISTER_DR8,
ZYDIS_REGISTER_DR9,
ZYDIS_REGISTER_DR10,
ZYDIS_REGISTER_DR11,
ZYDIS_REGISTER_DR12,
ZYDIS_REGISTER_DR13,
ZYDIS_REGISTER_DR14,
ZYDIS_REGISTER_DR15,
ZYDIS_REGISTER_K0,
ZYDIS_REGISTER_K1,
ZYDIS_REGISTER_K2,
ZYDIS_REGISTER_K3,
ZYDIS_REGISTER_K4,
ZYDIS_REGISTER_K5,
ZYDIS_REGISTER_K6,
ZYDIS_REGISTER_K7,
ZYDIS_REGISTER_BND0,
ZYDIS_REGISTER_BND1,
ZYDIS_REGISTER_BND2,
ZYDIS_REGISTER_BND3,
ZYDIS_REGISTER_BNDCFG,
ZYDIS_REGISTER_BNDSTATUS,
ZYDIS_REGISTER_MXCSR,
ZYDIS_REGISTER_PKRU,
ZYDIS_REGISTER_XCR0,
* @brief Maximum value of this enum.
*/
ZYDIS_REGISTER_MAX_VALUE = ZYDIS_REGISTER_XCR0,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_REGISTER_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_REGISTER_MAX_VALUE)
} ZydisRegister;
typedef enum ZydisNumericBase_
{
* @brief Decimal system.
*/
ZYDIS_NUMERIC_BASE_DEC,
* @brief Hexadecimal system.
*/
ZYDIS_NUMERIC_BASE_HEX,
* @brief Maximum value of this enum.
*/
ZYDIS_NUMERIC_BASE_MAX_VALUE = ZYDIS_NUMERIC_BASE_HEX,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_NUMERIC_BASE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_NUMERIC_BASE_MAX_VALUE)
} ZydisNumericBase;
* @brief Defines the `ZydisSignedness` enum.
*/
typedef enum ZydisSignedness_
{
* @brief Automatically choose the most suitable mode based on the operands
* `ZydisDecodedOperand.imm.is_signed` attribute.
*/
ZYDIS_SIGNEDNESS_AUTO,
* @brief Force signed values.
*/
ZYDIS_SIGNEDNESS_SIGNED,
* @brief Force unsigned values.
*/
ZYDIS_SIGNEDNESS_UNSIGNED,
* @brief Maximum value of this enum.
*/
ZYDIS_SIGNEDNESS_MAX_VALUE = ZYDIS_SIGNEDNESS_UNSIGNED,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_SIGNEDNESS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SIGNEDNESS_MAX_VALUE)
} ZydisSignedness;
* @brief Defines the `ZydisDecorator` enum.
*/
typedef enum ZydisDecorator_
{
ZYDIS_DECORATOR_INVALID,
* @brief The embedded-mask decorator.
*/
ZYDIS_DECORATOR_MASK,
* @brief The broadcast decorator.
*/
ZYDIS_DECORATOR_BC,
* @brief The rounding-control decorator.
*/
ZYDIS_DECORATOR_RC,
* @brief The suppress-all-exceptions decorator.
*/
ZYDIS_DECORATOR_SAE,
* @brief The register-swizzle decorator.
*/
ZYDIS_DECORATOR_SWIZZLE,
* @brief The conversion decorator.
*/
ZYDIS_DECORATOR_CONVERSION,
* @brief The eviction-hint decorator.
*/
ZYDIS_DECORATOR_EH,
* @brief Maximum value of this enum.
*/
ZYDIS_DECORATOR_MAX_VALUE = ZYDIS_DECORATOR_EH,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_DECORATOR_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_DECORATOR_MAX_VALUE)
} ZydisDecorator;
* @brief Defines the `ZydisPadding` enum.
*/
typedef enum ZydisPadding_
{
* @brief Disables padding.
*/
ZYDIS_PADDING_DISABLED = 0,
* @brief Padds the value to the current stack-width for addresses, or to the operand-width
* for immediate values (hexadecimal only).
*/
ZYDIS_PADDING_AUTO = (-1),
* @brief Maximum value of this enum.
*/
ZYDIS_PADDING_MAX_VALUE = ZYDIS_PADDING_AUTO,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_PADDING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_PADDING_MAX_VALUE)
} ZydisPadding;
typedef struct ZydisFormatter_ ZydisFormatter;
typedef struct ZydisFormatterBuffer_ ZydisFormatterBuffer;
typedef struct ZydisFormatterContext_ ZydisFormatterContext;
typedef ZyanStatus (*ZydisFormatterFunc)(const ZydisFormatter* formatter,
ZydisFormatterBuffer* buffer, ZydisFormatterContext* context);
typedef ZyanStatus (*ZydisFormatterRegisterFunc)(const ZydisFormatter* formatter,
ZydisFormatterBuffer* buffer, ZydisFormatterContext* context, ZydisRegister reg);
typedef ZyanStatus (*ZydisFormatterDecoratorFunc)(const ZydisFormatter* formatter,
ZydisFormatterBuffer* buffer, ZydisFormatterContext* context, ZydisDecorator decorator);
typedef struct ZydisFormatter_
{
* @brief The formatter style.
*/
ZydisFormatterStyle style;
* @brief The `ZYDIS_FORMATTER_PROP_FORCE_SIZE` property.
*/
uint8_t force_memory_size;
* @brief The `ZYDIS_FORMATTER_PROP_FORCE_SEGMENT` property.
*/
uint8_t force_memory_segment;
* @brief The `ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES` property.
*/
uint8_t force_relative_branches;
* @brief The `ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL` property.
*/
uint8_t force_relative_riprel;
* @brief The `ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE` property.
*/
uint8_t print_branch_size;
* @brief The `ZYDIS_FORMATTER_DETAILED_PREFIXES` property.
*/
uint8_t detailed_prefixes;
* @brief The `ZYDIS_FORMATTER_ADDR_BASE` property.
*/
ZydisNumericBase addr_base;
* @brief The `ZYDIS_FORMATTER_ADDR_SIGNEDNESS` property.
*/
ZydisSignedness addr_signedness;
* @brief The `ZYDIS_FORMATTER_ADDR_PADDING_ABSOLUTE` property.
*/
ZydisPadding addr_padding_absolute;
* @brief The `ZYDIS_FORMATTER_ADDR_PADDING_RELATIVE` property.
*/
ZydisPadding addr_padding_relative;
* @brief The `ZYDIS_FORMATTER_DISP_BASE` property.
*/
ZydisNumericBase disp_base;
* @brief The `ZYDIS_FORMATTER_DISP_SIGNEDNESS` property.
*/
ZydisSignedness disp_signedness;
* @brief The `ZYDIS_FORMATTER_DISP_PADDING` property.
*/
ZydisPadding disp_padding;
* @brief The `ZYDIS_FORMATTER_IMM_BASE` property.
*/
ZydisNumericBase imm_base;
* @brief The `ZYDIS_FORMATTER_IMM_SIGNEDNESS` property.
*/
ZydisSignedness imm_signedness;
* @brief The `ZYDIS_FORMATTER_IMM_PADDING` property.
*/
ZydisPadding imm_padding;
* @brief The `ZYDIS_FORMATTER_UPPERCASE_PREFIXES` property.
*/
int32_t case_prefixes;
* @brief The `ZYDIS_FORMATTER_UPPERCASE_MNEMONIC` property.
*/
int32_t case_mnemonic;
* @brief The `ZYDIS_FORMATTER_UPPERCASE_REGISTERS` property.
*/
int32_t case_registers;
* @brief The `ZYDIS_FORMATTER_UPPERCASE_TYPECASTS` property.
*/
int32_t case_typecasts;
* @brief The `ZYDIS_FORMATTER_UPPERCASE_DECORATORS` property.
*/
int32_t case_decorators;
* @brief The `ZYDIS_FORMATTER_HEX_UPPERCASE` property.
*/
uint8_t hex_uppercase;
* @brief The number formats for all numeric bases.
*
* Index 0 = prefix
* Index 1 = suffix
*/
struct
{
* @brief A pointer to the `ZyanStringView` to use as prefix/suffix.
*/
const ZyanStringView* string;
* @brief The `ZyanStringView` to use as prefix/suffix
*/
ZyanStringView string_data;
* @brief The actual string data.
*/
char buffer[11];
} number_format[ZYDIS_NUMERIC_BASE_MAX_VALUE + 1][2];
* @brief The `ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION` function.
*/
ZydisFormatterFunc func_pre_instruction;
* @brief The `ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION` function.
*/
ZydisFormatterFunc func_post_instruction;
* @brief The `ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION` function.
*/
ZydisFormatterFunc func_format_instruction;
* @brief The `ZYDIS_FORMATTER_FUNC_PRE_OPERAND` function.
*/
ZydisFormatterFunc func_pre_operand;
* @brief The `ZYDIS_FORMATTER_FUNC_POST_OPERAND` function.
*/
ZydisFormatterFunc func_post_operand;
* @brief The `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG` function.
*/
ZydisFormatterFunc func_format_operand_reg;
* @brief The `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM` function.
*/
ZydisFormatterFunc func_format_operand_mem;
* @brief The `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR` function.
*/
ZydisFormatterFunc func_format_operand_ptr;
* @brief The `ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM` function.
*/
ZydisFormatterFunc func_format_operand_imm;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC function.
*/
ZydisFormatterFunc func_print_mnemonic;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_REGISTER` function.
*/
ZydisFormatterRegisterFunc func_print_register;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS` function.
*/
ZydisFormatterFunc func_print_address_abs;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL` function.
*/
ZydisFormatterFunc func_print_address_rel;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_DISP` function.
*/
ZydisFormatterFunc func_print_disp;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_IMM` function.
*/
ZydisFormatterFunc func_print_imm;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST` function.
*/
ZydisFormatterFunc func_print_typecast;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT` function.
*/
ZydisFormatterFunc func_print_segment;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES` function.
*/
ZydisFormatterFunc func_print_prefixes;
* @brief The `ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR` function.
*/
ZydisFormatterDecoratorFunc func_print_decorator;
uint32_t padding[20];
} ZydisFormatter;
* @brief Defines the `ZydisMnemonic` enum.
*/
typedef enum ZydisMnemonic_
{
ZYDIS_MNEMONIC_INVALID,
ZYDIS_MNEMONIC_AAA,
ZYDIS_MNEMONIC_AAD,
ZYDIS_MNEMONIC_AAM,
ZYDIS_MNEMONIC_AAS,
ZYDIS_MNEMONIC_ADC,
ZYDIS_MNEMONIC_ADCX,
ZYDIS_MNEMONIC_ADD,
ZYDIS_MNEMONIC_ADDPD,
ZYDIS_MNEMONIC_ADDPS,
ZYDIS_MNEMONIC_ADDSD,
ZYDIS_MNEMONIC_ADDSS,
ZYDIS_MNEMONIC_ADDSUBPD,
ZYDIS_MNEMONIC_ADDSUBPS,
ZYDIS_MNEMONIC_ADOX,
ZYDIS_MNEMONIC_AESDEC,
ZYDIS_MNEMONIC_AESDECLAST,
ZYDIS_MNEMONIC_AESENC,
ZYDIS_MNEMONIC_AESENCLAST,
ZYDIS_MNEMONIC_AESIMC,
ZYDIS_MNEMONIC_AESKEYGENASSIST,
ZYDIS_MNEMONIC_AND,
ZYDIS_MNEMONIC_ANDN,
ZYDIS_MNEMONIC_ANDNPD,
ZYDIS_MNEMONIC_ANDNPS,
ZYDIS_MNEMONIC_ANDPD,
ZYDIS_MNEMONIC_ANDPS,
ZYDIS_MNEMONIC_ARPL,
ZYDIS_MNEMONIC_BEXTR,
ZYDIS_MNEMONIC_BLCFILL,
ZYDIS_MNEMONIC_BLCI,
ZYDIS_MNEMONIC_BLCIC,
ZYDIS_MNEMONIC_BLCMSK,
ZYDIS_MNEMONIC_BLCS,
ZYDIS_MNEMONIC_BLENDPD,
ZYDIS_MNEMONIC_BLENDPS,
ZYDIS_MNEMONIC_BLENDVPD,
ZYDIS_MNEMONIC_BLENDVPS,
ZYDIS_MNEMONIC_BLSFILL,
ZYDIS_MNEMONIC_BLSI,
ZYDIS_MNEMONIC_BLSIC,
ZYDIS_MNEMONIC_BLSMSK,
ZYDIS_MNEMONIC_BLSR,
ZYDIS_MNEMONIC_BNDCL,
ZYDIS_MNEMONIC_BNDCN,
ZYDIS_MNEMONIC_BNDCU,
ZYDIS_MNEMONIC_BNDLDX,
ZYDIS_MNEMONIC_BNDMK,
ZYDIS_MNEMONIC_BNDMOV,
ZYDIS_MNEMONIC_BNDSTX,
ZYDIS_MNEMONIC_BOUND,
ZYDIS_MNEMONIC_BSF,
ZYDIS_MNEMONIC_BSR,
ZYDIS_MNEMONIC_BSWAP,
ZYDIS_MNEMONIC_BT,
ZYDIS_MNEMONIC_BTC,
ZYDIS_MNEMONIC_BTR,
ZYDIS_MNEMONIC_BTS,
ZYDIS_MNEMONIC_BZHI,
ZYDIS_MNEMONIC_CALL,
ZYDIS_MNEMONIC_CBW,
ZYDIS_MNEMONIC_CDQ,
ZYDIS_MNEMONIC_CDQE,
ZYDIS_MNEMONIC_CLAC,
ZYDIS_MNEMONIC_CLC,
ZYDIS_MNEMONIC_CLD,
ZYDIS_MNEMONIC_CLDEMOTE,
ZYDIS_MNEMONIC_CLEVICT0,
ZYDIS_MNEMONIC_CLEVICT1,
ZYDIS_MNEMONIC_CLFLUSH,
ZYDIS_MNEMONIC_CLFLUSHOPT,
ZYDIS_MNEMONIC_CLGI,
ZYDIS_MNEMONIC_CLI,
ZYDIS_MNEMONIC_CLRSSBSY,
ZYDIS_MNEMONIC_CLTS,
ZYDIS_MNEMONIC_CLWB,
ZYDIS_MNEMONIC_CLZERO,
ZYDIS_MNEMONIC_CMC,
ZYDIS_MNEMONIC_CMOVB,
ZYDIS_MNEMONIC_CMOVBE,
ZYDIS_MNEMONIC_CMOVL,
ZYDIS_MNEMONIC_CMOVLE,
ZYDIS_MNEMONIC_CMOVNB,
ZYDIS_MNEMONIC_CMOVNBE,
ZYDIS_MNEMONIC_CMOVNL,
ZYDIS_MNEMONIC_CMOVNLE,
ZYDIS_MNEMONIC_CMOVNO,
ZYDIS_MNEMONIC_CMOVNP,
ZYDIS_MNEMONIC_CMOVNS,
ZYDIS_MNEMONIC_CMOVNZ,
ZYDIS_MNEMONIC_CMOVO,
ZYDIS_MNEMONIC_CMOVP,
ZYDIS_MNEMONIC_CMOVS,
ZYDIS_MNEMONIC_CMOVZ,
ZYDIS_MNEMONIC_CMP,
ZYDIS_MNEMONIC_CMPPD,
ZYDIS_MNEMONIC_CMPPS,
ZYDIS_MNEMONIC_CMPSB,
ZYDIS_MNEMONIC_CMPSD,
ZYDIS_MNEMONIC_CMPSQ,
ZYDIS_MNEMONIC_CMPSS,
ZYDIS_MNEMONIC_CMPSW,
ZYDIS_MNEMONIC_CMPXCHG,
ZYDIS_MNEMONIC_CMPXCHG16B,
ZYDIS_MNEMONIC_CMPXCHG8B,
ZYDIS_MNEMONIC_COMISD,
ZYDIS_MNEMONIC_COMISS,
ZYDIS_MNEMONIC_CPUID,
ZYDIS_MNEMONIC_CQO,
ZYDIS_MNEMONIC_CRC32,
ZYDIS_MNEMONIC_CVTDQ2PD,
ZYDIS_MNEMONIC_CVTDQ2PS,
ZYDIS_MNEMONIC_CVTPD2DQ,
ZYDIS_MNEMONIC_CVTPD2PI,
ZYDIS_MNEMONIC_CVTPD2PS,
ZYDIS_MNEMONIC_CVTPI2PD,
ZYDIS_MNEMONIC_CVTPI2PS,
ZYDIS_MNEMONIC_CVTPS2DQ,
ZYDIS_MNEMONIC_CVTPS2PD,
ZYDIS_MNEMONIC_CVTPS2PI,
ZYDIS_MNEMONIC_CVTSD2SI,
ZYDIS_MNEMONIC_CVTSD2SS,
ZYDIS_MNEMONIC_CVTSI2SD,
ZYDIS_MNEMONIC_CVTSI2SS,
ZYDIS_MNEMONIC_CVTSS2SD,
ZYDIS_MNEMONIC_CVTSS2SI,
ZYDIS_MNEMONIC_CVTTPD2DQ,
ZYDIS_MNEMONIC_CVTTPD2PI,
ZYDIS_MNEMONIC_CVTTPS2DQ,
ZYDIS_MNEMONIC_CVTTPS2PI,
ZYDIS_MNEMONIC_CVTTSD2SI,
ZYDIS_MNEMONIC_CVTTSS2SI,
ZYDIS_MNEMONIC_CWD,
ZYDIS_MNEMONIC_CWDE,
ZYDIS_MNEMONIC_DAA,
ZYDIS_MNEMONIC_DAS,
ZYDIS_MNEMONIC_DEC,
ZYDIS_MNEMONIC_DELAY,
ZYDIS_MNEMONIC_DIV,
ZYDIS_MNEMONIC_DIVPD,
ZYDIS_MNEMONIC_DIVPS,
ZYDIS_MNEMONIC_DIVSD,
ZYDIS_MNEMONIC_DIVSS,
ZYDIS_MNEMONIC_DPPD,
ZYDIS_MNEMONIC_DPPS,
ZYDIS_MNEMONIC_EMMS,
ZYDIS_MNEMONIC_ENCLS,
ZYDIS_MNEMONIC_ENCLU,
ZYDIS_MNEMONIC_ENCLV,
ZYDIS_MNEMONIC_ENDBR32,
ZYDIS_MNEMONIC_ENDBR64,
ZYDIS_MNEMONIC_ENTER,
ZYDIS_MNEMONIC_EXTRACTPS,
ZYDIS_MNEMONIC_EXTRQ,
ZYDIS_MNEMONIC_F2XM1,
ZYDIS_MNEMONIC_FABS,
ZYDIS_MNEMONIC_FADD,
ZYDIS_MNEMONIC_FADDP,
ZYDIS_MNEMONIC_FBLD,
ZYDIS_MNEMONIC_FBSTP,
ZYDIS_MNEMONIC_FCHS,
ZYDIS_MNEMONIC_FCMOVB,
ZYDIS_MNEMONIC_FCMOVBE,
ZYDIS_MNEMONIC_FCMOVE,
ZYDIS_MNEMONIC_FCMOVNB,
ZYDIS_MNEMONIC_FCMOVNBE,
ZYDIS_MNEMONIC_FCMOVNE,
ZYDIS_MNEMONIC_FCMOVNU,
ZYDIS_MNEMONIC_FCMOVU,
ZYDIS_MNEMONIC_FCOM,
ZYDIS_MNEMONIC_FCOMI,
ZYDIS_MNEMONIC_FCOMIP,
ZYDIS_MNEMONIC_FCOMP,
ZYDIS_MNEMONIC_FCOMPP,
ZYDIS_MNEMONIC_FCOS,
ZYDIS_MNEMONIC_FDECSTP,
ZYDIS_MNEMONIC_FDISI8087_NOP,
ZYDIS_MNEMONIC_FDIV,
ZYDIS_MNEMONIC_FDIVP,
ZYDIS_MNEMONIC_FDIVR,
ZYDIS_MNEMONIC_FDIVRP,
ZYDIS_MNEMONIC_FEMMS,
ZYDIS_MNEMONIC_FENI8087_NOP,
ZYDIS_MNEMONIC_FFREE,
ZYDIS_MNEMONIC_FFREEP,
ZYDIS_MNEMONIC_FIADD,
ZYDIS_MNEMONIC_FICOM,
ZYDIS_MNEMONIC_FICOMP,
ZYDIS_MNEMONIC_FIDIV,
ZYDIS_MNEMONIC_FIDIVR,
ZYDIS_MNEMONIC_FILD,
ZYDIS_MNEMONIC_FIMUL,
ZYDIS_MNEMONIC_FINCSTP,
ZYDIS_MNEMONIC_FIST,
ZYDIS_MNEMONIC_FISTP,
ZYDIS_MNEMONIC_FISTTP,
ZYDIS_MNEMONIC_FISUB,
ZYDIS_MNEMONIC_FISUBR,
ZYDIS_MNEMONIC_FLD,
ZYDIS_MNEMONIC_FLD1,
ZYDIS_MNEMONIC_FLDCW,
ZYDIS_MNEMONIC_FLDENV,
ZYDIS_MNEMONIC_FLDL2E,
ZYDIS_MNEMONIC_FLDL2T,
ZYDIS_MNEMONIC_FLDLG2,
ZYDIS_MNEMONIC_FLDLN2,
ZYDIS_MNEMONIC_FLDPI,
ZYDIS_MNEMONIC_FLDZ,
ZYDIS_MNEMONIC_FMUL,
ZYDIS_MNEMONIC_FMULP,
ZYDIS_MNEMONIC_FNCLEX,
ZYDIS_MNEMONIC_FNINIT,
ZYDIS_MNEMONIC_FNOP,
ZYDIS_MNEMONIC_FNSAVE,
ZYDIS_MNEMONIC_FNSTCW,
ZYDIS_MNEMONIC_FNSTENV,
ZYDIS_MNEMONIC_FNSTSW,
ZYDIS_MNEMONIC_FPATAN,
ZYDIS_MNEMONIC_FPREM,
ZYDIS_MNEMONIC_FPREM1,
ZYDIS_MNEMONIC_FPTAN,
ZYDIS_MNEMONIC_FRNDINT,
ZYDIS_MNEMONIC_FRSTOR,
ZYDIS_MNEMONIC_FSCALE,
ZYDIS_MNEMONIC_FSETPM287_NOP,
ZYDIS_MNEMONIC_FSIN,
ZYDIS_MNEMONIC_FSINCOS,
ZYDIS_MNEMONIC_FSQRT,
ZYDIS_MNEMONIC_FST,
ZYDIS_MNEMONIC_FSTP,
ZYDIS_MNEMONIC_FSTPNCE,
ZYDIS_MNEMONIC_FSUB,
ZYDIS_MNEMONIC_FSUBP,
ZYDIS_MNEMONIC_FSUBR,
ZYDIS_MNEMONIC_FSUBRP,
ZYDIS_MNEMONIC_FTST,
ZYDIS_MNEMONIC_FUCOM,
ZYDIS_MNEMONIC_FUCOMI,
ZYDIS_MNEMONIC_FUCOMIP,
ZYDIS_MNEMONIC_FUCOMP,
ZYDIS_MNEMONIC_FUCOMPP,
ZYDIS_MNEMONIC_FWAIT,
ZYDIS_MNEMONIC_FXAM,
ZYDIS_MNEMONIC_FXCH,
ZYDIS_MNEMONIC_FXRSTOR,
ZYDIS_MNEMONIC_FXRSTOR64,
ZYDIS_MNEMONIC_FXSAVE,
ZYDIS_MNEMONIC_FXSAVE64,
ZYDIS_MNEMONIC_FXTRACT,
ZYDIS_MNEMONIC_FYL2X,
ZYDIS_MNEMONIC_FYL2XP1,
ZYDIS_MNEMONIC_GETSEC,
ZYDIS_MNEMONIC_GF2P8AFFINEINVQB,
ZYDIS_MNEMONIC_GF2P8AFFINEQB,
ZYDIS_MNEMONIC_GF2P8MULB,
ZYDIS_MNEMONIC_HADDPD,
ZYDIS_MNEMONIC_HADDPS,
ZYDIS_MNEMONIC_HLT,
ZYDIS_MNEMONIC_HSUBPD,
ZYDIS_MNEMONIC_HSUBPS,
ZYDIS_MNEMONIC_IDIV,
ZYDIS_MNEMONIC_IMUL,
ZYDIS_MNEMONIC_IN,
ZYDIS_MNEMONIC_INC,
ZYDIS_MNEMONIC_INCSSPD,
ZYDIS_MNEMONIC_INCSSPQ,
ZYDIS_MNEMONIC_INSB,
ZYDIS_MNEMONIC_INSD,
ZYDIS_MNEMONIC_INSERTPS,
ZYDIS_MNEMONIC_INSERTQ,
ZYDIS_MNEMONIC_INSW,
ZYDIS_MNEMONIC_INT,
ZYDIS_MNEMONIC_INT1,
ZYDIS_MNEMONIC_INT3,
ZYDIS_MNEMONIC_INTO,
ZYDIS_MNEMONIC_INVD,
ZYDIS_MNEMONIC_INVEPT,
ZYDIS_MNEMONIC_INVLPG,
ZYDIS_MNEMONIC_INVLPGA,
ZYDIS_MNEMONIC_INVPCID,
ZYDIS_MNEMONIC_INVVPID,
ZYDIS_MNEMONIC_IRET,
ZYDIS_MNEMONIC_IRETD,
ZYDIS_MNEMONIC_IRETQ,
ZYDIS_MNEMONIC_JB,
ZYDIS_MNEMONIC_JBE,
ZYDIS_MNEMONIC_JCXZ,
ZYDIS_MNEMONIC_JECXZ,
ZYDIS_MNEMONIC_JKNZD,
ZYDIS_MNEMONIC_JKZD,
ZYDIS_MNEMONIC_JL,
ZYDIS_MNEMONIC_JLE,
ZYDIS_MNEMONIC_JMP,
ZYDIS_MNEMONIC_JNB,
ZYDIS_MNEMONIC_JNBE,
ZYDIS_MNEMONIC_JNL,
ZYDIS_MNEMONIC_JNLE,
ZYDIS_MNEMONIC_JNO,
ZYDIS_MNEMONIC_JNP,
ZYDIS_MNEMONIC_JNS,
ZYDIS_MNEMONIC_JNZ,
ZYDIS_MNEMONIC_JO,
ZYDIS_MNEMONIC_JP,
ZYDIS_MNEMONIC_JRCXZ,
ZYDIS_MNEMONIC_JS,
ZYDIS_MNEMONIC_JZ,
ZYDIS_MNEMONIC_KADDB,
ZYDIS_MNEMONIC_KADDD,
ZYDIS_MNEMONIC_KADDQ,
ZYDIS_MNEMONIC_KADDW,
ZYDIS_MNEMONIC_KAND,
ZYDIS_MNEMONIC_KANDB,
ZYDIS_MNEMONIC_KANDD,
ZYDIS_MNEMONIC_KANDN,
ZYDIS_MNEMONIC_KANDNB,
ZYDIS_MNEMONIC_KANDND,
ZYDIS_MNEMONIC_KANDNQ,
ZYDIS_MNEMONIC_KANDNR,
ZYDIS_MNEMONIC_KANDNW,
ZYDIS_MNEMONIC_KANDQ,
ZYDIS_MNEMONIC_KANDW,
ZYDIS_MNEMONIC_KCONCATH,
ZYDIS_MNEMONIC_KCONCATL,
ZYDIS_MNEMONIC_KEXTRACT,
ZYDIS_MNEMONIC_KMERGE2L1H,
ZYDIS_MNEMONIC_KMERGE2L1L,
ZYDIS_MNEMONIC_KMOV,
ZYDIS_MNEMONIC_KMOVB,
ZYDIS_MNEMONIC_KMOVD,
ZYDIS_MNEMONIC_KMOVQ,
ZYDIS_MNEMONIC_KMOVW,
ZYDIS_MNEMONIC_KNOT,
ZYDIS_MNEMONIC_KNOTB,
ZYDIS_MNEMONIC_KNOTD,
ZYDIS_MNEMONIC_KNOTQ,
ZYDIS_MNEMONIC_KNOTW,
ZYDIS_MNEMONIC_KOR,
ZYDIS_MNEMONIC_KORB,
ZYDIS_MNEMONIC_KORD,
ZYDIS_MNEMONIC_KORQ,
ZYDIS_MNEMONIC_KORTEST,
ZYDIS_MNEMONIC_KORTESTB,
ZYDIS_MNEMONIC_KORTESTD,
ZYDIS_MNEMONIC_KORTESTQ,
ZYDIS_MNEMONIC_KORTESTW,
ZYDIS_MNEMONIC_KORW,
ZYDIS_MNEMONIC_KSHIFTLB,
ZYDIS_MNEMONIC_KSHIFTLD,
ZYDIS_MNEMONIC_KSHIFTLQ,
ZYDIS_MNEMONIC_KSHIFTLW,
ZYDIS_MNEMONIC_KSHIFTRB,
ZYDIS_MNEMONIC_KSHIFTRD,
ZYDIS_MNEMONIC_KSHIFTRQ,
ZYDIS_MNEMONIC_KSHIFTRW,
ZYDIS_MNEMONIC_KTESTB,
ZYDIS_MNEMONIC_KTESTD,
ZYDIS_MNEMONIC_KTESTQ,
ZYDIS_MNEMONIC_KTESTW,
ZYDIS_MNEMONIC_KUNPCKBW,
ZYDIS_MNEMONIC_KUNPCKDQ,
ZYDIS_MNEMONIC_KUNPCKWD,
ZYDIS_MNEMONIC_KXNOR,
ZYDIS_MNEMONIC_KXNORB,
ZYDIS_MNEMONIC_KXNORD,
ZYDIS_MNEMONIC_KXNORQ,
ZYDIS_MNEMONIC_KXNORW,
ZYDIS_MNEMONIC_KXOR,
ZYDIS_MNEMONIC_KXORB,
ZYDIS_MNEMONIC_KXORD,
ZYDIS_MNEMONIC_KXORQ,
ZYDIS_MNEMONIC_KXORW,
ZYDIS_MNEMONIC_LAHF,
ZYDIS_MNEMONIC_LAR,
ZYDIS_MNEMONIC_LDDQU,
ZYDIS_MNEMONIC_LDMXCSR,
ZYDIS_MNEMONIC_LDS,
ZYDIS_MNEMONIC_LEA,
ZYDIS_MNEMONIC_LEAVE,
ZYDIS_MNEMONIC_LES,
ZYDIS_MNEMONIC_LFENCE,
ZYDIS_MNEMONIC_LFS,
ZYDIS_MNEMONIC_LGDT,
ZYDIS_MNEMONIC_LGS,
ZYDIS_MNEMONIC_LIDT,
ZYDIS_MNEMONIC_LLDT,
ZYDIS_MNEMONIC_LLWPCB,
ZYDIS_MNEMONIC_LMSW,
ZYDIS_MNEMONIC_LODSB,
ZYDIS_MNEMONIC_LODSD,
ZYDIS_MNEMONIC_LODSQ,
ZYDIS_MNEMONIC_LODSW,
ZYDIS_MNEMONIC_LOOP,
ZYDIS_MNEMONIC_LOOPE,
ZYDIS_MNEMONIC_LOOPNE,
ZYDIS_MNEMONIC_LSL,
ZYDIS_MNEMONIC_LSS,
ZYDIS_MNEMONIC_LTR,
ZYDIS_MNEMONIC_LWPINS,
ZYDIS_MNEMONIC_LWPVAL,
ZYDIS_MNEMONIC_LZCNT,
ZYDIS_MNEMONIC_MASKMOVDQU,
ZYDIS_MNEMONIC_MASKMOVQ,
ZYDIS_MNEMONIC_MAXPD,
ZYDIS_MNEMONIC_MAXPS,
ZYDIS_MNEMONIC_MAXSD,
ZYDIS_MNEMONIC_MAXSS,
ZYDIS_MNEMONIC_MFENCE,
ZYDIS_MNEMONIC_MINPD,
ZYDIS_MNEMONIC_MINPS,
ZYDIS_MNEMONIC_MINSD,
ZYDIS_MNEMONIC_MINSS,
ZYDIS_MNEMONIC_MONITOR,
ZYDIS_MNEMONIC_MONITORX,
ZYDIS_MNEMONIC_MONTMUL,
ZYDIS_MNEMONIC_MOV,
ZYDIS_MNEMONIC_MOVAPD,
ZYDIS_MNEMONIC_MOVAPS,
ZYDIS_MNEMONIC_MOVBE,
ZYDIS_MNEMONIC_MOVD,
ZYDIS_MNEMONIC_MOVDDUP,
ZYDIS_MNEMONIC_MOVDIR64B,
ZYDIS_MNEMONIC_MOVDIRI,
ZYDIS_MNEMONIC_MOVDQ2Q,
ZYDIS_MNEMONIC_MOVDQA,
ZYDIS_MNEMONIC_MOVDQU,
ZYDIS_MNEMONIC_MOVHLPS,
ZYDIS_MNEMONIC_MOVHPD,
ZYDIS_MNEMONIC_MOVHPS,
ZYDIS_MNEMONIC_MOVLHPS,
ZYDIS_MNEMONIC_MOVLPD,
ZYDIS_MNEMONIC_MOVLPS,
ZYDIS_MNEMONIC_MOVMSKPD,
ZYDIS_MNEMONIC_MOVMSKPS,
ZYDIS_MNEMONIC_MOVNTDQ,
ZYDIS_MNEMONIC_MOVNTDQA,
ZYDIS_MNEMONIC_MOVNTI,
ZYDIS_MNEMONIC_MOVNTPD,
ZYDIS_MNEMONIC_MOVNTPS,
ZYDIS_MNEMONIC_MOVNTQ,
ZYDIS_MNEMONIC_MOVNTSD,
ZYDIS_MNEMONIC_MOVNTSS,
ZYDIS_MNEMONIC_MOVQ,
ZYDIS_MNEMONIC_MOVQ2DQ,
ZYDIS_MNEMONIC_MOVSB,
ZYDIS_MNEMONIC_MOVSD,
ZYDIS_MNEMONIC_MOVSHDUP,
ZYDIS_MNEMONIC_MOVSLDUP,
ZYDIS_MNEMONIC_MOVSQ,
ZYDIS_MNEMONIC_MOVSS,
ZYDIS_MNEMONIC_MOVSW,
ZYDIS_MNEMONIC_MOVSX,
ZYDIS_MNEMONIC_MOVSXD,
ZYDIS_MNEMONIC_MOVUPD,
ZYDIS_MNEMONIC_MOVUPS,
ZYDIS_MNEMONIC_MOVZX,
ZYDIS_MNEMONIC_MPSADBW,
ZYDIS_MNEMONIC_MUL,
ZYDIS_MNEMONIC_MULPD,
ZYDIS_MNEMONIC_MULPS,
ZYDIS_MNEMONIC_MULSD,
ZYDIS_MNEMONIC_MULSS,
ZYDIS_MNEMONIC_MULX,
ZYDIS_MNEMONIC_MWAIT,
ZYDIS_MNEMONIC_MWAITX,
ZYDIS_MNEMONIC_NEG,
ZYDIS_MNEMONIC_NOP,
ZYDIS_MNEMONIC_NOT,
ZYDIS_MNEMONIC_OR,
ZYDIS_MNEMONIC_ORPD,
ZYDIS_MNEMONIC_ORPS,
ZYDIS_MNEMONIC_OUT,
ZYDIS_MNEMONIC_OUTSB,
ZYDIS_MNEMONIC_OUTSD,
ZYDIS_MNEMONIC_OUTSW,
ZYDIS_MNEMONIC_PABSB,
ZYDIS_MNEMONIC_PABSD,
ZYDIS_MNEMONIC_PABSW,
ZYDIS_MNEMONIC_PACKSSDW,
ZYDIS_MNEMONIC_PACKSSWB,
ZYDIS_MNEMONIC_PACKUSDW,
ZYDIS_MNEMONIC_PACKUSWB,
ZYDIS_MNEMONIC_PADDB,
ZYDIS_MNEMONIC_PADDD,
ZYDIS_MNEMONIC_PADDQ,
ZYDIS_MNEMONIC_PADDSB,
ZYDIS_MNEMONIC_PADDSW,
ZYDIS_MNEMONIC_PADDUSB,
ZYDIS_MNEMONIC_PADDUSW,
ZYDIS_MNEMONIC_PADDW,
ZYDIS_MNEMONIC_PALIGNR,
ZYDIS_MNEMONIC_PAND,
ZYDIS_MNEMONIC_PANDN,
ZYDIS_MNEMONIC_PAUSE,
ZYDIS_MNEMONIC_PAVGB,
ZYDIS_MNEMONIC_PAVGUSB,
ZYDIS_MNEMONIC_PAVGW,
ZYDIS_MNEMONIC_PBLENDVB,
ZYDIS_MNEMONIC_PBLENDW,
ZYDIS_MNEMONIC_PCLMULQDQ,
ZYDIS_MNEMONIC_PCMPEQB,
ZYDIS_MNEMONIC_PCMPEQD,
ZYDIS_MNEMONIC_PCMPEQQ,
ZYDIS_MNEMONIC_PCMPEQW,
ZYDIS_MNEMONIC_PCMPESTRI,
ZYDIS_MNEMONIC_PCMPESTRM,
ZYDIS_MNEMONIC_PCMPGTB,
ZYDIS_MNEMONIC_PCMPGTD,
ZYDIS_MNEMONIC_PCMPGTQ,
ZYDIS_MNEMONIC_PCMPGTW,
ZYDIS_MNEMONIC_PCMPISTRI,
ZYDIS_MNEMONIC_PCMPISTRM,
ZYDIS_MNEMONIC_PCONFIG,
ZYDIS_MNEMONIC_PDEP,
ZYDIS_MNEMONIC_PEXT,
ZYDIS_MNEMONIC_PEXTRB,
ZYDIS_MNEMONIC_PEXTRD,
ZYDIS_MNEMONIC_PEXTRQ,
ZYDIS_MNEMONIC_PEXTRW,
ZYDIS_MNEMONIC_PF2ID,
ZYDIS_MNEMONIC_PF2IW,
ZYDIS_MNEMONIC_PFACC,
ZYDIS_MNEMONIC_PFADD,
ZYDIS_MNEMONIC_PFCMPEQ,
ZYDIS_MNEMONIC_PFCMPGE,
ZYDIS_MNEMONIC_PFCMPGT,
ZYDIS_MNEMONIC_PFCPIT1,
ZYDIS_MNEMONIC_PFMAX,
ZYDIS_MNEMONIC_PFMIN,
ZYDIS_MNEMONIC_PFMUL,
ZYDIS_MNEMONIC_PFNACC,
ZYDIS_MNEMONIC_PFPNACC,
ZYDIS_MNEMONIC_PFRCP,
ZYDIS_MNEMONIC_PFRCPIT2,
ZYDIS_MNEMONIC_PFRSQIT1,
ZYDIS_MNEMONIC_PFSQRT,
ZYDIS_MNEMONIC_PFSUB,
ZYDIS_MNEMONIC_PFSUBR,
ZYDIS_MNEMONIC_PHADDD,
ZYDIS_MNEMONIC_PHADDSW,
ZYDIS_MNEMONIC_PHADDW,
ZYDIS_MNEMONIC_PHMINPOSUW,
ZYDIS_MNEMONIC_PHSUBD,
ZYDIS_MNEMONIC_PHSUBSW,
ZYDIS_MNEMONIC_PHSUBW,
ZYDIS_MNEMONIC_PI2FD,
ZYDIS_MNEMONIC_PI2FW,
ZYDIS_MNEMONIC_PINSRB,
ZYDIS_MNEMONIC_PINSRD,
ZYDIS_MNEMONIC_PINSRQ,
ZYDIS_MNEMONIC_PINSRW,
ZYDIS_MNEMONIC_PMADDUBSW,
ZYDIS_MNEMONIC_PMADDWD,
ZYDIS_MNEMONIC_PMAXSB,
ZYDIS_MNEMONIC_PMAXSD,
ZYDIS_MNEMONIC_PMAXSW,
ZYDIS_MNEMONIC_PMAXUB,
ZYDIS_MNEMONIC_PMAXUD,
ZYDIS_MNEMONIC_PMAXUW,
ZYDIS_MNEMONIC_PMINSB,
ZYDIS_MNEMONIC_PMINSD,
ZYDIS_MNEMONIC_PMINSW,
ZYDIS_MNEMONIC_PMINUB,
ZYDIS_MNEMONIC_PMINUD,
ZYDIS_MNEMONIC_PMINUW,
ZYDIS_MNEMONIC_PMOVMSKB,
ZYDIS_MNEMONIC_PMOVSXBD,
ZYDIS_MNEMONIC_PMOVSXBQ,
ZYDIS_MNEMONIC_PMOVSXBW,
ZYDIS_MNEMONIC_PMOVSXDQ,
ZYDIS_MNEMONIC_PMOVSXWD,
ZYDIS_MNEMONIC_PMOVSXWQ,
ZYDIS_MNEMONIC_PMOVZXBD,
ZYDIS_MNEMONIC_PMOVZXBQ,
ZYDIS_MNEMONIC_PMOVZXBW,
ZYDIS_MNEMONIC_PMOVZXDQ,
ZYDIS_MNEMONIC_PMOVZXWD,
ZYDIS_MNEMONIC_PMOVZXWQ,
ZYDIS_MNEMONIC_PMULDQ,
ZYDIS_MNEMONIC_PMULHRSW,
ZYDIS_MNEMONIC_PMULHRW,
ZYDIS_MNEMONIC_PMULHUW,
ZYDIS_MNEMONIC_PMULHW,
ZYDIS_MNEMONIC_PMULLD,
ZYDIS_MNEMONIC_PMULLW,
ZYDIS_MNEMONIC_PMULUDQ,
ZYDIS_MNEMONIC_POP,
ZYDIS_MNEMONIC_POPA,
ZYDIS_MNEMONIC_POPAD,
ZYDIS_MNEMONIC_POPCNT,
ZYDIS_MNEMONIC_POPF,
ZYDIS_MNEMONIC_POPFD,
ZYDIS_MNEMONIC_POPFQ,
ZYDIS_MNEMONIC_POR,
ZYDIS_MNEMONIC_PREFETCH,
ZYDIS_MNEMONIC_PREFETCHNTA,
ZYDIS_MNEMONIC_PREFETCHT0,
ZYDIS_MNEMONIC_PREFETCHT1,
ZYDIS_MNEMONIC_PREFETCHT2,
ZYDIS_MNEMONIC_PREFETCHW,
ZYDIS_MNEMONIC_PREFETCHWT1,
ZYDIS_MNEMONIC_PSADBW,
ZYDIS_MNEMONIC_PSHUFB,
ZYDIS_MNEMONIC_PSHUFD,
ZYDIS_MNEMONIC_PSHUFHW,
ZYDIS_MNEMONIC_PSHUFLW,
ZYDIS_MNEMONIC_PSHUFW,
ZYDIS_MNEMONIC_PSIGNB,
ZYDIS_MNEMONIC_PSIGND,
ZYDIS_MNEMONIC_PSIGNW,
ZYDIS_MNEMONIC_PSLLD,
ZYDIS_MNEMONIC_PSLLDQ,
ZYDIS_MNEMONIC_PSLLQ,
ZYDIS_MNEMONIC_PSLLW,
ZYDIS_MNEMONIC_PSRAD,
ZYDIS_MNEMONIC_PSRAW,
ZYDIS_MNEMONIC_PSRLD,
ZYDIS_MNEMONIC_PSRLDQ,
ZYDIS_MNEMONIC_PSRLQ,
ZYDIS_MNEMONIC_PSRLW,
ZYDIS_MNEMONIC_PSUBB,
ZYDIS_MNEMONIC_PSUBD,
ZYDIS_MNEMONIC_PSUBQ,
ZYDIS_MNEMONIC_PSUBSB,
ZYDIS_MNEMONIC_PSUBSW,
ZYDIS_MNEMONIC_PSUBUSB,
ZYDIS_MNEMONIC_PSUBUSW,
ZYDIS_MNEMONIC_PSUBW,
ZYDIS_MNEMONIC_PSWAPD,
ZYDIS_MNEMONIC_PTEST,
ZYDIS_MNEMONIC_PTWRITE,
ZYDIS_MNEMONIC_PUNPCKHBW,
ZYDIS_MNEMONIC_PUNPCKHDQ,
ZYDIS_MNEMONIC_PUNPCKHQDQ,
ZYDIS_MNEMONIC_PUNPCKHWD,
ZYDIS_MNEMONIC_PUNPCKLBW,
ZYDIS_MNEMONIC_PUNPCKLDQ,
ZYDIS_MNEMONIC_PUNPCKLQDQ,
ZYDIS_MNEMONIC_PUNPCKLWD,
ZYDIS_MNEMONIC_PUSH,
ZYDIS_MNEMONIC_PUSHA,
ZYDIS_MNEMONIC_PUSHAD,
ZYDIS_MNEMONIC_PUSHF,
ZYDIS_MNEMONIC_PUSHFD,
ZYDIS_MNEMONIC_PUSHFQ,
ZYDIS_MNEMONIC_PXOR,
ZYDIS_MNEMONIC_RCL,
ZYDIS_MNEMONIC_RCPPS,
ZYDIS_MNEMONIC_RCPSS,
ZYDIS_MNEMONIC_RCR,
ZYDIS_MNEMONIC_RDFSBASE,
ZYDIS_MNEMONIC_RDGSBASE,
ZYDIS_MNEMONIC_RDMSR,
ZYDIS_MNEMONIC_RDPID,
ZYDIS_MNEMONIC_RDPKRU,
ZYDIS_MNEMONIC_RDPMC,
ZYDIS_MNEMONIC_RDRAND,
ZYDIS_MNEMONIC_RDSEED,
ZYDIS_MNEMONIC_RDSSPD,
ZYDIS_MNEMONIC_RDSSPQ,
ZYDIS_MNEMONIC_RDTSC,
ZYDIS_MNEMONIC_RDTSCP,
ZYDIS_MNEMONIC_RET,
ZYDIS_MNEMONIC_ROL,
ZYDIS_MNEMONIC_ROR,
ZYDIS_MNEMONIC_RORX,
ZYDIS_MNEMONIC_ROUNDPD,
ZYDIS_MNEMONIC_ROUNDPS,
ZYDIS_MNEMONIC_ROUNDSD,
ZYDIS_MNEMONIC_ROUNDSS,
ZYDIS_MNEMONIC_RSM,
ZYDIS_MNEMONIC_RSQRTPS,
ZYDIS_MNEMONIC_RSQRTSS,
ZYDIS_MNEMONIC_RSTORSSP,
ZYDIS_MNEMONIC_SAHF,
ZYDIS_MNEMONIC_SALC,
ZYDIS_MNEMONIC_SAR,
ZYDIS_MNEMONIC_SARX,
ZYDIS_MNEMONIC_SAVEPREVSSP,
ZYDIS_MNEMONIC_SBB,
ZYDIS_MNEMONIC_SCASB,
ZYDIS_MNEMONIC_SCASD,
ZYDIS_MNEMONIC_SCASQ,
ZYDIS_MNEMONIC_SCASW,
ZYDIS_MNEMONIC_SETB,
ZYDIS_MNEMONIC_SETBE,
ZYDIS_MNEMONIC_SETL,
ZYDIS_MNEMONIC_SETLE,
ZYDIS_MNEMONIC_SETNB,
ZYDIS_MNEMONIC_SETNBE,
ZYDIS_MNEMONIC_SETNL,
ZYDIS_MNEMONIC_SETNLE,
ZYDIS_MNEMONIC_SETNO,
ZYDIS_MNEMONIC_SETNP,
ZYDIS_MNEMONIC_SETNS,
ZYDIS_MNEMONIC_SETNZ,
ZYDIS_MNEMONIC_SETO,
ZYDIS_MNEMONIC_SETP,
ZYDIS_MNEMONIC_SETS,
ZYDIS_MNEMONIC_SETSSBSY,
ZYDIS_MNEMONIC_SETZ,
ZYDIS_MNEMONIC_SFENCE,
ZYDIS_MNEMONIC_SGDT,
ZYDIS_MNEMONIC_SHA1MSG1,
ZYDIS_MNEMONIC_SHA1MSG2,
ZYDIS_MNEMONIC_SHA1NEXTE,
ZYDIS_MNEMONIC_SHA1RNDS4,
ZYDIS_MNEMONIC_SHA256MSG1,
ZYDIS_MNEMONIC_SHA256MSG2,
ZYDIS_MNEMONIC_SHA256RNDS2,
ZYDIS_MNEMONIC_SHL,
ZYDIS_MNEMONIC_SHLD,
ZYDIS_MNEMONIC_SHLX,
ZYDIS_MNEMONIC_SHR,
ZYDIS_MNEMONIC_SHRD,
ZYDIS_MNEMONIC_SHRX,
ZYDIS_MNEMONIC_SHUFPD,
ZYDIS_MNEMONIC_SHUFPS,
ZYDIS_MNEMONIC_SIDT,
ZYDIS_MNEMONIC_SKINIT,
ZYDIS_MNEMONIC_SLDT,
ZYDIS_MNEMONIC_SLWPCB,
ZYDIS_MNEMONIC_SMSW,
ZYDIS_MNEMONIC_SPFLT,
ZYDIS_MNEMONIC_SQRTPD,
ZYDIS_MNEMONIC_SQRTPS,
ZYDIS_MNEMONIC_SQRTSD,
ZYDIS_MNEMONIC_SQRTSS,
ZYDIS_MNEMONIC_STAC,
ZYDIS_MNEMONIC_STC,
ZYDIS_MNEMONIC_STD,
ZYDIS_MNEMONIC_STGI,
ZYDIS_MNEMONIC_STI,
ZYDIS_MNEMONIC_STMXCSR,
ZYDIS_MNEMONIC_STOSB,
ZYDIS_MNEMONIC_STOSD,
ZYDIS_MNEMONIC_STOSQ,
ZYDIS_MNEMONIC_STOSW,
ZYDIS_MNEMONIC_STR,
ZYDIS_MNEMONIC_SUB,
ZYDIS_MNEMONIC_SUBPD,
ZYDIS_MNEMONIC_SUBPS,
ZYDIS_MNEMONIC_SUBSD,
ZYDIS_MNEMONIC_SUBSS,
ZYDIS_MNEMONIC_SWAPGS,
ZYDIS_MNEMONIC_SYSCALL,
ZYDIS_MNEMONIC_SYSENTER,
ZYDIS_MNEMONIC_SYSEXIT,
ZYDIS_MNEMONIC_SYSRET,
ZYDIS_MNEMONIC_T1MSKC,
ZYDIS_MNEMONIC_TEST,
ZYDIS_MNEMONIC_TPAUSE,
ZYDIS_MNEMONIC_TZCNT,
ZYDIS_MNEMONIC_TZCNTI,
ZYDIS_MNEMONIC_TZMSK,
ZYDIS_MNEMONIC_UCOMISD,
ZYDIS_MNEMONIC_UCOMISS,
ZYDIS_MNEMONIC_UD0,
ZYDIS_MNEMONIC_UD1,
ZYDIS_MNEMONIC_UD2,
ZYDIS_MNEMONIC_UMONITOR,
ZYDIS_MNEMONIC_UMWAIT,
ZYDIS_MNEMONIC_UNPCKHPD,
ZYDIS_MNEMONIC_UNPCKHPS,
ZYDIS_MNEMONIC_UNPCKLPD,
ZYDIS_MNEMONIC_UNPCKLPS,
ZYDIS_MNEMONIC_V4FMADDPS,
ZYDIS_MNEMONIC_V4FMADDSS,
ZYDIS_MNEMONIC_V4FNMADDPS,
ZYDIS_MNEMONIC_V4FNMADDSS,
ZYDIS_MNEMONIC_VADDNPD,
ZYDIS_MNEMONIC_VADDNPS,
ZYDIS_MNEMONIC_VADDPD,
ZYDIS_MNEMONIC_VADDPS,
ZYDIS_MNEMONIC_VADDSD,
ZYDIS_MNEMONIC_VADDSETSPS,
ZYDIS_MNEMONIC_VADDSS,
ZYDIS_MNEMONIC_VADDSUBPD,
ZYDIS_MNEMONIC_VADDSUBPS,
ZYDIS_MNEMONIC_VAESDEC,
ZYDIS_MNEMONIC_VAESDECLAST,
ZYDIS_MNEMONIC_VAESENC,
ZYDIS_MNEMONIC_VAESENCLAST,
ZYDIS_MNEMONIC_VAESIMC,
ZYDIS_MNEMONIC_VAESKEYGENASSIST,
ZYDIS_MNEMONIC_VALIGND,
ZYDIS_MNEMONIC_VALIGNQ,
ZYDIS_MNEMONIC_VANDNPD,
ZYDIS_MNEMONIC_VANDNPS,
ZYDIS_MNEMONIC_VANDPD,
ZYDIS_MNEMONIC_VANDPS,
ZYDIS_MNEMONIC_VBLENDMPD,
ZYDIS_MNEMONIC_VBLENDMPS,
ZYDIS_MNEMONIC_VBLENDPD,
ZYDIS_MNEMONIC_VBLENDPS,
ZYDIS_MNEMONIC_VBLENDVPD,
ZYDIS_MNEMONIC_VBLENDVPS,
ZYDIS_MNEMONIC_VBROADCASTF128,
ZYDIS_MNEMONIC_VBROADCASTF32X2,
ZYDIS_MNEMONIC_VBROADCASTF32X4,
ZYDIS_MNEMONIC_VBROADCASTF32X8,
ZYDIS_MNEMONIC_VBROADCASTF64X2,
ZYDIS_MNEMONIC_VBROADCASTF64X4,
ZYDIS_MNEMONIC_VBROADCASTI128,
ZYDIS_MNEMONIC_VBROADCASTI32X2,
ZYDIS_MNEMONIC_VBROADCASTI32X4,
ZYDIS_MNEMONIC_VBROADCASTI32X8,
ZYDIS_MNEMONIC_VBROADCASTI64X2,
ZYDIS_MNEMONIC_VBROADCASTI64X4,
ZYDIS_MNEMONIC_VBROADCASTSD,
ZYDIS_MNEMONIC_VBROADCASTSS,
ZYDIS_MNEMONIC_VCMPPD,
ZYDIS_MNEMONIC_VCMPPS,
ZYDIS_MNEMONIC_VCMPSD,
ZYDIS_MNEMONIC_VCMPSS,
ZYDIS_MNEMONIC_VCOMISD,
ZYDIS_MNEMONIC_VCOMISS,
ZYDIS_MNEMONIC_VCOMPRESSPD,
ZYDIS_MNEMONIC_VCOMPRESSPS,
ZYDIS_MNEMONIC_VCVTDQ2PD,
ZYDIS_MNEMONIC_VCVTDQ2PS,
ZYDIS_MNEMONIC_VCVTFXPNTDQ2PS,
ZYDIS_MNEMONIC_VCVTFXPNTPD2DQ,
ZYDIS_MNEMONIC_VCVTFXPNTPD2UDQ,
ZYDIS_MNEMONIC_VCVTFXPNTPS2DQ,
ZYDIS_MNEMONIC_VCVTFXPNTPS2UDQ,
ZYDIS_MNEMONIC_VCVTFXPNTUDQ2PS,
ZYDIS_MNEMONIC_VCVTPD2DQ,
ZYDIS_MNEMONIC_VCVTPD2PS,
ZYDIS_MNEMONIC_VCVTPD2QQ,
ZYDIS_MNEMONIC_VCVTPD2UDQ,
ZYDIS_MNEMONIC_VCVTPD2UQQ,
ZYDIS_MNEMONIC_VCVTPH2PS,
ZYDIS_MNEMONIC_VCVTPS2DQ,
ZYDIS_MNEMONIC_VCVTPS2PD,
ZYDIS_MNEMONIC_VCVTPS2PH,
ZYDIS_MNEMONIC_VCVTPS2QQ,
ZYDIS_MNEMONIC_VCVTPS2UDQ,
ZYDIS_MNEMONIC_VCVTPS2UQQ,
ZYDIS_MNEMONIC_VCVTQQ2PD,
ZYDIS_MNEMONIC_VCVTQQ2PS,
ZYDIS_MNEMONIC_VCVTSD2SI,
ZYDIS_MNEMONIC_VCVTSD2SS,
ZYDIS_MNEMONIC_VCVTSD2USI,
ZYDIS_MNEMONIC_VCVTSI2SD,
ZYDIS_MNEMONIC_VCVTSI2SS,
ZYDIS_MNEMONIC_VCVTSS2SD,
ZYDIS_MNEMONIC_VCVTSS2SI,
ZYDIS_MNEMONIC_VCVTSS2USI,
ZYDIS_MNEMONIC_VCVTTPD2DQ,
ZYDIS_MNEMONIC_VCVTTPD2QQ,
ZYDIS_MNEMONIC_VCVTTPD2UDQ,
ZYDIS_MNEMONIC_VCVTTPD2UQQ,
ZYDIS_MNEMONIC_VCVTTPS2DQ,
ZYDIS_MNEMONIC_VCVTTPS2QQ,
ZYDIS_MNEMONIC_VCVTTPS2UDQ,
ZYDIS_MNEMONIC_VCVTTPS2UQQ,
ZYDIS_MNEMONIC_VCVTTSD2SI,
ZYDIS_MNEMONIC_VCVTTSD2USI,
ZYDIS_MNEMONIC_VCVTTSS2SI,
ZYDIS_MNEMONIC_VCVTTSS2USI,
ZYDIS_MNEMONIC_VCVTUDQ2PD,
ZYDIS_MNEMONIC_VCVTUDQ2PS,
ZYDIS_MNEMONIC_VCVTUQQ2PD,
ZYDIS_MNEMONIC_VCVTUQQ2PS,
ZYDIS_MNEMONIC_VCVTUSI2SD,
ZYDIS_MNEMONIC_VCVTUSI2SS,
ZYDIS_MNEMONIC_VDBPSADBW,
ZYDIS_MNEMONIC_VDIVPD,
ZYDIS_MNEMONIC_VDIVPS,
ZYDIS_MNEMONIC_VDIVSD,
ZYDIS_MNEMONIC_VDIVSS,
ZYDIS_MNEMONIC_VDPPD,
ZYDIS_MNEMONIC_VDPPS,
ZYDIS_MNEMONIC_VERR,
ZYDIS_MNEMONIC_VERW,
ZYDIS_MNEMONIC_VEXP223PS,
ZYDIS_MNEMONIC_VEXP2PD,
ZYDIS_MNEMONIC_VEXP2PS,
ZYDIS_MNEMONIC_VEXPANDPD,
ZYDIS_MNEMONIC_VEXPANDPS,
ZYDIS_MNEMONIC_VEXTRACTF128,
ZYDIS_MNEMONIC_VEXTRACTF32X4,
ZYDIS_MNEMONIC_VEXTRACTF32X8,
ZYDIS_MNEMONIC_VEXTRACTF64X2,
ZYDIS_MNEMONIC_VEXTRACTF64X4,
ZYDIS_MNEMONIC_VEXTRACTI128,
ZYDIS_MNEMONIC_VEXTRACTI32X4,
ZYDIS_MNEMONIC_VEXTRACTI32X8,
ZYDIS_MNEMONIC_VEXTRACTI64X2,
ZYDIS_MNEMONIC_VEXTRACTI64X4,
ZYDIS_MNEMONIC_VEXTRACTPS,
ZYDIS_MNEMONIC_VFIXUPIMMPD,
ZYDIS_MNEMONIC_VFIXUPIMMPS,
ZYDIS_MNEMONIC_VFIXUPIMMSD,
ZYDIS_MNEMONIC_VFIXUPIMMSS,
ZYDIS_MNEMONIC_VFIXUPNANPD,
ZYDIS_MNEMONIC_VFIXUPNANPS,
ZYDIS_MNEMONIC_VFMADD132PD,
ZYDIS_MNEMONIC_VFMADD132PS,
ZYDIS_MNEMONIC_VFMADD132SD,
ZYDIS_MNEMONIC_VFMADD132SS,
ZYDIS_MNEMONIC_VFMADD213PD,
ZYDIS_MNEMONIC_VFMADD213PS,
ZYDIS_MNEMONIC_VFMADD213SD,
ZYDIS_MNEMONIC_VFMADD213SS,
ZYDIS_MNEMONIC_VFMADD231PD,
ZYDIS_MNEMONIC_VFMADD231PS,
ZYDIS_MNEMONIC_VFMADD231SD,
ZYDIS_MNEMONIC_VFMADD231SS,
ZYDIS_MNEMONIC_VFMADD233PS,
ZYDIS_MNEMONIC_VFMADDPD,
ZYDIS_MNEMONIC_VFMADDPS,
ZYDIS_MNEMONIC_VFMADDSD,
ZYDIS_MNEMONIC_VFMADDSS,
ZYDIS_MNEMONIC_VFMADDSUB132PD,
ZYDIS_MNEMONIC_VFMADDSUB132PS,
ZYDIS_MNEMONIC_VFMADDSUB213PD,
ZYDIS_MNEMONIC_VFMADDSUB213PS,
ZYDIS_MNEMONIC_VFMADDSUB231PD,
ZYDIS_MNEMONIC_VFMADDSUB231PS,
ZYDIS_MNEMONIC_VFMADDSUBPD,
ZYDIS_MNEMONIC_VFMADDSUBPS,
ZYDIS_MNEMONIC_VFMSUB132PD,
ZYDIS_MNEMONIC_VFMSUB132PS,
ZYDIS_MNEMONIC_VFMSUB132SD,
ZYDIS_MNEMONIC_VFMSUB132SS,
ZYDIS_MNEMONIC_VFMSUB213PD,
ZYDIS_MNEMONIC_VFMSUB213PS,
ZYDIS_MNEMONIC_VFMSUB213SD,
ZYDIS_MNEMONIC_VFMSUB213SS,
ZYDIS_MNEMONIC_VFMSUB231PD,
ZYDIS_MNEMONIC_VFMSUB231PS,
ZYDIS_MNEMONIC_VFMSUB231SD,
ZYDIS_MNEMONIC_VFMSUB231SS,
ZYDIS_MNEMONIC_VFMSUBADD132PD,
ZYDIS_MNEMONIC_VFMSUBADD132PS,
ZYDIS_MNEMONIC_VFMSUBADD213PD,
ZYDIS_MNEMONIC_VFMSUBADD213PS,
ZYDIS_MNEMONIC_VFMSUBADD231PD,
ZYDIS_MNEMONIC_VFMSUBADD231PS,
ZYDIS_MNEMONIC_VFMSUBADDPD,
ZYDIS_MNEMONIC_VFMSUBADDPS,
ZYDIS_MNEMONIC_VFMSUBPD,
ZYDIS_MNEMONIC_VFMSUBPS,
ZYDIS_MNEMONIC_VFMSUBSD,
ZYDIS_MNEMONIC_VFMSUBSS,
ZYDIS_MNEMONIC_VFNMADD132PD,
ZYDIS_MNEMONIC_VFNMADD132PS,
ZYDIS_MNEMONIC_VFNMADD132SD,
ZYDIS_MNEMONIC_VFNMADD132SS,
ZYDIS_MNEMONIC_VFNMADD213PD,
ZYDIS_MNEMONIC_VFNMADD213PS,
ZYDIS_MNEMONIC_VFNMADD213SD,
ZYDIS_MNEMONIC_VFNMADD213SS,
ZYDIS_MNEMONIC_VFNMADD231PD,
ZYDIS_MNEMONIC_VFNMADD231PS,
ZYDIS_MNEMONIC_VFNMADD231SD,
ZYDIS_MNEMONIC_VFNMADD231SS,
ZYDIS_MNEMONIC_VFNMADDPD,
ZYDIS_MNEMONIC_VFNMADDPS,
ZYDIS_MNEMONIC_VFNMADDSD,
ZYDIS_MNEMONIC_VFNMADDSS,
ZYDIS_MNEMONIC_VFNMSUB132PD,
ZYDIS_MNEMONIC_VFNMSUB132PS,
ZYDIS_MNEMONIC_VFNMSUB132SD,
ZYDIS_MNEMONIC_VFNMSUB132SS,
ZYDIS_MNEMONIC_VFNMSUB213PD,
ZYDIS_MNEMONIC_VFNMSUB213PS,
ZYDIS_MNEMONIC_VFNMSUB213SD,
ZYDIS_MNEMONIC_VFNMSUB213SS,
ZYDIS_MNEMONIC_VFNMSUB231PD,
ZYDIS_MNEMONIC_VFNMSUB231PS,
ZYDIS_MNEMONIC_VFNMSUB231SD,
ZYDIS_MNEMONIC_VFNMSUB231SS,
ZYDIS_MNEMONIC_VFNMSUBPD,
ZYDIS_MNEMONIC_VFNMSUBPS,
ZYDIS_MNEMONIC_VFNMSUBSD,
ZYDIS_MNEMONIC_VFNMSUBSS,
ZYDIS_MNEMONIC_VFPCLASSPD,
ZYDIS_MNEMONIC_VFPCLASSPS,
ZYDIS_MNEMONIC_VFPCLASSSD,
ZYDIS_MNEMONIC_VFPCLASSSS,
ZYDIS_MNEMONIC_VFRCZPD,
ZYDIS_MNEMONIC_VFRCZPS,
ZYDIS_MNEMONIC_VFRCZSD,
ZYDIS_MNEMONIC_VFRCZSS,
ZYDIS_MNEMONIC_VGATHERDPD,
ZYDIS_MNEMONIC_VGATHERDPS,
ZYDIS_MNEMONIC_VGATHERPF0DPD,
ZYDIS_MNEMONIC_VGATHERPF0DPS,
ZYDIS_MNEMONIC_VGATHERPF0HINTDPD,
ZYDIS_MNEMONIC_VGATHERPF0HINTDPS,
ZYDIS_MNEMONIC_VGATHERPF0QPD,
ZYDIS_MNEMONIC_VGATHERPF0QPS,
ZYDIS_MNEMONIC_VGATHERPF1DPD,
ZYDIS_MNEMONIC_VGATHERPF1DPS,
ZYDIS_MNEMONIC_VGATHERPF1QPD,
ZYDIS_MNEMONIC_VGATHERPF1QPS,
ZYDIS_MNEMONIC_VGATHERQPD,
ZYDIS_MNEMONIC_VGATHERQPS,
ZYDIS_MNEMONIC_VGETEXPPD,
ZYDIS_MNEMONIC_VGETEXPPS,
ZYDIS_MNEMONIC_VGETEXPSD,
ZYDIS_MNEMONIC_VGETEXPSS,
ZYDIS_MNEMONIC_VGETMANTPD,
ZYDIS_MNEMONIC_VGETMANTPS,
ZYDIS_MNEMONIC_VGETMANTSD,
ZYDIS_MNEMONIC_VGETMANTSS,
ZYDIS_MNEMONIC_VGF2P8AFFINEINVQB,
ZYDIS_MNEMONIC_VGF2P8AFFINEQB,
ZYDIS_MNEMONIC_VGF2P8MULB,
ZYDIS_MNEMONIC_VGMAXABSPS,
ZYDIS_MNEMONIC_VGMAXPD,
ZYDIS_MNEMONIC_VGMAXPS,
ZYDIS_MNEMONIC_VGMINPD,
ZYDIS_MNEMONIC_VGMINPS,
ZYDIS_MNEMONIC_VHADDPD,
ZYDIS_MNEMONIC_VHADDPS,
ZYDIS_MNEMONIC_VHSUBPD,
ZYDIS_MNEMONIC_VHSUBPS,
ZYDIS_MNEMONIC_VINSERTF128,
ZYDIS_MNEMONIC_VINSERTF32X4,
ZYDIS_MNEMONIC_VINSERTF32X8,
ZYDIS_MNEMONIC_VINSERTF64X2,
ZYDIS_MNEMONIC_VINSERTF64X4,
ZYDIS_MNEMONIC_VINSERTI128,
ZYDIS_MNEMONIC_VINSERTI32X4,
ZYDIS_MNEMONIC_VINSERTI32X8,
ZYDIS_MNEMONIC_VINSERTI64X2,
ZYDIS_MNEMONIC_VINSERTI64X4,
ZYDIS_MNEMONIC_VINSERTPS,
ZYDIS_MNEMONIC_VLDDQU,
ZYDIS_MNEMONIC_VLDMXCSR,
ZYDIS_MNEMONIC_VLOADUNPACKHD,
ZYDIS_MNEMONIC_VLOADUNPACKHPD,
ZYDIS_MNEMONIC_VLOADUNPACKHPS,
ZYDIS_MNEMONIC_VLOADUNPACKHQ,
ZYDIS_MNEMONIC_VLOADUNPACKLD,
ZYDIS_MNEMONIC_VLOADUNPACKLPD,
ZYDIS_MNEMONIC_VLOADUNPACKLPS,
ZYDIS_MNEMONIC_VLOADUNPACKLQ,
ZYDIS_MNEMONIC_VLOG2PS,
ZYDIS_MNEMONIC_VMASKMOVDQU,
ZYDIS_MNEMONIC_VMASKMOVPD,
ZYDIS_MNEMONIC_VMASKMOVPS,
ZYDIS_MNEMONIC_VMAXPD,
ZYDIS_MNEMONIC_VMAXPS,
ZYDIS_MNEMONIC_VMAXSD,
ZYDIS_MNEMONIC_VMAXSS,
ZYDIS_MNEMONIC_VMCALL,
ZYDIS_MNEMONIC_VMCLEAR,
ZYDIS_MNEMONIC_VMFUNC,
ZYDIS_MNEMONIC_VMINPD,
ZYDIS_MNEMONIC_VMINPS,
ZYDIS_MNEMONIC_VMINSD,
ZYDIS_MNEMONIC_VMINSS,
ZYDIS_MNEMONIC_VMLAUNCH,
ZYDIS_MNEMONIC_VMLOAD,
ZYDIS_MNEMONIC_VMMCALL,
ZYDIS_MNEMONIC_VMOVAPD,
ZYDIS_MNEMONIC_VMOVAPS,
ZYDIS_MNEMONIC_VMOVD,
ZYDIS_MNEMONIC_VMOVDDUP,
ZYDIS_MNEMONIC_VMOVDQA,
ZYDIS_MNEMONIC_VMOVDQA32,
ZYDIS_MNEMONIC_VMOVDQA64,
ZYDIS_MNEMONIC_VMOVDQU,
ZYDIS_MNEMONIC_VMOVDQU16,
ZYDIS_MNEMONIC_VMOVDQU32,
ZYDIS_MNEMONIC_VMOVDQU64,
ZYDIS_MNEMONIC_VMOVDQU8,
ZYDIS_MNEMONIC_VMOVHLPS,
ZYDIS_MNEMONIC_VMOVHPD,
ZYDIS_MNEMONIC_VMOVHPS,
ZYDIS_MNEMONIC_VMOVLHPS,
ZYDIS_MNEMONIC_VMOVLPD,
ZYDIS_MNEMONIC_VMOVLPS,
ZYDIS_MNEMONIC_VMOVMSKPD,
ZYDIS_MNEMONIC_VMOVMSKPS,
ZYDIS_MNEMONIC_VMOVNRAPD,
ZYDIS_MNEMONIC_VMOVNRAPS,
ZYDIS_MNEMONIC_VMOVNRNGOAPD,
ZYDIS_MNEMONIC_VMOVNRNGOAPS,
ZYDIS_MNEMONIC_VMOVNTDQ,
ZYDIS_MNEMONIC_VMOVNTDQA,
ZYDIS_MNEMONIC_VMOVNTPD,
ZYDIS_MNEMONIC_VMOVNTPS,
ZYDIS_MNEMONIC_VMOVQ,
ZYDIS_MNEMONIC_VMOVSD,
ZYDIS_MNEMONIC_VMOVSHDUP,
ZYDIS_MNEMONIC_VMOVSLDUP,
ZYDIS_MNEMONIC_VMOVSS,
ZYDIS_MNEMONIC_VMOVUPD,
ZYDIS_MNEMONIC_VMOVUPS,
ZYDIS_MNEMONIC_VMPSADBW,
ZYDIS_MNEMONIC_VMPTRLD,
ZYDIS_MNEMONIC_VMPTRST,
ZYDIS_MNEMONIC_VMREAD,
ZYDIS_MNEMONIC_VMRESUME,
ZYDIS_MNEMONIC_VMRUN,
ZYDIS_MNEMONIC_VMSAVE,
ZYDIS_MNEMONIC_VMULPD,
ZYDIS_MNEMONIC_VMULPS,
ZYDIS_MNEMONIC_VMULSD,
ZYDIS_MNEMONIC_VMULSS,
ZYDIS_MNEMONIC_VMWRITE,
ZYDIS_MNEMONIC_VMXOFF,
ZYDIS_MNEMONIC_VMXON,
ZYDIS_MNEMONIC_VORPD,
ZYDIS_MNEMONIC_VORPS,
ZYDIS_MNEMONIC_VP4DPWSSD,
ZYDIS_MNEMONIC_VP4DPWSSDS,
ZYDIS_MNEMONIC_VPABSB,
ZYDIS_MNEMONIC_VPABSD,
ZYDIS_MNEMONIC_VPABSQ,
ZYDIS_MNEMONIC_VPABSW,
ZYDIS_MNEMONIC_VPACKSSDW,
ZYDIS_MNEMONIC_VPACKSSWB,
ZYDIS_MNEMONIC_VPACKSTOREHD,
ZYDIS_MNEMONIC_VPACKSTOREHPD,
ZYDIS_MNEMONIC_VPACKSTOREHPS,
ZYDIS_MNEMONIC_VPACKSTOREHQ,
ZYDIS_MNEMONIC_VPACKSTORELD,
ZYDIS_MNEMONIC_VPACKSTORELPD,
ZYDIS_MNEMONIC_VPACKSTORELPS,
ZYDIS_MNEMONIC_VPACKSTORELQ,
ZYDIS_MNEMONIC_VPACKUSDW,
ZYDIS_MNEMONIC_VPACKUSWB,
ZYDIS_MNEMONIC_VPADCD,
ZYDIS_MNEMONIC_VPADDB,
ZYDIS_MNEMONIC_VPADDD,
ZYDIS_MNEMONIC_VPADDQ,
ZYDIS_MNEMONIC_VPADDSB,
ZYDIS_MNEMONIC_VPADDSETCD,
ZYDIS_MNEMONIC_VPADDSETSD,
ZYDIS_MNEMONIC_VPADDSW,
ZYDIS_MNEMONIC_VPADDUSB,
ZYDIS_MNEMONIC_VPADDUSW,
ZYDIS_MNEMONIC_VPADDW,
ZYDIS_MNEMONIC_VPALIGNR,
ZYDIS_MNEMONIC_VPAND,
ZYDIS_MNEMONIC_VPANDD,
ZYDIS_MNEMONIC_VPANDN,
ZYDIS_MNEMONIC_VPANDND,
ZYDIS_MNEMONIC_VPANDNQ,
ZYDIS_MNEMONIC_VPANDQ,
ZYDIS_MNEMONIC_VPAVGB,
ZYDIS_MNEMONIC_VPAVGW,
ZYDIS_MNEMONIC_VPBLENDD,
ZYDIS_MNEMONIC_VPBLENDMB,
ZYDIS_MNEMONIC_VPBLENDMD,
ZYDIS_MNEMONIC_VPBLENDMQ,
ZYDIS_MNEMONIC_VPBLENDMW,
ZYDIS_MNEMONIC_VPBLENDVB,
ZYDIS_MNEMONIC_VPBLENDW,
ZYDIS_MNEMONIC_VPBROADCASTB,
ZYDIS_MNEMONIC_VPBROADCASTD,
ZYDIS_MNEMONIC_VPBROADCASTMB2Q,
ZYDIS_MNEMONIC_VPBROADCASTMW2D,
ZYDIS_MNEMONIC_VPBROADCASTQ,
ZYDIS_MNEMONIC_VPBROADCASTW,
ZYDIS_MNEMONIC_VPCLMULQDQ,
ZYDIS_MNEMONIC_VPCMOV,
ZYDIS_MNEMONIC_VPCMPB,
ZYDIS_MNEMONIC_VPCMPD,
ZYDIS_MNEMONIC_VPCMPEQB,
ZYDIS_MNEMONIC_VPCMPEQD,
ZYDIS_MNEMONIC_VPCMPEQQ,
ZYDIS_MNEMONIC_VPCMPEQW,
ZYDIS_MNEMONIC_VPCMPESTRI,
ZYDIS_MNEMONIC_VPCMPESTRM,
ZYDIS_MNEMONIC_VPCMPGTB,
ZYDIS_MNEMONIC_VPCMPGTD,
ZYDIS_MNEMONIC_VPCMPGTQ,
ZYDIS_MNEMONIC_VPCMPGTW,
ZYDIS_MNEMONIC_VPCMPISTRI,
ZYDIS_MNEMONIC_VPCMPISTRM,
ZYDIS_MNEMONIC_VPCMPLTD,
ZYDIS_MNEMONIC_VPCMPQ,
ZYDIS_MNEMONIC_VPCMPUB,
ZYDIS_MNEMONIC_VPCMPUD,
ZYDIS_MNEMONIC_VPCMPUQ,
ZYDIS_MNEMONIC_VPCMPUW,
ZYDIS_MNEMONIC_VPCMPW,
ZYDIS_MNEMONIC_VPCOMB,
ZYDIS_MNEMONIC_VPCOMD,
ZYDIS_MNEMONIC_VPCOMPRESSB,
ZYDIS_MNEMONIC_VPCOMPRESSD,
ZYDIS_MNEMONIC_VPCOMPRESSQ,
ZYDIS_MNEMONIC_VPCOMPRESSW,
ZYDIS_MNEMONIC_VPCOMQ,
ZYDIS_MNEMONIC_VPCOMUB,
ZYDIS_MNEMONIC_VPCOMUD,
ZYDIS_MNEMONIC_VPCOMUQ,
ZYDIS_MNEMONIC_VPCOMUW,
ZYDIS_MNEMONIC_VPCOMW,
ZYDIS_MNEMONIC_VPCONFLICTD,
ZYDIS_MNEMONIC_VPCONFLICTQ,
ZYDIS_MNEMONIC_VPDPBUSD,
ZYDIS_MNEMONIC_VPDPBUSDS,
ZYDIS_MNEMONIC_VPDPWSSD,
ZYDIS_MNEMONIC_VPDPWSSDS,
ZYDIS_MNEMONIC_VPERM2F128,
ZYDIS_MNEMONIC_VPERM2I128,
ZYDIS_MNEMONIC_VPERMB,
ZYDIS_MNEMONIC_VPERMD,
ZYDIS_MNEMONIC_VPERMF32X4,
ZYDIS_MNEMONIC_VPERMI2B,
ZYDIS_MNEMONIC_VPERMI2D,
ZYDIS_MNEMONIC_VPERMI2PD,
ZYDIS_MNEMONIC_VPERMI2PS,
ZYDIS_MNEMONIC_VPERMI2Q,
ZYDIS_MNEMONIC_VPERMI2W,
ZYDIS_MNEMONIC_VPERMIL2PD,
ZYDIS_MNEMONIC_VPERMIL2PS,
ZYDIS_MNEMONIC_VPERMILPD,
ZYDIS_MNEMONIC_VPERMILPS,
ZYDIS_MNEMONIC_VPERMPD,
ZYDIS_MNEMONIC_VPERMPS,
ZYDIS_MNEMONIC_VPERMQ,
ZYDIS_MNEMONIC_VPERMT2B,
ZYDIS_MNEMONIC_VPERMT2D,
ZYDIS_MNEMONIC_VPERMT2PD,
ZYDIS_MNEMONIC_VPERMT2PS,
ZYDIS_MNEMONIC_VPERMT2Q,
ZYDIS_MNEMONIC_VPERMT2W,
ZYDIS_MNEMONIC_VPERMW,
ZYDIS_MNEMONIC_VPEXPANDB,
ZYDIS_MNEMONIC_VPEXPANDD,
ZYDIS_MNEMONIC_VPEXPANDQ,
ZYDIS_MNEMONIC_VPEXPANDW,
ZYDIS_MNEMONIC_VPEXTRB,
ZYDIS_MNEMONIC_VPEXTRD,
ZYDIS_MNEMONIC_VPEXTRQ,
ZYDIS_MNEMONIC_VPEXTRW,
ZYDIS_MNEMONIC_VPGATHERDD,
ZYDIS_MNEMONIC_VPGATHERDQ,
ZYDIS_MNEMONIC_VPGATHERQD,
ZYDIS_MNEMONIC_VPGATHERQQ,
ZYDIS_MNEMONIC_VPHADDBD,
ZYDIS_MNEMONIC_VPHADDBQ,
ZYDIS_MNEMONIC_VPHADDBW,
ZYDIS_MNEMONIC_VPHADDD,
ZYDIS_MNEMONIC_VPHADDDQ,
ZYDIS_MNEMONIC_VPHADDSW,
ZYDIS_MNEMONIC_VPHADDUBD,
ZYDIS_MNEMONIC_VPHADDUBQ,
ZYDIS_MNEMONIC_VPHADDUBW,
ZYDIS_MNEMONIC_VPHADDUDQ,
ZYDIS_MNEMONIC_VPHADDUWD,
ZYDIS_MNEMONIC_VPHADDUWQ,
ZYDIS_MNEMONIC_VPHADDW,
ZYDIS_MNEMONIC_VPHADDWD,
ZYDIS_MNEMONIC_VPHADDWQ,
ZYDIS_MNEMONIC_VPHMINPOSUW,
ZYDIS_MNEMONIC_VPHSUBBW,
ZYDIS_MNEMONIC_VPHSUBD,
ZYDIS_MNEMONIC_VPHSUBDQ,
ZYDIS_MNEMONIC_VPHSUBSW,
ZYDIS_MNEMONIC_VPHSUBW,
ZYDIS_MNEMONIC_VPHSUBWD,
ZYDIS_MNEMONIC_VPINSRB,
ZYDIS_MNEMONIC_VPINSRD,
ZYDIS_MNEMONIC_VPINSRQ,
ZYDIS_MNEMONIC_VPINSRW,
ZYDIS_MNEMONIC_VPLZCNTD,
ZYDIS_MNEMONIC_VPLZCNTQ,
ZYDIS_MNEMONIC_VPMACSDD,
ZYDIS_MNEMONIC_VPMACSDQH,
ZYDIS_MNEMONIC_VPMACSDQL,
ZYDIS_MNEMONIC_VPMACSSDD,
ZYDIS_MNEMONIC_VPMACSSDQH,
ZYDIS_MNEMONIC_VPMACSSDQL,
ZYDIS_MNEMONIC_VPMACSSWD,
ZYDIS_MNEMONIC_VPMACSSWW,
ZYDIS_MNEMONIC_VPMACSWD,
ZYDIS_MNEMONIC_VPMACSWW,
ZYDIS_MNEMONIC_VPMADCSSWD,
ZYDIS_MNEMONIC_VPMADCSWD,
ZYDIS_MNEMONIC_VPMADD231D,
ZYDIS_MNEMONIC_VPMADD233D,
ZYDIS_MNEMONIC_VPMADD52HUQ,
ZYDIS_MNEMONIC_VPMADD52LUQ,
ZYDIS_MNEMONIC_VPMADDUBSW,
ZYDIS_MNEMONIC_VPMADDWD,
ZYDIS_MNEMONIC_VPMASKMOVD,
ZYDIS_MNEMONIC_VPMASKMOVQ,
ZYDIS_MNEMONIC_VPMAXSB,
ZYDIS_MNEMONIC_VPMAXSD,
ZYDIS_MNEMONIC_VPMAXSQ,
ZYDIS_MNEMONIC_VPMAXSW,
ZYDIS_MNEMONIC_VPMAXUB,
ZYDIS_MNEMONIC_VPMAXUD,
ZYDIS_MNEMONIC_VPMAXUQ,
ZYDIS_MNEMONIC_VPMAXUW,
ZYDIS_MNEMONIC_VPMINSB,
ZYDIS_MNEMONIC_VPMINSD,
ZYDIS_MNEMONIC_VPMINSQ,
ZYDIS_MNEMONIC_VPMINSW,
ZYDIS_MNEMONIC_VPMINUB,
ZYDIS_MNEMONIC_VPMINUD,
ZYDIS_MNEMONIC_VPMINUQ,
ZYDIS_MNEMONIC_VPMINUW,
ZYDIS_MNEMONIC_VPMOVB2M,
ZYDIS_MNEMONIC_VPMOVD2M,
ZYDIS_MNEMONIC_VPMOVDB,
ZYDIS_MNEMONIC_VPMOVDW,
ZYDIS_MNEMONIC_VPMOVM2B,
ZYDIS_MNEMONIC_VPMOVM2D,
ZYDIS_MNEMONIC_VPMOVM2Q,
ZYDIS_MNEMONIC_VPMOVM2W,
ZYDIS_MNEMONIC_VPMOVMSKB,
ZYDIS_MNEMONIC_VPMOVQ2M,
ZYDIS_MNEMONIC_VPMOVQB,
ZYDIS_MNEMONIC_VPMOVQD,
ZYDIS_MNEMONIC_VPMOVQW,
ZYDIS_MNEMONIC_VPMOVSDB,
ZYDIS_MNEMONIC_VPMOVSDW,
ZYDIS_MNEMONIC_VPMOVSQB,
ZYDIS_MNEMONIC_VPMOVSQD,
ZYDIS_MNEMONIC_VPMOVSQW,
ZYDIS_MNEMONIC_VPMOVSWB,
ZYDIS_MNEMONIC_VPMOVSXBD,
ZYDIS_MNEMONIC_VPMOVSXBQ,
ZYDIS_MNEMONIC_VPMOVSXBW,
ZYDIS_MNEMONIC_VPMOVSXDQ,
ZYDIS_MNEMONIC_VPMOVSXWD,
ZYDIS_MNEMONIC_VPMOVSXWQ,
ZYDIS_MNEMONIC_VPMOVUSDB,
ZYDIS_MNEMONIC_VPMOVUSDW,
ZYDIS_MNEMONIC_VPMOVUSQB,
ZYDIS_MNEMONIC_VPMOVUSQD,
ZYDIS_MNEMONIC_VPMOVUSQW,
ZYDIS_MNEMONIC_VPMOVUSWB,
ZYDIS_MNEMONIC_VPMOVW2M,
ZYDIS_MNEMONIC_VPMOVWB,
ZYDIS_MNEMONIC_VPMOVZXBD,
ZYDIS_MNEMONIC_VPMOVZXBQ,
ZYDIS_MNEMONIC_VPMOVZXBW,
ZYDIS_MNEMONIC_VPMOVZXDQ,
ZYDIS_MNEMONIC_VPMOVZXWD,
ZYDIS_MNEMONIC_VPMOVZXWQ,
ZYDIS_MNEMONIC_VPMULDQ,
ZYDIS_MNEMONIC_VPMULHD,
ZYDIS_MNEMONIC_VPMULHRSW,
ZYDIS_MNEMONIC_VPMULHUD,
ZYDIS_MNEMONIC_VPMULHUW,
ZYDIS_MNEMONIC_VPMULHW,
ZYDIS_MNEMONIC_VPMULLD,
ZYDIS_MNEMONIC_VPMULLQ,
ZYDIS_MNEMONIC_VPMULLW,
ZYDIS_MNEMONIC_VPMULTISHIFTQB,
ZYDIS_MNEMONIC_VPMULUDQ,
ZYDIS_MNEMONIC_VPOPCNTB,
ZYDIS_MNEMONIC_VPOPCNTD,
ZYDIS_MNEMONIC_VPOPCNTQ,
ZYDIS_MNEMONIC_VPOPCNTW,
ZYDIS_MNEMONIC_VPOR,
ZYDIS_MNEMONIC_VPORD,
ZYDIS_MNEMONIC_VPORQ,
ZYDIS_MNEMONIC_VPPERM,
ZYDIS_MNEMONIC_VPREFETCH0,
ZYDIS_MNEMONIC_VPREFETCH1,
ZYDIS_MNEMONIC_VPREFETCH2,
ZYDIS_MNEMONIC_VPREFETCHE0,
ZYDIS_MNEMONIC_VPREFETCHE1,
ZYDIS_MNEMONIC_VPREFETCHE2,
ZYDIS_MNEMONIC_VPREFETCHENTA,
ZYDIS_MNEMONIC_VPREFETCHNTA,
ZYDIS_MNEMONIC_VPROLD,
ZYDIS_MNEMONIC_VPROLQ,
ZYDIS_MNEMONIC_VPROLVD,
ZYDIS_MNEMONIC_VPROLVQ,
ZYDIS_MNEMONIC_VPRORD,
ZYDIS_MNEMONIC_VPRORQ,
ZYDIS_MNEMONIC_VPRORVD,
ZYDIS_MNEMONIC_VPRORVQ,
ZYDIS_MNEMONIC_VPROTB,
ZYDIS_MNEMONIC_VPROTD,
ZYDIS_MNEMONIC_VPROTQ,
ZYDIS_MNEMONIC_VPROTW,
ZYDIS_MNEMONIC_VPSADBW,
ZYDIS_MNEMONIC_VPSBBD,
ZYDIS_MNEMONIC_VPSBBRD,
ZYDIS_MNEMONIC_VPSCATTERDD,
ZYDIS_MNEMONIC_VPSCATTERDQ,
ZYDIS_MNEMONIC_VPSCATTERQD,
ZYDIS_MNEMONIC_VPSCATTERQQ,
ZYDIS_MNEMONIC_VPSHAB,
ZYDIS_MNEMONIC_VPSHAD,
ZYDIS_MNEMONIC_VPSHAQ,
ZYDIS_MNEMONIC_VPSHAW,
ZYDIS_MNEMONIC_VPSHLB,
ZYDIS_MNEMONIC_VPSHLD,
ZYDIS_MNEMONIC_VPSHLDD,
ZYDIS_MNEMONIC_VPSHLDQ,
ZYDIS_MNEMONIC_VPSHLDVD,
ZYDIS_MNEMONIC_VPSHLDVQ,
ZYDIS_MNEMONIC_VPSHLDVW,
ZYDIS_MNEMONIC_VPSHLDW,
ZYDIS_MNEMONIC_VPSHLQ,
ZYDIS_MNEMONIC_VPSHLW,
ZYDIS_MNEMONIC_VPSHRDD,
ZYDIS_MNEMONIC_VPSHRDQ,
ZYDIS_MNEMONIC_VPSHRDVD,
ZYDIS_MNEMONIC_VPSHRDVQ,
ZYDIS_MNEMONIC_VPSHRDVW,
ZYDIS_MNEMONIC_VPSHRDW,
ZYDIS_MNEMONIC_VPSHUFB,
ZYDIS_MNEMONIC_VPSHUFBITQMB,
ZYDIS_MNEMONIC_VPSHUFD,
ZYDIS_MNEMONIC_VPSHUFHW,
ZYDIS_MNEMONIC_VPSHUFLW,
ZYDIS_MNEMONIC_VPSIGNB,
ZYDIS_MNEMONIC_VPSIGND,
ZYDIS_MNEMONIC_VPSIGNW,
ZYDIS_MNEMONIC_VPSLLD,
ZYDIS_MNEMONIC_VPSLLDQ,
ZYDIS_MNEMONIC_VPSLLQ,
ZYDIS_MNEMONIC_VPSLLVD,
ZYDIS_MNEMONIC_VPSLLVQ,
ZYDIS_MNEMONIC_VPSLLVW,
ZYDIS_MNEMONIC_VPSLLW,
ZYDIS_MNEMONIC_VPSRAD,
ZYDIS_MNEMONIC_VPSRAQ,
ZYDIS_MNEMONIC_VPSRAVD,
ZYDIS_MNEMONIC_VPSRAVQ,
ZYDIS_MNEMONIC_VPSRAVW,
ZYDIS_MNEMONIC_VPSRAW,
ZYDIS_MNEMONIC_VPSRLD,
ZYDIS_MNEMONIC_VPSRLDQ,
ZYDIS_MNEMONIC_VPSRLQ,
ZYDIS_MNEMONIC_VPSRLVD,
ZYDIS_MNEMONIC_VPSRLVQ,
ZYDIS_MNEMONIC_VPSRLVW,
ZYDIS_MNEMONIC_VPSRLW,
ZYDIS_MNEMONIC_VPSUBB,
ZYDIS_MNEMONIC_VPSUBD,
ZYDIS_MNEMONIC_VPSUBQ,
ZYDIS_MNEMONIC_VPSUBRD,
ZYDIS_MNEMONIC_VPSUBRSETBD,
ZYDIS_MNEMONIC_VPSUBSB,
ZYDIS_MNEMONIC_VPSUBSETBD,
ZYDIS_MNEMONIC_VPSUBSW,
ZYDIS_MNEMONIC_VPSUBUSB,
ZYDIS_MNEMONIC_VPSUBUSW,
ZYDIS_MNEMONIC_VPSUBW,
ZYDIS_MNEMONIC_VPTERNLOGD,
ZYDIS_MNEMONIC_VPTERNLOGQ,
ZYDIS_MNEMONIC_VPTEST,
ZYDIS_MNEMONIC_VPTESTMB,
ZYDIS_MNEMONIC_VPTESTMD,
ZYDIS_MNEMONIC_VPTESTMQ,
ZYDIS_MNEMONIC_VPTESTMW,
ZYDIS_MNEMONIC_VPTESTNMB,
ZYDIS_MNEMONIC_VPTESTNMD,
ZYDIS_MNEMONIC_VPTESTNMQ,
ZYDIS_MNEMONIC_VPTESTNMW,
ZYDIS_MNEMONIC_VPUNPCKHBW,
ZYDIS_MNEMONIC_VPUNPCKHDQ,
ZYDIS_MNEMONIC_VPUNPCKHQDQ,
ZYDIS_MNEMONIC_VPUNPCKHWD,
ZYDIS_MNEMONIC_VPUNPCKLBW,
ZYDIS_MNEMONIC_VPUNPCKLDQ,
ZYDIS_MNEMONIC_VPUNPCKLQDQ,
ZYDIS_MNEMONIC_VPUNPCKLWD,
ZYDIS_MNEMONIC_VPXOR,
ZYDIS_MNEMONIC_VPXORD,
ZYDIS_MNEMONIC_VPXORQ,
ZYDIS_MNEMONIC_VRANGEPD,
ZYDIS_MNEMONIC_VRANGEPS,
ZYDIS_MNEMONIC_VRANGESD,
ZYDIS_MNEMONIC_VRANGESS,
ZYDIS_MNEMONIC_VRCP14PD,
ZYDIS_MNEMONIC_VRCP14PS,
ZYDIS_MNEMONIC_VRCP14SD,
ZYDIS_MNEMONIC_VRCP14SS,
ZYDIS_MNEMONIC_VRCP23PS,
ZYDIS_MNEMONIC_VRCP28PD,
ZYDIS_MNEMONIC_VRCP28PS,
ZYDIS_MNEMONIC_VRCP28SD,
ZYDIS_MNEMONIC_VRCP28SS,
ZYDIS_MNEMONIC_VRCPPS,
ZYDIS_MNEMONIC_VRCPSS,
ZYDIS_MNEMONIC_VREDUCEPD,
ZYDIS_MNEMONIC_VREDUCEPS,
ZYDIS_MNEMONIC_VREDUCESD,
ZYDIS_MNEMONIC_VREDUCESS,
ZYDIS_MNEMONIC_VRNDFXPNTPD,
ZYDIS_MNEMONIC_VRNDFXPNTPS,
ZYDIS_MNEMONIC_VRNDSCALEPD,
ZYDIS_MNEMONIC_VRNDSCALEPS,
ZYDIS_MNEMONIC_VRNDSCALESD,
ZYDIS_MNEMONIC_VRNDSCALESS,
ZYDIS_MNEMONIC_VROUNDPD,
ZYDIS_MNEMONIC_VROUNDPS,
ZYDIS_MNEMONIC_VROUNDSD,
ZYDIS_MNEMONIC_VROUNDSS,
ZYDIS_MNEMONIC_VRSQRT14PD,
ZYDIS_MNEMONIC_VRSQRT14PS,
ZYDIS_MNEMONIC_VRSQRT14SD,
ZYDIS_MNEMONIC_VRSQRT14SS,
ZYDIS_MNEMONIC_VRSQRT23PS,
ZYDIS_MNEMONIC_VRSQRT28PD,
ZYDIS_MNEMONIC_VRSQRT28PS,
ZYDIS_MNEMONIC_VRSQRT28SD,
ZYDIS_MNEMONIC_VRSQRT28SS,
ZYDIS_MNEMONIC_VRSQRTPS,
ZYDIS_MNEMONIC_VRSQRTSS,
ZYDIS_MNEMONIC_VSCALEFPD,
ZYDIS_MNEMONIC_VSCALEFPS,
ZYDIS_MNEMONIC_VSCALEFSD,
ZYDIS_MNEMONIC_VSCALEFSS,
ZYDIS_MNEMONIC_VSCALEPS,
ZYDIS_MNEMONIC_VSCATTERDPD,
ZYDIS_MNEMONIC_VSCATTERDPS,
ZYDIS_MNEMONIC_VSCATTERPF0DPD,
ZYDIS_MNEMONIC_VSCATTERPF0DPS,
ZYDIS_MNEMONIC_VSCATTERPF0HINTDPD,
ZYDIS_MNEMONIC_VSCATTERPF0HINTDPS,
ZYDIS_MNEMONIC_VSCATTERPF0QPD,
ZYDIS_MNEMONIC_VSCATTERPF0QPS,
ZYDIS_MNEMONIC_VSCATTERPF1DPD,
ZYDIS_MNEMONIC_VSCATTERPF1DPS,
ZYDIS_MNEMONIC_VSCATTERPF1QPD,
ZYDIS_MNEMONIC_VSCATTERPF1QPS,
ZYDIS_MNEMONIC_VSCATTERQPD,
ZYDIS_MNEMONIC_VSCATTERQPS,
ZYDIS_MNEMONIC_VSHUFF32X4,
ZYDIS_MNEMONIC_VSHUFF64X2,
ZYDIS_MNEMONIC_VSHUFI32X4,
ZYDIS_MNEMONIC_VSHUFI64X2,
ZYDIS_MNEMONIC_VSHUFPD,
ZYDIS_MNEMONIC_VSHUFPS,
ZYDIS_MNEMONIC_VSQRTPD,
ZYDIS_MNEMONIC_VSQRTPS,
ZYDIS_MNEMONIC_VSQRTSD,
ZYDIS_MNEMONIC_VSQRTSS,
ZYDIS_MNEMONIC_VSTMXCSR,
ZYDIS_MNEMONIC_VSUBPD,
ZYDIS_MNEMONIC_VSUBPS,
ZYDIS_MNEMONIC_VSUBRPD,
ZYDIS_MNEMONIC_VSUBRPS,
ZYDIS_MNEMONIC_VSUBSD,
ZYDIS_MNEMONIC_VSUBSS,
ZYDIS_MNEMONIC_VTESTPD,
ZYDIS_MNEMONIC_VTESTPS,
ZYDIS_MNEMONIC_VUCOMISD,
ZYDIS_MNEMONIC_VUCOMISS,
ZYDIS_MNEMONIC_VUNPCKHPD,
ZYDIS_MNEMONIC_VUNPCKHPS,
ZYDIS_MNEMONIC_VUNPCKLPD,
ZYDIS_MNEMONIC_VUNPCKLPS,
ZYDIS_MNEMONIC_VXORPD,
ZYDIS_MNEMONIC_VXORPS,
ZYDIS_MNEMONIC_VZEROALL,
ZYDIS_MNEMONIC_VZEROUPPER,
ZYDIS_MNEMONIC_WBINVD,
ZYDIS_MNEMONIC_WRFSBASE,
ZYDIS_MNEMONIC_WRGSBASE,
ZYDIS_MNEMONIC_WRMSR,
ZYDIS_MNEMONIC_WRPKRU,
ZYDIS_MNEMONIC_WRSSD,
ZYDIS_MNEMONIC_WRSSQ,
ZYDIS_MNEMONIC_WRUSSD,
ZYDIS_MNEMONIC_WRUSSQ,
ZYDIS_MNEMONIC_XABORT,
ZYDIS_MNEMONIC_XADD,
ZYDIS_MNEMONIC_XBEGIN,
ZYDIS_MNEMONIC_XCHG,
ZYDIS_MNEMONIC_XCRYPT_CBC,
ZYDIS_MNEMONIC_XCRYPT_CFB,
ZYDIS_MNEMONIC_XCRYPT_CTR,
ZYDIS_MNEMONIC_XCRYPT_ECB,
ZYDIS_MNEMONIC_XCRYPT_OFB,
ZYDIS_MNEMONIC_XEND,
ZYDIS_MNEMONIC_XGETBV,
ZYDIS_MNEMONIC_XLAT,
ZYDIS_MNEMONIC_XOR,
ZYDIS_MNEMONIC_XORPD,
ZYDIS_MNEMONIC_XORPS,
ZYDIS_MNEMONIC_XRSTOR,
ZYDIS_MNEMONIC_XRSTOR64,
ZYDIS_MNEMONIC_XRSTORS,
ZYDIS_MNEMONIC_XRSTORS64,
ZYDIS_MNEMONIC_XSAVE,
ZYDIS_MNEMONIC_XSAVE64,
ZYDIS_MNEMONIC_XSAVEC,
ZYDIS_MNEMONIC_XSAVEC64,
ZYDIS_MNEMONIC_XSAVEOPT,
ZYDIS_MNEMONIC_XSAVEOPT64,
ZYDIS_MNEMONIC_XSAVES,
ZYDIS_MNEMONIC_XSAVES64,
ZYDIS_MNEMONIC_XSETBV,
ZYDIS_MNEMONIC_XSHA1,
ZYDIS_MNEMONIC_XSHA256,
ZYDIS_MNEMONIC_XSTORE,
ZYDIS_MNEMONIC_XTEST,
* @brief Maximum value of this enum.
*/
ZYDIS_MNEMONIC_MAX_VALUE = ZYDIS_MNEMONIC_XTEST,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_MNEMONIC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MNEMONIC_MAX_VALUE)
} ZydisMnemonic;
* @brief Defines the `ZydisOperandType` enum.
*/
typedef enum ZydisOperandType_
{
* @brief The operand is not used.
*/
ZYDIS_OPERAND_TYPE_UNUSED,
* @brief The operand is a register operand.
*/
ZYDIS_OPERAND_TYPE_REGISTER,
* @brief The operand is a memory operand.
*/
ZYDIS_OPERAND_TYPE_MEMORY,
* @brief The operand is a pointer operand with a segment:offset lvalue.
*/
ZYDIS_OPERAND_TYPE_POINTER,
* @brief The operand is an immediate operand.
*/
ZYDIS_OPERAND_TYPE_IMMEDIATE,
* @brief Maximum value of this enum.
*/
ZYDIS_OPERAND_TYPE_MAX_VALUE = ZYDIS_OPERAND_TYPE_IMMEDIATE,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_OPERAND_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE)
} ZydisOperandType;
* @brief Defines the `ZydisElementSize` datatype.
*/
typedef ZyanU16 ZydisElementSize;
* @brief Defines the `ZydisInstructionAttributes` datatype.
*/
typedef ZyanU64 ZydisInstructionAttributes;
* @brief Defines the `ZydisOperandEncoding` enum.
*/
typedef enum ZydisOperandEncoding_
{
ZYDIS_OPERAND_ENCODING_NONE,
ZYDIS_OPERAND_ENCODING_MODRM_REG,
ZYDIS_OPERAND_ENCODING_MODRM_RM,
ZYDIS_OPERAND_ENCODING_OPCODE,
ZYDIS_OPERAND_ENCODING_NDSNDD,
ZYDIS_OPERAND_ENCODING_IS4,
ZYDIS_OPERAND_ENCODING_MASK,
ZYDIS_OPERAND_ENCODING_DISP8,
ZYDIS_OPERAND_ENCODING_DISP16,
ZYDIS_OPERAND_ENCODING_DISP32,
ZYDIS_OPERAND_ENCODING_DISP64,
ZYDIS_OPERAND_ENCODING_DISP16_32_64,
ZYDIS_OPERAND_ENCODING_DISP32_32_64,
ZYDIS_OPERAND_ENCODING_DISP16_32_32,
ZYDIS_OPERAND_ENCODING_UIMM8,
ZYDIS_OPERAND_ENCODING_UIMM16,
ZYDIS_OPERAND_ENCODING_UIMM32,
ZYDIS_OPERAND_ENCODING_UIMM64,
ZYDIS_OPERAND_ENCODING_UIMM16_32_64,
ZYDIS_OPERAND_ENCODING_UIMM32_32_64,
ZYDIS_OPERAND_ENCODING_UIMM16_32_32,
ZYDIS_OPERAND_ENCODING_SIMM8,
ZYDIS_OPERAND_ENCODING_SIMM16,
ZYDIS_OPERAND_ENCODING_SIMM32,
ZYDIS_OPERAND_ENCODING_SIMM64,
ZYDIS_OPERAND_ENCODING_SIMM16_32_64,
ZYDIS_OPERAND_ENCODING_SIMM32_32_64,
ZYDIS_OPERAND_ENCODING_SIMM16_32_32,
ZYDIS_OPERAND_ENCODING_JIMM8,
ZYDIS_OPERAND_ENCODING_JIMM16,
ZYDIS_OPERAND_ENCODING_JIMM32,
ZYDIS_OPERAND_ENCODING_JIMM64,
ZYDIS_OPERAND_ENCODING_JIMM16_32_64,
ZYDIS_OPERAND_ENCODING_JIMM32_32_64,
ZYDIS_OPERAND_ENCODING_JIMM16_32_32,
* @brief Maximum value of this enum.
*/
ZYDIS_OPERAND_ENCODING_MAX_VALUE = ZYDIS_OPERAND_ENCODING_JIMM16_32_32,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_OPERAND_ENCODING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ENCODING_MAX_VALUE)
} ZydisOperandEncoding;
* @brief Defines the `ZydisOperandVisibility` enum.
*/
typedef enum ZydisOperandVisibility_
{
ZYDIS_OPERAND_VISIBILITY_INVALID,
* @brief The operand is explicitly encoded in the instruction.
*/
ZYDIS_OPERAND_VISIBILITY_EXPLICIT,
* @brief The operand is part of the opcode, but listed as an operand.
*/
ZYDIS_OPERAND_VISIBILITY_IMPLICIT,
* @brief The operand is part of the opcode, and not typically listed as an operand.
*/
ZYDIS_OPERAND_VISIBILITY_HIDDEN,
* @brief Maximum value of this enum.
*/
ZYDIS_OPERAND_VISIBILITY_MAX_VALUE = ZYDIS_OPERAND_VISIBILITY_HIDDEN,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS =
ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_VISIBILITY_MAX_VALUE)
} ZydisOperandVisibility;
* @brief Defines the `ZydisOperandAction` enum.
*/
typedef enum ZydisOperandAction_
{
* @brief The operand is read by the instruction.
*/
ZYDIS_OPERAND_ACTION_READ = 0x01,
* @brief The operand is written by the instruction (must write).
*/
ZYDIS_OPERAND_ACTION_WRITE = 0x02,
* @brief The operand is conditionally read by the instruction.
*/
ZYDIS_OPERAND_ACTION_CONDREAD = 0x04,
* @brief The operand is conditionally written by the instruction (may write).
*/
ZYDIS_OPERAND_ACTION_CONDWRITE = 0x08,
* @brief The operand is read (must read) and written by the instruction (must write).
*/
ZYDIS_OPERAND_ACTION_READWRITE = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_WRITE,
* @brief The operand is conditionally read (may read) and conditionally written by the
* instruction (may write).
*/
ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE =
ZYDIS_OPERAND_ACTION_CONDREAD | ZYDIS_OPERAND_ACTION_CONDWRITE,
* @brief The operand is read (must read) and conditionally written by the instruction
* (may write).
*/
ZYDIS_OPERAND_ACTION_READ_CONDWRITE =
ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_CONDWRITE,
* @brief The operand is written (must write) and conditionally read by the instruction
* (may read).
*/
ZYDIS_OPERAND_ACTION_CONDREAD_WRITE =
ZYDIS_OPERAND_ACTION_CONDREAD | ZYDIS_OPERAND_ACTION_WRITE,
* @brief Mask combining all reading access flags.
*/
ZYDIS_OPERAND_ACTION_MASK_READ = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_CONDREAD,
* @brief Mask combining all writing access flags.
*/
ZYDIS_OPERAND_ACTION_MASK_WRITE = ZYDIS_OPERAND_ACTION_WRITE | ZYDIS_OPERAND_ACTION_CONDWRITE,
* @brief The minimum number of bits required to represent all values of this bitset.
*/
ZYDIS_OPERAND_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ACTION_CONDWRITE)
} ZydisOperandAction;
* @brief Defines the `ZydisOperandActions` datatype.
*/
typedef ZyanU8 ZydisOperandActions;
* @brief Defines the `ZydisElementType` enum.
*/
typedef enum ZydisElementType_
{
ZYDIS_ELEMENT_TYPE_INVALID,
* @brief A struct type.
*/
ZYDIS_ELEMENT_TYPE_STRUCT,
* @brief Unsigned integer value.
*/
ZYDIS_ELEMENT_TYPE_UINT,
* @brief Signed integer value.
*/
ZYDIS_ELEMENT_TYPE_INT,
* @brief 16-bit floating point value (`half`).
*/
ZYDIS_ELEMENT_TYPE_FLOAT16,
* @brief 32-bit floating point value (`single`).
*/
ZYDIS_ELEMENT_TYPE_FLOAT32,
* @brief 64-bit floating point value (`double`).
*/
ZYDIS_ELEMENT_TYPE_FLOAT64,
* @brief 80-bit floating point value (`extended`).
*/
ZYDIS_ELEMENT_TYPE_FLOAT80,
* @brief Binary coded decimal value.
*/
ZYDIS_ELEMENT_TYPE_LONGBCD,
* @brief A condition code (e.g. used by `CMPPD`, `VCMPPD`, ...).
*/
ZYDIS_ELEMENT_TYPE_CC,
* @brief Maximum value of this enum.
*/
ZYDIS_ELEMENT_TYPE_MAX_VALUE = ZYDIS_ELEMENT_TYPE_CC,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_ELEMENT_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ELEMENT_TYPE_MAX_VALUE)
} ZydisElementType;
* @brief Defines the `ZydisInstructionEncoding` enum.
*/
typedef enum ZydisInstructionEncoding_
{
* @brief The instruction uses the legacy encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_LEGACY,
* @brief The instruction uses the AMD 3DNow-encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_3DNOW,
* @brief The instruction uses the AMD XOP-encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_XOP,
* @brief The instruction uses the VEX-encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_VEX,
* @brief The instruction uses the EVEX-encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_EVEX,
* @brief The instruction uses the MVEX-encoding.
*/
ZYDIS_INSTRUCTION_ENCODING_MVEX,
* @brief Maximum value of this enum.
*/
ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE = ZYDIS_INSTRUCTION_ENCODING_MVEX,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS =
ZYAN_BITS_TO_REPRESENT(ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE)
} ZydisInstructionEncoding;
* @brief Defines the `ZydisOpcodeMap` enum.
*/
typedef enum ZydisOpcodeMap_
{
ZYDIS_OPCODE_MAP_DEFAULT,
ZYDIS_OPCODE_MAP_0F,
ZYDIS_OPCODE_MAP_0F38,
ZYDIS_OPCODE_MAP_0F3A,
ZYDIS_OPCODE_MAP_0F0F,
ZYDIS_OPCODE_MAP_XOP8,
ZYDIS_OPCODE_MAP_XOP9,
ZYDIS_OPCODE_MAP_XOPA,
* @brief Maximum value of this enum.
*/
ZYDIS_OPCODE_MAP_MAX_VALUE = ZYDIS_OPCODE_MAP_XOPA,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_OPCODE_MAP_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPCODE_MAP_MAX_VALUE)
} ZydisOpcodeMap;
* @brief Defines the `ZydisMemoryOperandType` enum.
*/
typedef enum ZydisMemoryOperandType_
{
ZYDIS_MEMOP_TYPE_INVALID,
* @brief Normal memory operand.
*/
ZYDIS_MEMOP_TYPE_MEM,
* @brief The memory operand is only used for address-generation. No real memory-access is
* caused.
*/
ZYDIS_MEMOP_TYPE_AGEN,
* @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 caused.
*/
ZYDIS_MEMOP_TYPE_MIB,
* @brief Maximum value of this enum.
*/
ZYDIS_MEMOP_TYPE_MAX_VALUE = ZYDIS_MEMOP_TYPE_MIB,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_MEMOP_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MEMOP_TYPE_MAX_VALUE)
} ZydisMemoryOperandType;
* @brief Defines the `ZydisDecodedOperand` struct.
*/
typedef struct ZydisDecodedOperand_
{
* @brief The operand-id.
*/
ZyanU8 id;
* @brief The type of the operand.
*/
ZydisOperandType type;
* @brief The visibility of the operand.
*/
ZydisOperandVisibility visibility;
* @brief The operand-actions.
*/
ZydisOperandActions actions;
* @brief The operand-encoding.
*/
ZydisOperandEncoding encoding;
* @brief The logical size of the operand (in bits).
*/
ZyanU16 size;
* @brief The element-type.
*/
ZydisElementType element_type;
* @brief The size of a single element.
*/
ZydisElementSize element_size;
* @brief The number of elements.
*/
ZyanU16 element_count;
* @brief Extended info for register-operands.
*/
struct
{
* @brief The register value.
*/
ZydisRegister value;
} reg;
* @brief Extended info for memory-operands.
*/
struct
{
* @brief The type of the memory operand.
*/
ZydisMemoryOperandType type;
* @brief The segment register.
*/
ZydisRegister segment;
* @brief The base register.
*/
ZydisRegister base;
* @brief The index register.
*/
ZydisRegister index;
* @brief The scale factor.
*/
ZyanU8 scale;
* @brief Extended info for memory-operands with displacement.
*/
struct
{
* @brief Signals, if the displacement value is used.
*/
ZyanBool has_displacement;
* @brief The displacement value
*/
ZyanI64 value;
} disp;
} mem;
* @brief Extended info for pointer-operands.
*/
struct
{
ZyanU16 segment;
ZyanU32 offset;
} ptr;
* @brief Extended info for immediate-operands.
*/
struct
{
* @brief Signals, if the immediate value is signed.
*/
ZyanBool is_signed;
* @brief Signals, if the immediate value contains a relative offset. You can use
* `ZydisCalcAbsoluteAddress` to determine the absolute address value.
*/
ZyanBool is_relative;
* @brief The immediate value.
*/
union
{
ZyanU64 u;
ZyanI64 s;
} value;
} imm;
} ZydisDecodedOperand;
* Defines the `ZydisCPUFlags` data-type.
*/
typedef ZyanU32 ZydisCPUFlags;
typedef ZyanU8 ZydisCPUFlag;
* Carry flag.
*/
#define ZYDIS_CPUFLAG_CF 0
* Parity flag.
*/
#define ZYDIS_CPUFLAG_PF 2
* Adjust flag.
*/
#define ZYDIS_CPUFLAG_AF 4
* Zero flag.
*/
#define ZYDIS_CPUFLAG_ZF 6
* Sign flag.
*/
#define ZYDIS_CPUFLAG_SF 7
* Trap flag.
*/
#define ZYDIS_CPUFLAG_TF 8
* Interrupt enable flag.
*/
#define ZYDIS_CPUFLAG_IF 9
* Direction flag.
*/
#define ZYDIS_CPUFLAG_DF 10
* Overflow flag.
*/
#define ZYDIS_CPUFLAG_OF 11
* I/O privilege level flag.
*/
#define ZYDIS_CPUFLAG_IOPL 12
* Nested task flag.
*/
#define ZYDIS_CPUFLAG_NT 14
* Resume flag.
*/
#define ZYDIS_CPUFLAG_RF 16
* Virtual 8086 mode flag.
*/
#define ZYDIS_CPUFLAG_VM 17
* Alignment check.
*/
#define ZYDIS_CPUFLAG_AC 18
* Virtual interrupt flag.
*/
#define ZYDIS_CPUFLAG_VIF 19
* Virtual interrupt pending.
*/
#define ZYDIS_CPUFLAG_VIP 20
* Able to use CPUID instruction.
*/
#define ZYDIS_CPUFLAG_ID 21
* FPU condition-code flag 0.
*
* DEPRECATED. This flag is not actually part of `FLAGS/EFLAGS/RFLAGS` and will be removed in the
* next major release. Please refer to the `fpu_flags_read`/`fpu_flags_written` field instead and
* use one of the `ZYDIS_FPUFLAG_XXX` masks to check for specific a flag.
*/
#define ZYDIS_CPUFLAG_C0 22
* FPU condition-code flag 1.
*
* DEPRECATED. This flag is not actually part of `FLAGS/EFLAGS/RFLAGS` and will be removed in the
* next major release. Please refer to the `fpu_flags_read`/`fpu_flags_written` field instead and
* use one of the `ZYDIS_FPUFLAG_XXX` masks to check for specific a flag.
*/
#define ZYDIS_CPUFLAG_C1 23
* FPU condition-code flag 2.
*
* DEPRECATED. This flag is not actually part of `FLAGS/EFLAGS/RFLAGS` and will be removed in the
* next major release. Please refer to the `fpu_flags_read`/`fpu_flags_written` field instead and
* use one of the `ZYDIS_FPUFLAG_XXX` masks to check for specific a flag.
*/
#define ZYDIS_CPUFLAG_C2 24
* FPU condition-code flag 3.
*
* DEPRECATED. This flag is not actually part of `FLAGS/EFLAGS/RFLAGS` and will be removed in the
* next major release. Please refer to the `fpu_flags_read`/`fpu_flags_written` field instead and
* use one of the `ZYDIS_FPUFLAG_XXX` masks to check for specific a flag.
*/
#define ZYDIS_CPUFLAG_C3 25
* DEPRECATED. This define will be removed in the next major release.
*/
#define ZYDIS_CPUFLAG_MAX_VALUE ZYDIS_CPUFLAG_C3
* @brief Defines the `ZydisMaskMode` enum.
*/
typedef enum ZydisMaskMode_
{
ZYDIS_MASK_MODE_INVALID,
* @brief Masking is disabled for the current instruction (`K0` register is used).
*/
ZYDIS_MASK_MODE_DISABLED,
* @brief The embedded mask register is used as a merge-mask.
*/
ZYDIS_MASK_MODE_MERGING,
* @brief The embedded mask register is used as a zero-mask.
*/
ZYDIS_MASK_MODE_ZEROING,
* @brief The embedded mask register is used as a control-mask (element selector).
*/
ZYDIS_MASK_MODE_CONTROL,
* @brief The embedded mask register is used as a zeroing control-mask (element selector).
*/
ZYDIS_MASK_MODE_CONTROL_ZEROING,
* @brief Maximum value of this enum.
*/
ZYDIS_MASK_MODE_MAX_VALUE = ZYDIS_MASK_MODE_CONTROL_ZEROING,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_MASK_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_MODE_MAX_VALUE)
} ZydisMaskMode;
* @brief Defines the `ZydisBroadcastMode` enum.
*/
typedef enum ZydisBroadcastMode_
{
ZYDIS_BROADCAST_MODE_INVALID,
ZYDIS_BROADCAST_MODE_1_TO_2,
ZYDIS_BROADCAST_MODE_1_TO_4,
ZYDIS_BROADCAST_MODE_1_TO_8,
ZYDIS_BROADCAST_MODE_1_TO_16,
ZYDIS_BROADCAST_MODE_1_TO_32,
ZYDIS_BROADCAST_MODE_1_TO_64,
ZYDIS_BROADCAST_MODE_2_TO_4,
ZYDIS_BROADCAST_MODE_2_TO_8,
ZYDIS_BROADCAST_MODE_2_TO_16,
ZYDIS_BROADCAST_MODE_4_TO_8,
ZYDIS_BROADCAST_MODE_4_TO_16,
ZYDIS_BROADCAST_MODE_8_TO_16,
* @brief Maximum value of this enum.
*/
ZYDIS_BROADCAST_MODE_MAX_VALUE = ZYDIS_BROADCAST_MODE_8_TO_16,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_BROADCAST_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_BROADCAST_MODE_MAX_VALUE)
} ZydisBroadcastMode;
* @brief Defines the `ZydisRoundingMode` enum.
*/
typedef enum ZydisRoundingMode_
{
ZYDIS_ROUNDING_MODE_INVALID,
* @brief Round to nearest.
*/
ZYDIS_ROUNDING_MODE_RN,
* @brief Round down.
*/
ZYDIS_ROUNDING_MODE_RD,
* @brief Round up.
*/
ZYDIS_ROUNDING_MODE_RU,
* @brief Round towards zero.
*/
ZYDIS_ROUNDING_MODE_RZ,
* @brief Maximum value of this enum.
*/
ZYDIS_ROUNDING_MODE_MAX_VALUE = ZYDIS_ROUNDING_MODE_RZ,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_ROUNDING_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ROUNDING_MODE_MAX_VALUE)
} ZydisRoundingMode;
* @brief Defines the `ZydisSwizzleMode` enum.
*/
typedef enum ZydisSwizzleMode_
{
ZYDIS_SWIZZLE_MODE_INVALID,
ZYDIS_SWIZZLE_MODE_DCBA,
ZYDIS_SWIZZLE_MODE_CDAB,
ZYDIS_SWIZZLE_MODE_BADC,
ZYDIS_SWIZZLE_MODE_DACB,
ZYDIS_SWIZZLE_MODE_AAAA,
ZYDIS_SWIZZLE_MODE_BBBB,
ZYDIS_SWIZZLE_MODE_CCCC,
ZYDIS_SWIZZLE_MODE_DDDD,
* @brief Maximum value of this enum.
*/
ZYDIS_SWIZZLE_MODE_MAX_VALUE = ZYDIS_SWIZZLE_MODE_DDDD,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_SWIZZLE_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SWIZZLE_MODE_MAX_VALUE)
} ZydisSwizzleMode;
* @brief Defines the `ZydisConversionMode` enum.
*/
typedef enum ZydisConversionMode_
{
ZYDIS_CONVERSION_MODE_INVALID,
ZYDIS_CONVERSION_MODE_FLOAT16,
ZYDIS_CONVERSION_MODE_SINT8,
ZYDIS_CONVERSION_MODE_UINT8,
ZYDIS_CONVERSION_MODE_SINT16,
ZYDIS_CONVERSION_MODE_UINT16,
* @brief Maximum value of this enum.
*/
ZYDIS_CONVERSION_MODE_MAX_VALUE = ZYDIS_CONVERSION_MODE_UINT16,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_CONVERSION_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_CONVERSION_MODE_MAX_VALUE)
} ZydisConversionMode;
* @brief Defines the `ZydisInstructionCategory` enum.
*/
typedef enum ZydisInstructionCategory_
{
ZYDIS_CATEGORY_INVALID,
ZYDIS_CATEGORY_ADOX_ADCX,
ZYDIS_CATEGORY_AES,
ZYDIS_CATEGORY_AMD3DNOW,
ZYDIS_CATEGORY_AVX,
ZYDIS_CATEGORY_AVX2,
ZYDIS_CATEGORY_AVX2GATHER,
ZYDIS_CATEGORY_AVX512,
ZYDIS_CATEGORY_AVX512_4FMAPS,
ZYDIS_CATEGORY_AVX512_4VNNIW,
ZYDIS_CATEGORY_AVX512_BITALG,
ZYDIS_CATEGORY_AVX512_VBMI,
ZYDIS_CATEGORY_BINARY,
ZYDIS_CATEGORY_BITBYTE,
ZYDIS_CATEGORY_BLEND,
ZYDIS_CATEGORY_BMI1,
ZYDIS_CATEGORY_BMI2,
ZYDIS_CATEGORY_BROADCAST,
ZYDIS_CATEGORY_CALL,
ZYDIS_CATEGORY_CET,
ZYDIS_CATEGORY_CLDEMOTE,
ZYDIS_CATEGORY_CLFLUSHOPT,
ZYDIS_CATEGORY_CLWB,
ZYDIS_CATEGORY_CLZERO,
ZYDIS_CATEGORY_CMOV,
ZYDIS_CATEGORY_COMPRESS,
ZYDIS_CATEGORY_COND_BR,
ZYDIS_CATEGORY_CONFLICT,
ZYDIS_CATEGORY_CONVERT,
ZYDIS_CATEGORY_DATAXFER,
ZYDIS_CATEGORY_DECIMAL,
ZYDIS_CATEGORY_EXPAND,
ZYDIS_CATEGORY_FCMOV,
ZYDIS_CATEGORY_FLAGOP,
ZYDIS_CATEGORY_FMA4,
ZYDIS_CATEGORY_GATHER,
ZYDIS_CATEGORY_GFNI,
ZYDIS_CATEGORY_IFMA,
ZYDIS_CATEGORY_INTERRUPT,
ZYDIS_CATEGORY_IO,
ZYDIS_CATEGORY_IOSTRINGOP,
ZYDIS_CATEGORY_KMASK,
ZYDIS_CATEGORY_KNC,
ZYDIS_CATEGORY_KNCMASK,
ZYDIS_CATEGORY_KNCSCALAR,
ZYDIS_CATEGORY_LOGICAL,
ZYDIS_CATEGORY_LOGICAL_FP,
ZYDIS_CATEGORY_LZCNT,
ZYDIS_CATEGORY_MISC,
ZYDIS_CATEGORY_MMX,
ZYDIS_CATEGORY_MOVDIR,
ZYDIS_CATEGORY_MPX,
ZYDIS_CATEGORY_NOP,
ZYDIS_CATEGORY_PADLOCK,
ZYDIS_CATEGORY_PCLMULQDQ,
ZYDIS_CATEGORY_PCONFIG,
ZYDIS_CATEGORY_PKU,
ZYDIS_CATEGORY_POP,
ZYDIS_CATEGORY_PREFETCH,
ZYDIS_CATEGORY_PREFETCHWT1,
ZYDIS_CATEGORY_PT,
ZYDIS_CATEGORY_PUSH,
ZYDIS_CATEGORY_RDPID,
ZYDIS_CATEGORY_RDRAND,
ZYDIS_CATEGORY_RDSEED,
ZYDIS_CATEGORY_RDWRFSGS,
ZYDIS_CATEGORY_RET,
ZYDIS_CATEGORY_ROTATE,
ZYDIS_CATEGORY_SCATTER,
ZYDIS_CATEGORY_SEGOP,
ZYDIS_CATEGORY_SEMAPHORE,
ZYDIS_CATEGORY_SETCC,
ZYDIS_CATEGORY_SGX,
ZYDIS_CATEGORY_SHA,
ZYDIS_CATEGORY_SHIFT,
ZYDIS_CATEGORY_SMAP,
ZYDIS_CATEGORY_SSE,
ZYDIS_CATEGORY_STRINGOP,
ZYDIS_CATEGORY_STTNI,
ZYDIS_CATEGORY_SYSCALL,
ZYDIS_CATEGORY_SYSRET,
ZYDIS_CATEGORY_SYSTEM,
ZYDIS_CATEGORY_TBM,
ZYDIS_CATEGORY_UFMA,
ZYDIS_CATEGORY_UNCOND_BR,
ZYDIS_CATEGORY_VAES,
ZYDIS_CATEGORY_VBMI2,
ZYDIS_CATEGORY_VFMA,
ZYDIS_CATEGORY_VPCLMULQDQ,
ZYDIS_CATEGORY_VTX,
ZYDIS_CATEGORY_WAITPKG,
ZYDIS_CATEGORY_WIDENOP,
ZYDIS_CATEGORY_X87_ALU,
ZYDIS_CATEGORY_XOP,
ZYDIS_CATEGORY_XSAVE,
ZYDIS_CATEGORY_XSAVEOPT,
* @brief Maximum value of this enum.
*/
ZYDIS_CATEGORY_MAX_VALUE = ZYDIS_CATEGORY_XSAVEOPT,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_CATEGORY_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_CATEGORY_MAX_VALUE)
} ZydisInstructionCategory;
* @brief Defines the `ZydisISASet` enum.
*/
typedef enum ZydisISASet_
{
ZYDIS_ISA_SET_INVALID,
ZYDIS_ISA_SET_ADOX_ADCX,
ZYDIS_ISA_SET_AES,
ZYDIS_ISA_SET_AMD,
ZYDIS_ISA_SET_AMD3DNOW,
ZYDIS_ISA_SET_AVX,
ZYDIS_ISA_SET_AVX2,
ZYDIS_ISA_SET_AVX2GATHER,
ZYDIS_ISA_SET_AVX512BW_128,
ZYDIS_ISA_SET_AVX512BW_128N,
ZYDIS_ISA_SET_AVX512BW_256,
ZYDIS_ISA_SET_AVX512BW_512,
ZYDIS_ISA_SET_AVX512BW_KOP,
ZYDIS_ISA_SET_AVX512CD_128,
ZYDIS_ISA_SET_AVX512CD_256,
ZYDIS_ISA_SET_AVX512CD_512,
ZYDIS_ISA_SET_AVX512DQ_128,
ZYDIS_ISA_SET_AVX512DQ_128N,
ZYDIS_ISA_SET_AVX512DQ_256,
ZYDIS_ISA_SET_AVX512DQ_512,
ZYDIS_ISA_SET_AVX512DQ_KOP,
ZYDIS_ISA_SET_AVX512DQ_SCALAR,
ZYDIS_ISA_SET_AVX512ER_512,
ZYDIS_ISA_SET_AVX512ER_SCALAR,
ZYDIS_ISA_SET_AVX512F_128,
ZYDIS_ISA_SET_AVX512F_128N,
ZYDIS_ISA_SET_AVX512F_256,
ZYDIS_ISA_SET_AVX512F_512,
ZYDIS_ISA_SET_AVX512F_KOP,
ZYDIS_ISA_SET_AVX512F_SCALAR,
ZYDIS_ISA_SET_AVX512PF_512,
ZYDIS_ISA_SET_AVX512_4FMAPS_512,
ZYDIS_ISA_SET_AVX512_4FMAPS_SCALAR,
ZYDIS_ISA_SET_AVX512_4VNNIW_512,
ZYDIS_ISA_SET_AVX512_BITALG_128,
ZYDIS_ISA_SET_AVX512_BITALG_256,
ZYDIS_ISA_SET_AVX512_BITALG_512,
ZYDIS_ISA_SET_AVX512_GFNI_128,
ZYDIS_ISA_SET_AVX512_GFNI_256,
ZYDIS_ISA_SET_AVX512_GFNI_512,
ZYDIS_ISA_SET_AVX512_IFMA_128,
ZYDIS_ISA_SET_AVX512_IFMA_256,
ZYDIS_ISA_SET_AVX512_IFMA_512,
ZYDIS_ISA_SET_AVX512_VAES_128,
ZYDIS_ISA_SET_AVX512_VAES_256,
ZYDIS_ISA_SET_AVX512_VAES_512,
ZYDIS_ISA_SET_AVX512_VBMI2_128,
ZYDIS_ISA_SET_AVX512_VBMI2_256,
ZYDIS_ISA_SET_AVX512_VBMI2_512,
ZYDIS_ISA_SET_AVX512_VBMI_128,
ZYDIS_ISA_SET_AVX512_VBMI_256,
ZYDIS_ISA_SET_AVX512_VBMI_512,
ZYDIS_ISA_SET_AVX512_VNNI_128,
ZYDIS_ISA_SET_AVX512_VNNI_256,
ZYDIS_ISA_SET_AVX512_VNNI_512,
ZYDIS_ISA_SET_AVX512_VPCLMULQDQ_128,
ZYDIS_ISA_SET_AVX512_VPCLMULQDQ_256,
ZYDIS_ISA_SET_AVX512_VPCLMULQDQ_512,
ZYDIS_ISA_SET_AVX512_VPOPCNTDQ_128,
ZYDIS_ISA_SET_AVX512_VPOPCNTDQ_256,
ZYDIS_ISA_SET_AVX512_VPOPCNTDQ_512,
ZYDIS_ISA_SET_AVXAES,
ZYDIS_ISA_SET_AVX_GFNI,
ZYDIS_ISA_SET_BMI1,
ZYDIS_ISA_SET_BMI2,
ZYDIS_ISA_SET_CET,
ZYDIS_ISA_SET_CLDEMOTE,
ZYDIS_ISA_SET_CLFLUSHOPT,
ZYDIS_ISA_SET_CLFSH,
ZYDIS_ISA_SET_CLWB,
ZYDIS_ISA_SET_CLZERO,
ZYDIS_ISA_SET_CMOV,
ZYDIS_ISA_SET_CMPXCHG16B,
ZYDIS_ISA_SET_F16C,
ZYDIS_ISA_SET_FAT_NOP,
ZYDIS_ISA_SET_FCMOV,
ZYDIS_ISA_SET_FMA,
ZYDIS_ISA_SET_FMA4,
ZYDIS_ISA_SET_FXSAVE,
ZYDIS_ISA_SET_FXSAVE64,
ZYDIS_ISA_SET_GFNI,
ZYDIS_ISA_SET_I186,
ZYDIS_ISA_SET_I286PROTECTED,
ZYDIS_ISA_SET_I286REAL,
ZYDIS_ISA_SET_I386,
ZYDIS_ISA_SET_I486,
ZYDIS_ISA_SET_I486REAL,
ZYDIS_ISA_SET_I86,
ZYDIS_ISA_SET_INVPCID,
ZYDIS_ISA_SET_KNCE,
ZYDIS_ISA_SET_KNCJKBR,
ZYDIS_ISA_SET_KNCSTREAM,
ZYDIS_ISA_SET_KNCV,
ZYDIS_ISA_SET_KNC_MISC,
ZYDIS_ISA_SET_KNC_PF_HINT,
ZYDIS_ISA_SET_LAHF,
ZYDIS_ISA_SET_LONGMODE,
ZYDIS_ISA_SET_LZCNT,
ZYDIS_ISA_SET_MONITOR,
ZYDIS_ISA_SET_MONITORX,
ZYDIS_ISA_SET_MOVBE,
ZYDIS_ISA_SET_MOVDIR,
ZYDIS_ISA_SET_MPX,
ZYDIS_ISA_SET_PADLOCK_ACE,
ZYDIS_ISA_SET_PADLOCK_PHE,
ZYDIS_ISA_SET_PADLOCK_PMM,
ZYDIS_ISA_SET_PADLOCK_RNG,
ZYDIS_ISA_SET_PAUSE,
ZYDIS_ISA_SET_PCLMULQDQ,
ZYDIS_ISA_SET_PCONFIG,
ZYDIS_ISA_SET_PENTIUMMMX,
ZYDIS_ISA_SET_PENTIUMREAL,
ZYDIS_ISA_SET_PKU,
ZYDIS_ISA_SET_POPCNT,
ZYDIS_ISA_SET_PPRO,
ZYDIS_ISA_SET_PREFETCHWT1,
ZYDIS_ISA_SET_PREFETCH_NOP,
ZYDIS_ISA_SET_PT,
ZYDIS_ISA_SET_RDPID,
ZYDIS_ISA_SET_RDPMC,
ZYDIS_ISA_SET_RDRAND,
ZYDIS_ISA_SET_RDSEED,
ZYDIS_ISA_SET_RDTSCP,
ZYDIS_ISA_SET_RDWRFSGS,
ZYDIS_ISA_SET_RTM,
ZYDIS_ISA_SET_SGX,
ZYDIS_ISA_SET_SGX_ENCLV,
ZYDIS_ISA_SET_SHA,
ZYDIS_ISA_SET_SMAP,
ZYDIS_ISA_SET_SMX,
ZYDIS_ISA_SET_SSE,
ZYDIS_ISA_SET_SSE2,
ZYDIS_ISA_SET_SSE2MMX,
ZYDIS_ISA_SET_SSE3,
ZYDIS_ISA_SET_SSE3X87,
ZYDIS_ISA_SET_SSE4,
ZYDIS_ISA_SET_SSE42,
ZYDIS_ISA_SET_SSE4A,
ZYDIS_ISA_SET_SSEMXCSR,
ZYDIS_ISA_SET_SSE_PREFETCH,
ZYDIS_ISA_SET_SSSE3,
ZYDIS_ISA_SET_SSSE3MMX,
ZYDIS_ISA_SET_SVM,
ZYDIS_ISA_SET_TBM,
ZYDIS_ISA_SET_VAES,
ZYDIS_ISA_SET_VMFUNC,
ZYDIS_ISA_SET_VPCLMULQDQ,
ZYDIS_ISA_SET_VTX,
ZYDIS_ISA_SET_WAITPKG,
ZYDIS_ISA_SET_X87,
ZYDIS_ISA_SET_XOP,
ZYDIS_ISA_SET_XSAVE,
ZYDIS_ISA_SET_XSAVEC,
ZYDIS_ISA_SET_XSAVEOPT,
ZYDIS_ISA_SET_XSAVES,
* @brief Maximum value of this enum.
*/
ZYDIS_ISA_SET_MAX_VALUE = ZYDIS_ISA_SET_XSAVES,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_ISA_SET_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ISA_SET_MAX_VALUE)
} ZydisISASet;
* @brief Defines the `ZydisISAExt` enum.
*/
typedef enum ZydisISAExt_
{
ZYDIS_ISA_EXT_INVALID,
ZYDIS_ISA_EXT_ADOX_ADCX,
ZYDIS_ISA_EXT_AES,
ZYDIS_ISA_EXT_AMD3DNOW,
ZYDIS_ISA_EXT_AVX,
ZYDIS_ISA_EXT_AVX2,
ZYDIS_ISA_EXT_AVX2GATHER,
ZYDIS_ISA_EXT_AVX512EVEX,
ZYDIS_ISA_EXT_AVX512VEX,
ZYDIS_ISA_EXT_AVXAES,
ZYDIS_ISA_EXT_BASE,
ZYDIS_ISA_EXT_BMI1,
ZYDIS_ISA_EXT_BMI2,
ZYDIS_ISA_EXT_CET,
ZYDIS_ISA_EXT_CLDEMOTE,
ZYDIS_ISA_EXT_CLFLUSHOPT,
ZYDIS_ISA_EXT_CLFSH,
ZYDIS_ISA_EXT_CLWB,
ZYDIS_ISA_EXT_CLZERO,
ZYDIS_ISA_EXT_F16C,
ZYDIS_ISA_EXT_FMA,
ZYDIS_ISA_EXT_FMA4,
ZYDIS_ISA_EXT_GFNI,
ZYDIS_ISA_EXT_INVPCID,
ZYDIS_ISA_EXT_KNC,
ZYDIS_ISA_EXT_KNCE,
ZYDIS_ISA_EXT_KNCV,
ZYDIS_ISA_EXT_LONGMODE,
ZYDIS_ISA_EXT_LZCNT,
ZYDIS_ISA_EXT_MMX,
ZYDIS_ISA_EXT_MONITOR,
ZYDIS_ISA_EXT_MONITORX,
ZYDIS_ISA_EXT_MOVBE,
ZYDIS_ISA_EXT_MOVDIR,
ZYDIS_ISA_EXT_MPX,
ZYDIS_ISA_EXT_PADLOCK,
ZYDIS_ISA_EXT_PAUSE,
ZYDIS_ISA_EXT_PCLMULQDQ,
ZYDIS_ISA_EXT_PCONFIG,
ZYDIS_ISA_EXT_PKU,
ZYDIS_ISA_EXT_PREFETCHWT1,
ZYDIS_ISA_EXT_PT,
ZYDIS_ISA_EXT_RDPID,
ZYDIS_ISA_EXT_RDRAND,
ZYDIS_ISA_EXT_RDSEED,
ZYDIS_ISA_EXT_RDTSCP,
ZYDIS_ISA_EXT_RDWRFSGS,
ZYDIS_ISA_EXT_RTM,
ZYDIS_ISA_EXT_SGX,
ZYDIS_ISA_EXT_SGX_ENCLV,
ZYDIS_ISA_EXT_SHA,
ZYDIS_ISA_EXT_SMAP,
ZYDIS_ISA_EXT_SMX,
ZYDIS_ISA_EXT_SSE,
ZYDIS_ISA_EXT_SSE2,
ZYDIS_ISA_EXT_SSE3,
ZYDIS_ISA_EXT_SSE4,
ZYDIS_ISA_EXT_SSE4A,
ZYDIS_ISA_EXT_SSSE3,
ZYDIS_ISA_EXT_SVM,
ZYDIS_ISA_EXT_TBM,
ZYDIS_ISA_EXT_VAES,
ZYDIS_ISA_EXT_VMFUNC,
ZYDIS_ISA_EXT_VPCLMULQDQ,
ZYDIS_ISA_EXT_VTX,
ZYDIS_ISA_EXT_WAITPKG,
ZYDIS_ISA_EXT_X87,
ZYDIS_ISA_EXT_XOP,
ZYDIS_ISA_EXT_XSAVE,
ZYDIS_ISA_EXT_XSAVEC,
ZYDIS_ISA_EXT_XSAVEOPT,
ZYDIS_ISA_EXT_XSAVES,
* @brief Maximum value of this enum.
*/
ZYDIS_ISA_EXT_MAX_VALUE = ZYDIS_ISA_EXT_XSAVES,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_ISA_EXT_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ISA_EXT_MAX_VALUE)
} ZydisISAExt;
* @brief Defines the `ZydisBranchType` enum.
*/
typedef enum ZydisBranchType_
{
* @brief The instruction is not a branch instruction.
*/
ZYDIS_BRANCH_TYPE_NONE,
* @brief The instruction is a short (8-bit) branch instruction.
*/
ZYDIS_BRANCH_TYPE_SHORT,
* @brief The instruction is a near (16-bit or 32-bit) branch instruction.
*/
ZYDIS_BRANCH_TYPE_NEAR,
* @brief The instruction is a far (intersegment) branch instruction.
*/
ZYDIS_BRANCH_TYPE_FAR,
* @brief Maximum value of this enum.
*/
ZYDIS_BRANCH_TYPE_MAX_VALUE = ZYDIS_BRANCH_TYPE_FAR,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_BRANCH_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_BRANCH_TYPE_MAX_VALUE)
} ZydisBranchType;
* @brief Defines the `ZydisExceptionClass` enum.
*/
typedef enum ZydisExceptionClass_
{
ZYDIS_EXCEPTION_CLASS_NONE,
ZYDIS_EXCEPTION_CLASS_SSE1,
ZYDIS_EXCEPTION_CLASS_SSE2,
ZYDIS_EXCEPTION_CLASS_SSE3,
ZYDIS_EXCEPTION_CLASS_SSE4,
ZYDIS_EXCEPTION_CLASS_SSE5,
ZYDIS_EXCEPTION_CLASS_SSE7,
ZYDIS_EXCEPTION_CLASS_AVX1,
ZYDIS_EXCEPTION_CLASS_AVX2,
ZYDIS_EXCEPTION_CLASS_AVX3,
ZYDIS_EXCEPTION_CLASS_AVX4,
ZYDIS_EXCEPTION_CLASS_AVX5,
ZYDIS_EXCEPTION_CLASS_AVX6,
ZYDIS_EXCEPTION_CLASS_AVX7,
ZYDIS_EXCEPTION_CLASS_AVX8,
ZYDIS_EXCEPTION_CLASS_AVX11,
ZYDIS_EXCEPTION_CLASS_AVX12,
ZYDIS_EXCEPTION_CLASS_E1,
ZYDIS_EXCEPTION_CLASS_E1NF,
ZYDIS_EXCEPTION_CLASS_E2,
ZYDIS_EXCEPTION_CLASS_E2NF,
ZYDIS_EXCEPTION_CLASS_E3,
ZYDIS_EXCEPTION_CLASS_E3NF,
ZYDIS_EXCEPTION_CLASS_E4,
ZYDIS_EXCEPTION_CLASS_E4NF,
ZYDIS_EXCEPTION_CLASS_E5,
ZYDIS_EXCEPTION_CLASS_E5NF,
ZYDIS_EXCEPTION_CLASS_E6,
ZYDIS_EXCEPTION_CLASS_E6NF,
ZYDIS_EXCEPTION_CLASS_E7NM,
ZYDIS_EXCEPTION_CLASS_E7NM128,
ZYDIS_EXCEPTION_CLASS_E9NF,
ZYDIS_EXCEPTION_CLASS_E10,
ZYDIS_EXCEPTION_CLASS_E10NF,
ZYDIS_EXCEPTION_CLASS_E11,
ZYDIS_EXCEPTION_CLASS_E11NF,
ZYDIS_EXCEPTION_CLASS_E12,
ZYDIS_EXCEPTION_CLASS_E12NP,
ZYDIS_EXCEPTION_CLASS_K20,
ZYDIS_EXCEPTION_CLASS_K21,
* @brief Maximum value of this enum.
*/
ZYDIS_EXCEPTION_CLASS_MAX_VALUE = ZYDIS_EXCEPTION_CLASS_K21,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_EXCEPTION_CLASS_MAX_VALUE)
} ZydisExceptionClass;
* @brief Defines the `ZydisPrefixType` enum.
*/
typedef enum ZydisPrefixType_
{
* @brief The prefix is ignored by the instruction.
*
* This applies to all prefixes that are not accepted by the instruction in general or the
* ones that are overwritten by a prefix of the same group closer to the instruction opcode.
*/
ZYDIS_PREFIX_TYPE_IGNORED,
* @brief The prefix is effectively used by the instruction.
*/
ZYDIS_PREFIX_TYPE_EFFECTIVE,
* @brief The prefix is used as a mandatory prefix.
*
* A mandatory prefix is interpreted as an opcode extension and has no further effect on the
* instruction.
*/
ZYDIS_PREFIX_TYPE_MANDATORY,
* @brief Maximum value of this enum.
*/
ZYDIS_PREFIX_TYPE_MAX_VALUE = ZYDIS_PREFIX_TYPE_MANDATORY,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_PREFIX_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_PREFIX_TYPE_MAX_VALUE)
} ZydisPrefixType;
* @brief Defines the `ZydisCPUFlagAction` enum.
*/
typedef enum ZydisCPUFlagAction_
{
* @brief The CPU flag is not touched by the instruction.
*/
ZYDIS_CPUFLAG_ACTION_NONE,
* @brief The CPU flag is tested (read).
*/
ZYDIS_CPUFLAG_ACTION_TESTED,
* @brief The CPU flag is tested and modified aferwards (read-write).
*/
ZYDIS_CPUFLAG_ACTION_TESTED_MODIFIED,
* @brief The CPU flag is modified (write).
*/
ZYDIS_CPUFLAG_ACTION_MODIFIED,
* @brief The CPU flag is set to 0 (write).
*/
ZYDIS_CPUFLAG_ACTION_SET_0,
* @brief The CPU flag is set to 1 (write).
*/
ZYDIS_CPUFLAG_ACTION_SET_1,
* @brief The CPU flag is undefined (write).
*/
ZYDIS_CPUFLAG_ACTION_UNDEFINED,
* @brief Maximum value of this enum.
*/
ZYDIS_CPUFLAG_ACTION_MAX_VALUE = ZYDIS_CPUFLAG_ACTION_UNDEFINED,
* @brief The minimum number of bits required to represent all values of this enum.
*/
ZYDIS_CPUFLAG_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_CPUFLAG_ACTION_MAX_VALUE)
} ZydisCPUFlagAction;
* Defines the `ZydisFPUFlags` data-type.
*/
typedef ZyanU8 ZydisFPUFlags;
* @brief Defines the `ZydisDecodedInstruction` struct.
*/
typedef struct ZydisDecodedInstruction_
{
* The machine mode used to decode this instruction.
*/
ZydisMachineMode machine_mode;
* The instruction-mnemonic.
*/
ZydisMnemonic mnemonic;
* The length of the decoded instruction.
*/
ZyanU8 length;
* The instruction-encoding (`LEGACY`, `3DNOW`, `VEX`, `EVEX`, `XOP`).
*/
ZydisInstructionEncoding encoding;
* The opcode-map.
*/
ZydisOpcodeMap opcode_map;
* The instruction-opcode.
*/
ZyanU8 opcode;
* The stack width.
*/
ZyanU8 stack_width;
* The effective operand width.
*/
ZyanU8 operand_width;
* The effective address width.
*/
ZyanU8 address_width;
* The number of instruction-operands.
*/
ZyanU8 operand_count;
* Detailed info for all instruction operands.
*
* Explicit operands are guaranteed to be in the front and ordered as they are printed
* by the formatter in Intel mode. No assumptions can be made about the order of hidden
* operands, except that they always located behind the explicit operands.
*/
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
* Instruction attributes.
*/
ZydisInstructionAttributes attributes;
* Information about accessed CPU flags.
*
* DEPRECATED. This field will be removed in the next major release. Please use the
* `cpu_flags_read`/`cpu_flags_written` or `fpu_flags_read`/`fpu_flags_written` fields
* instead.
*/
struct ZydisDecodedInstructionAccessedFlags_
{
* The CPU-flag action.
*
* Use `ZydisGetAccessedFlagsByAction` to get a mask with all flags matching a specific
* action.
*/
ZydisCPUFlagAction action;
} accessed_flags[ZYDIS_CPUFLAG_MAX_VALUE + 1];
* A mask containing the CPU flags read by the instruction.
*
* The bits in this mask correspond to the actual bits in the `FLAGS/EFLAGS/RFLAGS`
* register.
*
* This mask includes the actions `TESTED` and `TESTED_MODIFIED`.
*/
ZydisCPUFlags cpu_flags_read;
* A mask containing the CPU flags written by the instruction.
*
* The bits in this mask correspond to the actual bits in the `FLAGS/EFLAGS/RFLAGS`
* register.
*
* This mask includes the actions `TESTED_MODIFIED`, `SET_0`, `SET_1` and `UNDEFINED`.
*/
ZydisCPUFlags cpu_flags_written;
* A mask containing the FPU flags read by the instruction.
*/
ZydisFPUFlags fpu_flags_read;
* A mask containing the FPU flags written by the instruction.
*/
ZydisFPUFlags fpu_flags_written;
* Extended info for `AVX` instructions.
*/
struct ZydisDecodedInstructionAvx_
{
* The `AVX` vector-length.
*/
ZyanU16 vector_length;
* Info about the embedded writemask-register (`AVX-512` and `KNC` only).
*/
struct ZydisDecodedInstructionAvxMask_
{
* The masking mode.
*/
ZydisMaskMode mode;
* The mask register.
*/
ZydisRegister reg;
} mask;
* Contains info about the `AVX` broadcast.
*/
struct ZydisDecodedInstructionAvxBroadcast_
{
* Signals, if the broadcast is a static broadcast.
*
* This is the case for instructions with inbuilt broadcast functionality, which is
* always active and not controlled by the `EVEX/MVEX.RC` bits.
*/
ZyanBool is_static;
* The `AVX` broadcast-mode.
*/
ZydisBroadcastMode mode;
} broadcast;
* Contains info about the `AVX` rounding.
*/
struct ZydisDecodedInstructionAvxRounding_
{
* The `AVX` rounding-mode.
*/
ZydisRoundingMode mode;
} rounding;
* Contains info about the `AVX` register-swizzle (`KNC` only).
*/
struct ZydisDecodedInstructionAvxSwizzle_
{
* The `AVX` register-swizzle mode.
*/
ZydisSwizzleMode mode;
} swizzle;
* Contains info about the `AVX` data-conversion (`KNC` only).
*/
struct ZydisDecodedInstructionAvxConversion_
{
* The `AVX` data-conversion mode.
*/
ZydisConversionMode mode;
} conversion;
* Signals, if the `SAE` (suppress-all-exceptions) functionality is
* enabled for the instruction.
*/
ZyanBool has_sae;
* Signals, if the instruction has a memory-eviction-hint (`KNC` only).
*/
ZyanBool has_eviction_hint;
} avx;
* Meta info.
*/
struct ZydisDecodedInstructionMeta_
{
* The instruction category.
*/
ZydisInstructionCategory category;
* The ISA-set.
*/
ZydisISASet isa_set;
* The ISA-set extension.
*/
ZydisISAExt isa_ext;
* The branch type.
*/
ZydisBranchType branch_type;
* The exception class.
*/
ZydisExceptionClass exception_class;
} meta;
* Detailed info about different instruction-parts like `ModRM`, `SIB` or
* encoding-prefixes.
*/
struct ZydisDecodedInstructionRaw_
{
* The number of legacy prefixes.
*/
ZyanU8 prefix_count;
* Detailed info about the legacy prefixes (including `REX`).
*/
struct ZydisDecodedInstructionRawPrefixes_
{
* The prefix type.
*/
ZydisPrefixType type;
* The prefix byte.
*/
ZyanU8 value;
} prefixes[ZYDIS_MAX_INSTRUCTION_LENGTH];
* Detailed info about the `REX` prefix.
*/
struct ZydisDecodedInstructionRawRex_
{
* 64-bit operand-size promotion.
*/
ZyanU8 W;
* Extension of the `ModRM.reg` field.
*/
ZyanU8 R;
* Extension of the `SIB.index` field.
*/
ZyanU8 X;
* Extension of the `ModRM.rm`, `SIB.base`, or `opcode.reg` field.
*/
ZyanU8 B;
* The offset of the effective `REX` byte, relative to the beginning of the
* instruction, in bytes.
*
* This offset always points to the "effective" `REX` prefix (the one closest to the
* instruction opcode), if multiple `REX` prefixes are present.
*
* Note that the `REX` byte can be the first byte of the instruction, which would lead
* to an offset of `0`. Please refer to the instruction attributes to check for the
* presence of the `REX` prefix.
*/
ZyanU8 offset;
} rex;
* Detailed info about the `XOP` prefix.
*/
struct ZydisDecodedInstructionRawXop_
{
* Extension of the `ModRM.reg` field (inverted).
*/
ZyanU8 R;
* Extension of the `SIB.index` field (inverted).
*/
ZyanU8 X;
* Extension of the `ModRM.rm`, `SIB.base`, or `opcode.reg` field (inverted).
*/
ZyanU8 B;
* Opcode-map specifier.
*/
ZyanU8 m_mmmm;
* 64-bit operand-size promotion or opcode-extension.
*/
ZyanU8 W;
* `NDS`/`NDD` (non-destructive-source/destination) register
* specifier (inverted).
*/
ZyanU8 vvvv;
* Vector-length specifier.
*/
ZyanU8 L;
* Compressed legacy prefix.
*/
ZyanU8 pp;
* The offset of the first xop byte, relative to the beginning of
* the instruction, in bytes.
*/
ZyanU8 offset;
} xop;
* Detailed info about the `VEX` prefix.
*/
struct ZydisDecodedInstructionRawVex_
{
* Extension of the `ModRM.reg` field (inverted).
*/
ZyanU8 R;
* Extension of the `SIB.index` field (inverted).
*/
ZyanU8 X;
* Extension of the `ModRM.rm`, `SIB.base`, or `opcode.reg` field (inverted).
*/
ZyanU8 B;
* Opcode-map specifier.
*/
ZyanU8 m_mmmm;
* 64-bit operand-size promotion or opcode-extension.
*/
ZyanU8 W;
* `NDS`/`NDD` (non-destructive-source/destination) register specifier
* (inverted).
*/
ZyanU8 vvvv;
* Vector-length specifier.
*/
ZyanU8 L;
* Compressed legacy prefix.
*/
ZyanU8 pp;
* The offset of the first `VEX` byte, relative to the beginning of the instruction, in
* bytes.
*/
ZyanU8 offset;
* The size of the `VEX` prefix, in bytes.
*/
ZyanU8 size;
} vex;
* Detailed info about the `EVEX` prefix.
*/
struct ZydisDecodedInstructionRawEvex_
{
* Extension of the `ModRM.reg` field (inverted).
*/
ZyanU8 R;
* Extension of the `SIB.index/vidx` field (inverted).
*/
ZyanU8 X;
* Extension of the `ModRM.rm` or `SIB.base` field (inverted).
*/
ZyanU8 B;
* High-16 register specifier modifier (inverted).
*/
ZyanU8 R2;
* Opcode-map specifier.
*/
ZyanU8 mm;
* 64-bit operand-size promotion or opcode-extension.
*/
ZyanU8 W;
* `NDS`/`NDD` (non-destructive-source/destination) register specifier
* (inverted).
*/
ZyanU8 vvvv;
* Compressed legacy prefix.
*/
ZyanU8 pp;
* Zeroing/Merging.
*/
ZyanU8 z;
* Vector-length specifier or rounding-control (most significant bit).
*/
ZyanU8 L2;
* Vector-length specifier or rounding-control (least significant bit).
*/
ZyanU8 L;
* Broadcast/RC/SAE context.
*/
ZyanU8 b;
* High-16 `NDS`/`VIDX` register specifier.
*/
ZyanU8 V2;
* Embedded opmask register specifier.
*/
ZyanU8 aaa;
* The offset of the first evex byte, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} evex;
* Detailed info about the `MVEX` prefix.
*/
struct ZydisDecodedInstructionRawMvex_
{
* Extension of the `ModRM.reg` field (inverted).
*/
ZyanU8 R;
* Extension of the `SIB.index/vidx` field (inverted).
*/
ZyanU8 X;
* Extension of the `ModRM.rm` or `SIB.base` field (inverted).
*/
ZyanU8 B;
* High-16 register specifier modifier (inverted).
*/
ZyanU8 R2;
* Opcode-map specifier.
*/
ZyanU8 mmmm;
* 64-bit operand-size promotion or opcode-extension.
*/
ZyanU8 W;
* `NDS`/`NDD` (non-destructive-source/destination) register specifier
* (inverted).
*/
ZyanU8 vvvv;
* Compressed legacy prefix.
*/
ZyanU8 pp;
* Non-temporal/eviction hint.
*/
ZyanU8 E;
* Swizzle/broadcast/up-convert/down-convert/static-rounding controls.
*/
ZyanU8 SSS;
* High-16 `NDS`/`VIDX` register specifier.
*/
ZyanU8 V2;
* Embedded opmask register specifier.
*/
ZyanU8 kkk;
* The offset of the first mvex byte, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} mvex;
* Detailed info about the `ModRM` byte.
*/
struct ZydisDecodedInstructionModRm_
{
* The addressing mode.
*/
ZyanU8 mod;
* Register specifier or opcode-extension.
*/
ZyanU8 reg;
* Register specifier or opcode-extension.
*/
ZyanU8 rm;
* The offset of the `ModRM` byte, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} modrm;
* Detailed info about the `SIB` byte.
*/
struct ZydisDecodedInstructionRawSib_
{
* The scale factor.
*/
ZyanU8 scale;
* The index-register specifier.
*/
ZyanU8 index;
* The base-register specifier.
*/
ZyanU8 base;
* The offset of the `SIB` byte, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} sib;
* Detailed info about displacement-bytes.
*/
struct ZydisDecodedInstructionRawDisp_
{
* The displacement value
*/
ZyanI64 value;
* The physical displacement size, in bits.
*/
ZyanU8 size;
* The offset of the displacement data, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} disp;
* Detailed info about immediate-bytes.
*/
struct ZydisDecodedInstructionRawImm_
{
* Signals, if the immediate value is signed.
*/
ZyanBool is_signed;
* Signals, if the immediate value contains a relative offset. You can use
* `ZydisCalcAbsoluteAddress` to determine the absolute address value.
*/
ZyanBool is_relative;
* The immediate value.
*/
union ZydisDecodedInstructionRawImmValue_
{
ZyanU64 u;
ZyanI64 s;
} value;
* The physical immediate size, in bits.
*/
ZyanU8 size;
* The offset of the immediate data, relative to the beginning of the
* instruction, in bytes.
*/
ZyanU8 offset;
} imm[2];
} raw;
} ZydisDecodedInstruction;
#endif