Zydis  v3.2.0
DecoderTypes.h File Reference

Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs. More...

#include <Zycore/Types.h>
#include <Zydis/MetaInfo.h>
#include <Zydis/Mnemonic.h>
#include <Zydis/Register.h>
#include <Zydis/SharedTypes.h>
Include dependency graph for DecoderTypes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ZydisDecodedOperand_
 Defines the ZydisDecodedOperand struct. More...
 
struct  ZydisDecodedOperand_::ZydisDecodedOperandReg_
 Extended info for register-operands. More...
 
struct  ZydisDecodedOperand_::ZydisDecodedOperandMem_
 Extended info for memory-operands. More...
 
struct  ZydisDecodedOperand_::ZydisDecodedOperandMem_::ZydisDecodedOperandMemDisp_
 Extended info for memory-operands with displacement. More...
 
struct  ZydisDecodedOperand_::ZydisDecodedOperandPtr_
 Extended info for pointer-operands. More...
 
struct  ZydisDecodedOperand_::ZydisDecodedOperandImm_
 Extended info for immediate-operands. More...
 
union  ZydisDecodedOperand_::ZydisDecodedOperandImm_::ZydisDecodedOperandImmValue_
 The immediate value. More...
 
struct  ZydisDecodedInstruction_
 Information about a decoded instruction. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAccessedFlags_
 Information about accessed CPU flags. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_
 Extended info for AVX instructions. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_::ZydisDecodedInstructionAvxMask_
 Info about the embedded writemask-register (AVX-512 and KNC only). More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_::ZydisDecodedInstructionAvxBroadcast_
 Contains info about the AVX broadcast. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_::ZydisDecodedInstructionAvxRounding_
 Contains info about the AVX rounding. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_::ZydisDecodedInstructionAvxSwizzle_
 Contains info about the AVX register-swizzle (KNC only). More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionAvx_::ZydisDecodedInstructionAvxConversion_
 Contains info about the AVX data-conversion (KNC only). More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionMeta_
 Meta info. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_
 Detailed info about different instruction-parts like ModRM, SIB or encoding-prefixes. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawPrefixes_
 Detailed info about the legacy prefixes (including REX). More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawRex_
 Detailed info about the REX prefix. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawXop_
 Detailed info about the XOP prefix. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawVex_
 Detailed info about the VEX prefix. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawEvex_
 Detailed info about the EVEX prefix. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawMvex_
 Detailed info about the MVEX prefix. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionModRm_
 Detailed info about the ModRM byte. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawSib_
 Detailed info about the SIB byte. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawDisp_
 Detailed info about displacement-bytes. More...
 
struct  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawImm_
 Detailed info about immediate-bytes. More...
 
union  ZydisDecodedInstruction_::ZydisDecodedInstructionRaw_::ZydisDecodedInstructionRawImm_::ZydisDecodedInstructionRawImmValue_
 The immediate value. More...
 

Macros

#define ZYDIS_OATTRIB_IS_MULTISOURCE4   0x01
 The operand is a MULTISOURCE4 register operand. More...
 
#define ZYDIS_ATTRIB_HAS_MODRM   0x0000000000000001
 The instruction has the ModRM byte.
 
#define ZYDIS_ATTRIB_HAS_SIB   0x0000000000000002
 The instruction has the SIB byte.
 
#define ZYDIS_ATTRIB_HAS_REX   0x0000000000000004
 The instruction has the REX prefix.
 
#define ZYDIS_ATTRIB_HAS_XOP   0x0000000000000008
 The instruction has the XOP prefix.
 
#define ZYDIS_ATTRIB_HAS_VEX   0x0000000000000010
 The instruction has the VEX prefix.
 
#define ZYDIS_ATTRIB_HAS_EVEX   0x0000000000000020
 The instruction has the EVEX prefix.
 
#define ZYDIS_ATTRIB_HAS_MVEX   0x0000000000000040
 The instruction has the MVEX prefix.
 
#define ZYDIS_ATTRIB_IS_RELATIVE   0x0000000000000080
 The instruction has one or more operands with position-relative offsets.
 
#define ZYDIS_ATTRIB_IS_PRIVILEGED   0x0000000000000100
 The instruction is privileged. More...
 
#define ZYDIS_ATTRIB_CPUFLAG_ACCESS   0x0000001000000000
 The instruction accesses one or more CPU-flags.
 
#define ZYDIS_ATTRIB_CPU_STATE_CR   0x0000002000000000
 The instruction may conditionally read the general CPU state.
 
#define ZYDIS_ATTRIB_CPU_STATE_CW   0x0000004000000000
 The instruction may conditionally write the general CPU state.
 
#define ZYDIS_ATTRIB_FPU_STATE_CR   0x0000008000000000
 The instruction may conditionally read the FPU state (X87, MMX).
 
#define ZYDIS_ATTRIB_FPU_STATE_CW   0x0000010000000000
 The instruction may conditionally write the FPU state (X87, MMX).
 
#define ZYDIS_ATTRIB_XMM_STATE_CR   0x0000020000000000
 The instruction may conditionally read the XMM state (AVX, AVX2, AVX-512).
 
#define ZYDIS_ATTRIB_XMM_STATE_CW   0x0000040000000000
 The instruction may conditionally write the XMM state (AVX, AVX2, AVX-512).
 
#define ZYDIS_ATTRIB_ACCEPTS_LOCK   0x0000000000000200
 The instruction accepts the LOCK prefix (0xF0).
 
#define ZYDIS_ATTRIB_ACCEPTS_REP   0x0000000000000400
 The instruction accepts the REP prefix (0xF3).
 
#define ZYDIS_ATTRIB_ACCEPTS_REPE   0x0000000000000800
 The instruction accepts the REPE/REPZ prefix (0xF3).
 
#define ZYDIS_ATTRIB_ACCEPTS_REPZ   0x0000000000000800
 The instruction accepts the REPE/REPZ prefix (0xF3).
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNE   0x0000000000001000
 The instruction accepts the REPNE/REPNZ prefix (0xF2).
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNZ   0x0000000000001000
 The instruction accepts the REPNE/REPNZ prefix (0xF2).
 
#define ZYDIS_ATTRIB_ACCEPTS_BND   0x0000000000002000
 The instruction accepts the BND prefix (0xF2).
 
#define ZYDIS_ATTRIB_ACCEPTS_XACQUIRE   0x0000000000004000
 The instruction accepts the XACQUIRE prefix (0xF2).
 
#define ZYDIS_ATTRIB_ACCEPTS_XRELEASE   0x0000000000008000
 The instruction accepts the XRELEASE prefix (0xF3).
 
#define ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK   0x0000000000010000
 The instruction accepts the XACQUIRE/XRELEASE prefixes (0xF2, 0xF3) without the LOCK prefix (0x0F).
 
#define ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS   0x0000000000020000
 The instruction accepts branch hints (0x2E, 0x3E).
 
#define ZYDIS_ATTRIB_ACCEPTS_SEGMENT   0x0000000000040000
 The instruction accepts segment prefixes (0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65).
 
#define ZYDIS_ATTRIB_HAS_LOCK   0x0000000000080000
 The instruction has the LOCK prefix (0xF0).
 
#define ZYDIS_ATTRIB_HAS_REP   0x0000000000100000
 The instruction has the REP prefix (0xF3).
 
#define ZYDIS_ATTRIB_HAS_REPE   0x0000000000200000
 The instruction has the REPE/REPZ prefix (0xF3).
 
#define ZYDIS_ATTRIB_HAS_REPZ   0x0000000000200000
 The instruction has the REPE/REPZ prefix (0xF3).
 
#define ZYDIS_ATTRIB_HAS_REPNE   0x0000000000400000
 The instruction has the REPNE/REPNZ prefix (0xF2).
 
#define ZYDIS_ATTRIB_HAS_REPNZ   0x0000000000400000
 The instruction has the REPNE/REPNZ prefix (0xF2).
 
#define ZYDIS_ATTRIB_HAS_BND   0x0000000000800000
 The instruction has the BND prefix (0xF2).
 
#define ZYDIS_ATTRIB_HAS_XACQUIRE   0x0000000001000000
 The instruction has the XACQUIRE prefix (0xF2).
 
#define ZYDIS_ATTRIB_HAS_XRELEASE   0x0000000002000000
 The instruction has the XRELEASE prefix (0xF3).
 
#define ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN   0x0000000004000000
 The instruction has the branch-not-taken hint (0x2E).
 
#define ZYDIS_ATTRIB_HAS_BRANCH_TAKEN   0x0000000008000000
 The instruction has the branch-taken hint (0x3E).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT   0x00000003F0000000
 The instruction has a segment modifier.
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_CS   0x0000000010000000
 The instruction has the CS segment modifier (0x2E).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_SS   0x0000000020000000
 The instruction has the SS segment modifier (0x36).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_DS   0x0000000040000000
 The instruction has the DS segment modifier (0x3E).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_ES   0x0000000080000000
 The instruction has the ES segment modifier (0x26).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_FS   0x0000000100000000
 The instruction has the FS segment modifier (0x64).
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_GS   0x0000000200000000
 The instruction has the GS segment modifier (0x65).
 
#define ZYDIS_ATTRIB_HAS_OPERANDSIZE   0x0000000400000000
 The instruction has the operand-size override prefix (0x66).
 
#define ZYDIS_ATTRIB_HAS_ADDRESSSIZE   0x0000000800000000
 The instruction has the address-size override prefix (0x67).
 
#define ZYDIS_ATTRIB_ACCEPTS_NOTRACK   0x0000080000000000
 The instruction accepts the CET no-track prefix (0x3E).
 
#define ZYDIS_ATTRIB_HAS_NOTRACK   0x0000100000000000
 The instruction has the CET no-track prefix (0x3E).
 
#define ZYDIS_CPUFLAG_CF   0
 Carry flag.
 
#define ZYDIS_CPUFLAG_PF   2
 Parity flag.
 
#define ZYDIS_CPUFLAG_AF   4
 Adjust flag.
 
#define ZYDIS_CPUFLAG_ZF   6
 Zero flag.
 
#define ZYDIS_CPUFLAG_SF   7
 Sign flag.
 
#define ZYDIS_CPUFLAG_TF   8
 Trap flag.
 
#define ZYDIS_CPUFLAG_IF   9
 Interrupt enable flag.
 
#define ZYDIS_CPUFLAG_DF   10
 Direction flag.
 
#define ZYDIS_CPUFLAG_OF   11
 Overflow flag.
 
#define ZYDIS_CPUFLAG_IOPL   12
 I/O privilege level flag.
 
#define ZYDIS_CPUFLAG_NT   14
 Nested task flag.
 
#define ZYDIS_CPUFLAG_RF   16
 Resume flag.
 
#define ZYDIS_CPUFLAG_VM   17
 Virtual 8086 mode flag.
 
#define ZYDIS_CPUFLAG_AC   18
 Alignment check.
 
#define ZYDIS_CPUFLAG_VIF   19
 Virtual interrupt flag.
 
#define ZYDIS_CPUFLAG_VIP   20
 Virtual interrupt pending.
 
#define ZYDIS_CPUFLAG_ID   21
 Able to use CPUID instruction.
 
#define ZYDIS_CPUFLAG_C0   22
 FPU condition-code flag 0. More...
 
#define ZYDIS_CPUFLAG_C1   23
 FPU condition-code flag 1. More...
 
#define ZYDIS_CPUFLAG_C2   24
 FPU condition-code flag 2. More...
 
#define ZYDIS_CPUFLAG_C3   25
 FPU condition-code flag 3. More...
 
#define ZYDIS_CPUFLAG_MAX_VALUE   ZYDIS_CPUFLAG_C3
 DEPRECATED. More...
 
#define ZYDIS_FPUFLAG_C0   0x00
 FPU condition-code flag 0.
 
#define ZYDIS_FPUFLAG_C1   0x01
 FPU condition-code flag 1.
 
#define ZYDIS_FPUFLAG_C2   0x02
 FPU condition-code flag 2.
 
#define ZYDIS_FPUFLAG_C3   0x04
 FPU condition-code flag 3.
 

Typedefs

typedef ZyanU8 ZydisOperandAttributes
 Defines the ZydisOperandAttributes data-type.
 
typedef enum ZydisMemoryOperandType_ ZydisMemoryOperandType
 Defines the ZydisMemoryOperandType enum.
 
typedef struct ZydisDecodedOperand_ ZydisDecodedOperand
 Defines the ZydisDecodedOperand struct.
 
typedef ZyanU64 ZydisInstructionAttributes
 Defines the ZydisInstructionAttributes data-type.
 
typedef ZyanU32 ZydisCPUFlags
 Defines the ZydisCPUFlags data-type.
 
typedef ZyanU8 ZydisCPUFlag
 Defines the ZydisCPUFlag data-type.
 
typedef ZyanU8 ZydisFPUFlags
 Defines the ZydisFPUFlags data-type.
 
typedef enum ZydisCPUFlagAction_ ZydisCPUFlagAction
 Defines the ZydisCPUFlagAction enum. More...
 
typedef enum ZydisBranchType_ ZydisBranchType
 Defines the ZydisBranchType enum.
 
typedef enum ZydisExceptionClass_ ZydisExceptionClass
 Defines the ZydisExceptionClass enum.
 
typedef enum ZydisMaskMode_ ZydisMaskMode
 Defines the ZydisMaskMode enum.
 
typedef enum ZydisBroadcastMode_ ZydisBroadcastMode
 Defines the ZydisBroadcastMode enum.
 
typedef enum ZydisRoundingMode_ ZydisRoundingMode
 Defines the ZydisRoundingMode enum.
 
typedef enum ZydisSwizzleMode_ ZydisSwizzleMode
 Defines the ZydisSwizzleMode enum.
 
typedef enum ZydisConversionMode_ ZydisConversionMode
 Defines the ZydisConversionMode enum.
 
typedef enum ZydisPrefixType_ ZydisPrefixType
 Defines the ZydisPrefixType enum.
 
typedef struct ZydisDecodedInstruction_ ZydisDecodedInstruction
 Information about a decoded instruction.
 

Enumerations

enum  ZydisMemoryOperandType_ {
  ZYDIS_MEMOP_TYPE_INVALID , ZYDIS_MEMOP_TYPE_MEM , ZYDIS_MEMOP_TYPE_AGEN , ZYDIS_MEMOP_TYPE_MIB ,
  ZYDIS_MEMOP_TYPE_MAX_VALUE = ZYDIS_MEMOP_TYPE_MIB , ZYDIS_MEMOP_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MEMOP_TYPE_MAX_VALUE)
}
 Defines the ZydisMemoryOperandType enum. More...
 
enum  ZydisCPUFlagAction_ {
  ZYDIS_CPUFLAG_ACTION_NONE , ZYDIS_CPUFLAG_ACTION_TESTED , ZYDIS_CPUFLAG_ACTION_TESTED_MODIFIED , ZYDIS_CPUFLAG_ACTION_MODIFIED ,
  ZYDIS_CPUFLAG_ACTION_SET_0 , ZYDIS_CPUFLAG_ACTION_SET_1 , ZYDIS_CPUFLAG_ACTION_UNDEFINED , ZYDIS_CPUFLAG_ACTION_MAX_VALUE = ZYDIS_CPUFLAG_ACTION_UNDEFINED ,
  ZYDIS_CPUFLAG_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_CPUFLAG_ACTION_MAX_VALUE)
}
 Defines the ZydisCPUFlagAction enum. More...
 
enum  ZydisBranchType_ {
  ZYDIS_BRANCH_TYPE_NONE , ZYDIS_BRANCH_TYPE_SHORT , ZYDIS_BRANCH_TYPE_NEAR , ZYDIS_BRANCH_TYPE_FAR ,
  ZYDIS_BRANCH_TYPE_MAX_VALUE = ZYDIS_BRANCH_TYPE_FAR , ZYDIS_BRANCH_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_BRANCH_TYPE_MAX_VALUE)
}
 Defines the ZydisBranchType enum. More...
 
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 ,
  ZYDIS_EXCEPTION_CLASS_AMXE1 , ZYDIS_EXCEPTION_CLASS_AMXE2 , ZYDIS_EXCEPTION_CLASS_AMXE3 , ZYDIS_EXCEPTION_CLASS_AMXE4 ,
  ZYDIS_EXCEPTION_CLASS_AMXE5 , ZYDIS_EXCEPTION_CLASS_AMXE6 , ZYDIS_EXCEPTION_CLASS_MAX_VALUE = ZYDIS_EXCEPTION_CLASS_AMXE6 , ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_EXCEPTION_CLASS_MAX_VALUE)
}
 Defines the ZydisExceptionClass enum. More...
 
enum  ZydisMaskMode_ {
  ZYDIS_MASK_MODE_INVALID , ZYDIS_MASK_MODE_DISABLED , ZYDIS_MASK_MODE_MERGING , ZYDIS_MASK_MODE_ZEROING ,
  ZYDIS_MASK_MODE_CONTROL , ZYDIS_MASK_MODE_CONTROL_ZEROING , ZYDIS_MASK_MODE_MAX_VALUE = ZYDIS_MASK_MODE_CONTROL_ZEROING , ZYDIS_MASK_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MASK_MODE_MAX_VALUE)
}
 Defines the ZydisMaskMode enum. More...
 
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 , ZYDIS_BROADCAST_MODE_MAX_VALUE = ZYDIS_BROADCAST_MODE_8_TO_16 , ZYDIS_BROADCAST_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_BROADCAST_MODE_MAX_VALUE)
}
 Defines the ZydisBroadcastMode enum. More...
 
enum  ZydisRoundingMode_ {
  ZYDIS_ROUNDING_MODE_INVALID , ZYDIS_ROUNDING_MODE_RN , ZYDIS_ROUNDING_MODE_RD , ZYDIS_ROUNDING_MODE_RU ,
  ZYDIS_ROUNDING_MODE_RZ , ZYDIS_ROUNDING_MODE_MAX_VALUE = ZYDIS_ROUNDING_MODE_RZ , ZYDIS_ROUNDING_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ROUNDING_MODE_MAX_VALUE)
}
 Defines the ZydisRoundingMode enum. More...
 
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 , ZYDIS_SWIZZLE_MODE_MAX_VALUE = ZYDIS_SWIZZLE_MODE_DDDD , ZYDIS_SWIZZLE_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SWIZZLE_MODE_MAX_VALUE)
}
 Defines the ZydisSwizzleMode enum. More...
 
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 , ZYDIS_CONVERSION_MODE_MAX_VALUE = ZYDIS_CONVERSION_MODE_UINT16 , ZYDIS_CONVERSION_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_CONVERSION_MODE_MAX_VALUE)
}
 Defines the ZydisConversionMode enum. More...
 
enum  ZydisPrefixType_ {
  ZYDIS_PREFIX_TYPE_IGNORED , ZYDIS_PREFIX_TYPE_EFFECTIVE , ZYDIS_PREFIX_TYPE_MANDATORY , ZYDIS_PREFIX_TYPE_MAX_VALUE = ZYDIS_PREFIX_TYPE_MANDATORY ,
  ZYDIS_PREFIX_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_PREFIX_TYPE_MAX_VALUE)
}
 Defines the ZydisPrefixType enum. More...
 

Detailed Description

Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.

Macro Definition Documentation

◆ ZYDIS_ATTRIB_IS_PRIVILEGED

#define ZYDIS_ATTRIB_IS_PRIVILEGED   0x0000000000000100

The instruction is privileged.

Privileged instructions are any instructions that require a current ring level below 3.

◆ ZYDIS_CPUFLAG_C0

#define ZYDIS_CPUFLAG_C0   22

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.

◆ ZYDIS_CPUFLAG_C1

#define ZYDIS_CPUFLAG_C1   23

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.

◆ ZYDIS_CPUFLAG_C2

#define ZYDIS_CPUFLAG_C2   24

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.

◆ ZYDIS_CPUFLAG_C3

#define ZYDIS_CPUFLAG_C3   25

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.

◆ ZYDIS_CPUFLAG_MAX_VALUE

#define ZYDIS_CPUFLAG_MAX_VALUE   ZYDIS_CPUFLAG_C3

DEPRECATED.

This define will be removed in the next major release.

◆ ZYDIS_OATTRIB_IS_MULTISOURCE4

#define ZYDIS_OATTRIB_IS_MULTISOURCE4   0x01

The operand is a MULTISOURCE4 register operand.

This is a special register operand-type used by 4FMAPS instructions where the given register points to the first register of a register range (4 registers in total).

Example: ZMM3 -> [ZMM3..ZMM6]

Typedef Documentation

◆ ZydisCPUFlagAction

Defines the ZydisCPUFlagAction enum.

DEPRECATED. This enum will be removed in the next major release.

Enumeration Type Documentation

◆ ZydisBranchType_

Defines the ZydisBranchType enum.

Enumerator
ZYDIS_BRANCH_TYPE_NONE 

The instruction is not a branch instruction.

ZYDIS_BRANCH_TYPE_SHORT 

The instruction is a short (8-bit) branch instruction.

ZYDIS_BRANCH_TYPE_NEAR 

The instruction is a near (16-bit or 32-bit) branch instruction.

ZYDIS_BRANCH_TYPE_FAR 

The instruction is a far (inter-segment) branch instruction.

ZYDIS_BRANCH_TYPE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_BRANCH_TYPE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisBroadcastMode_

Defines the ZydisBroadcastMode enum.

Enumerator
ZYDIS_BROADCAST_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_BROADCAST_MODE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisConversionMode_

Defines the ZydisConversionMode enum.

Enumerator
ZYDIS_CONVERSION_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_CONVERSION_MODE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisCPUFlagAction_

Defines the ZydisCPUFlagAction enum.

DEPRECATED. This enum will be removed in the next major release.

Enumerator
ZYDIS_CPUFLAG_ACTION_NONE 

The CPU flag is not touched by the instruction.

ZYDIS_CPUFLAG_ACTION_TESTED 

The CPU flag is tested (read).

ZYDIS_CPUFLAG_ACTION_TESTED_MODIFIED 

The CPU flag is tested and modified afterwards (read-write).

ZYDIS_CPUFLAG_ACTION_MODIFIED 

The CPU flag is modified (write).

ZYDIS_CPUFLAG_ACTION_SET_0 

The CPU flag is set to 0 (write).

ZYDIS_CPUFLAG_ACTION_SET_1 

The CPU flag is set to 1 (write).

ZYDIS_CPUFLAG_ACTION_UNDEFINED 

The CPU flag is undefined (write).

ZYDIS_CPUFLAG_ACTION_MAX_VALUE 

Maximum value of this enum.

ZYDIS_CPUFLAG_ACTION_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisExceptionClass_

Defines the ZydisExceptionClass enum.

Enumerator
ZYDIS_EXCEPTION_CLASS_MAX_VALUE 

Maximum value of this enum.

ZYDIS_EXCEPTION_CLASS_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisMaskMode_

Defines the ZydisMaskMode enum.

Enumerator
ZYDIS_MASK_MODE_DISABLED 

Masking is disabled for the current instruction (K0 register is used).

ZYDIS_MASK_MODE_MERGING 

The embedded mask register is used as a merge-mask.

ZYDIS_MASK_MODE_ZEROING 

The embedded mask register is used as a zero-mask.

ZYDIS_MASK_MODE_CONTROL 

The embedded mask register is used as a control-mask (element selector).

ZYDIS_MASK_MODE_CONTROL_ZEROING 

The embedded mask register is used as a zeroing control-mask (element selector).

ZYDIS_MASK_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_MASK_MODE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisMemoryOperandType_

Defines the ZydisMemoryOperandType enum.

Enumerator
ZYDIS_MEMOP_TYPE_MEM 

Normal memory operand.

ZYDIS_MEMOP_TYPE_AGEN 

The memory operand is only used for address-generation.

No real memory-access is caused.

ZYDIS_MEMOP_TYPE_MIB 

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_MAX_VALUE 

Maximum value of this enum.

ZYDIS_MEMOP_TYPE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisPrefixType_

Defines the ZydisPrefixType enum.

Enumerator
ZYDIS_PREFIX_TYPE_IGNORED 

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_EFFECTIVE 

The prefix is effectively used by the instruction.

ZYDIS_PREFIX_TYPE_MANDATORY 

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_MAX_VALUE 

Maximum value of this enum.

ZYDIS_PREFIX_TYPE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisRoundingMode_

Defines the ZydisRoundingMode enum.

Enumerator
ZYDIS_ROUNDING_MODE_RN 

Round to nearest.

ZYDIS_ROUNDING_MODE_RD 

Round down.

ZYDIS_ROUNDING_MODE_RU 

Round up.

ZYDIS_ROUNDING_MODE_RZ 

Round towards zero.

ZYDIS_ROUNDING_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_ROUNDING_MODE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.

◆ ZydisSwizzleMode_

Defines the ZydisSwizzleMode enum.

Enumerator
ZYDIS_SWIZZLE_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_SWIZZLE_MODE_REQUIRED_BITS 

The minimum number of bits required to represent all values of this enum.