Zydis  v2.0.0-beta1
DecoderTypes.h File Reference

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

#include <Zydis/CommonTypes.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  ZydisDecodedInstruction_
 Defines the ZydisDecodedInstruction struct. More...
 

Macros

#define ZYDIS_ATTRIB_HAS_MODRM   0x0000000000000001
 The instruction has the ModRM byte. More...
 
#define ZYDIS_ATTRIB_HAS_SIB   0x0000000000000002
 The instruction has the SUB byte. More...
 
#define ZYDIS_ATTRIB_HAS_REX   0x0000000000000004
 The instruction has the REX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_XOP   0x0000000000000008
 The instruction has the XOP prefix. More...
 
#define ZYDIS_ATTRIB_HAS_VEX   0x0000000000000010
 The instruction has the VEX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_EVEX   0x0000000000000020
 The instruction has the EVEX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_MVEX   0x0000000000000040
 The instruction has the MVEX prefix. More...
 
#define ZYDIS_ATTRIB_IS_RELATIVE   0x0000000000000080
 The instruction has one or more operands with position-relative offsets. More...
 
#define ZYDIS_ATTRIB_IS_PRIVILEGED   0x0000000000000100
 The instruction is privileged. More...
 
#define ZYDIS_ATTRIB_IS_FAR_BRANCH   0x0000001000000000
 The instruction is a far JMP/CALL/RET. More...
 
#define ZYDIS_ATTRIB_ACCEPTS_LOCK   0x0000000000000200
 The instruction accepts the lock prefix (0xF0). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REP   0x0000000000000400
 The instruction accepts the rep prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPE   0x0000000000000800
 The instruction accepts the repe/repz prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPZ   0x0000000000000800
 The instruction accepts the repe/repz prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNE   0x0000000000001000
 The instruction accepts the repne/repnz prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNZ   0x0000000000001000
 The instruction accepts the repne/repnz prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_BOUND   0x0000000000002000
 The instruction accepts the bound prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_XACQUIRE   0x0000000000004000
 The instruction accepts the xacquire prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_XRELEASE   0x0000000000008000
 The instruction accepts the xrelease prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK   0x0000000000010000
 The instruction accepts the xacquire/xrelease prefixes (0xF2, 0xF3) without the lock-prefix (0x0F). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS   0x0000000000020000
 The instruction accepts branch hints (0x2E, 0x3E). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_SEGMENT   0x0000000000040000
 The instruction accepts segment prefixes (0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65). More...
 
#define ZYDIS_ATTRIB_HAS_LOCK   0x0000000000080000
 The instruction has the lock prefix (0xF0). More...
 
#define ZYDIS_ATTRIB_HAS_REP   0x0000000000100000
 The instruction has the rep prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPE   0x0000000000200000
 The instruction has the repe/repz prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPZ   0x0000000000200000
 The instruction has the repe/repz prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPNE   0x0000000000400000
 The instruction has the repne/repnz prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_REPNZ   0x0000000000400000
 The instruction has the repne/repnz prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_BOUND   0x0000000000800000
 The instruction has the bound prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_XACQUIRE   0x0000000001000000
 The instruction has the xacquire prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_XRELEASE   0x0000000002000000
 The instruction has the xrelease prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN   0x0000000004000000
 The instruction has the branch-not-taken hint (0x2E). More...
 
#define ZYDIS_ATTRIB_HAS_BRANCH_TAKEN   0x0000000008000000
 The instruction has the branch-taken hint (0x3E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT   0x00000003F0000000
 The instruction has a segment modifier. More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_CS   0x0000000010000000
 The instruction has the CS segment modifier (0x2E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_SS   0x0000000020000000
 The instruction has the SS segment modifier (0x36). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_DS   0x0000000040000000
 The instruction has the DS segment modifier (0x3E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_ES   0x0000000080000000
 The instruction has the ES segment modifier (0x26). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_FS   0x0000000100000000
 The instruction has the FS segment modifier (0x64). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_GS   0x0000000200000000
 The instruction has the GS segment modifier (0x65). More...
 
#define ZYDIS_ATTRIB_HAS_OPERANDSIZE   0x0000000400000000
 The instruction has the operand-size prefix (0x66). More...
 
#define ZYDIS_ATTRIB_HAS_ADDRESSSIZE   0x0000000800000000
 The instruction has the address-size prefix (0x67). More...
 

Typedefs

typedef ZydisU8 ZydisMemoryOperandType
 Defines the ZydisMemoryOperandType datatype. More...
 
typedef struct ZydisDecodedOperand_ ZydisDecodedOperand
 Defines the ZydisDecodedOperand struct. More...
 
typedef ZydisU64 ZydisInstructionAttributes
 Defines the ZydisInstructionAttributes datatype. More...
 
typedef ZydisU8 ZydisCPUFlag
 Defines the ZydisCPUFlag datatype. More...
 
typedef ZydisU32 ZydisCPUFlagMask
 Defines the ZydisCPUFlagMask datatype. More...
 
typedef ZydisU8 ZydisCPUFlagAction
 Defines the ZydisCPUFlagAction datatype. More...
 
typedef ZydisU8 ZydisExceptionClass
 Defines the ZydisExceptionClass datatype. More...
 
typedef ZydisU16 ZydisVectorLength
 Defines the ZydisVectorLength datatype. More...
 
typedef ZydisU8 ZydisMaskMode
 Defines the ZydisMaskMode datatype. More...
 
typedef ZydisU8 ZydisBroadcastMode
 Defines the ZydisBroadcastMode datatype. More...
 
typedef ZydisU8 ZydisRoundingMode
 Defines the ZydisRoundingMode datatype. More...
 
typedef ZydisU8 ZydisSwizzleMode
 Defines the ZydisSwizzleMode datatype. More...
 
typedef ZydisU8 ZydisConversionMode
 Defines the ZydisConversionMode datatype. More...
 
typedef struct ZydisDecodedInstruction_ ZydisDecodedInstruction
 Defines the ZydisDecodedInstruction struct. More...
 

Enumerations

enum  ZydisMemoryOperandTypes { ZYDIS_MEMOP_TYPE_INVALID , ZYDIS_MEMOP_TYPE_MEM , ZYDIS_MEMOP_TYPE_AGEN , ZYDIS_MEMOP_TYPE_MIB }
 Values that represent memory-operand types. More...
 
enum  ZydisCPUFlags {
  ZYDIS_CPUFLAG_CF , ZYDIS_CPUFLAG_PF , ZYDIS_CPUFLAG_AF , ZYDIS_CPUFLAG_ZF ,
  ZYDIS_CPUFLAG_SF , ZYDIS_CPUFLAG_TF , ZYDIS_CPUFLAG_IF , ZYDIS_CPUFLAG_DF ,
  ZYDIS_CPUFLAG_OF , ZYDIS_CPUFLAG_IOPL , ZYDIS_CPUFLAG_NT , ZYDIS_CPUFLAG_RF ,
  ZYDIS_CPUFLAG_VM , ZYDIS_CPUFLAG_AC , ZYDIS_CPUFLAG_VIF , ZYDIS_CPUFLAG_VIP ,
  ZYDIS_CPUFLAG_ID , ZYDIS_CPUFLAG_C0 , ZYDIS_CPUFLAG_C1 , ZYDIS_CPUFLAG_C2 ,
  ZYDIS_CPUFLAG_C3 , ZYDIS_CPUFLAG_MAX_VALUE = ZYDIS_CPUFLAG_C3
}
 Values that represent CPU-flags. More...
 
enum  ZydisCPUFlagActions {
  ZYDIS_CPUFLAG_ACTION_NONE , ZYDIS_CPUFLAG_ACTION_TESTED , 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
}
 Values that represent CPU-flag actions. More...
 
enum  ZydisExceptionClasses {
  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_MAX_VALUE = ZYDIS_EXCEPTION_CLASS_K21
}
 Values that represent exception-classes. More...
 
enum  ZydisVectorLengths {
  ZYDIS_VECTOR_LENGTH_INVALID = 0 , ZYDIS_VECTOR_LENGTH_128 = 128 , ZYDIS_VECTOR_LENGTH_256 = 256 , ZYDIS_VECTOR_LENGTH_512 = 512 ,
  ZYDIS_VECTOR_LENGTH_MAX_VALUE = ZYDIS_VECTOR_LENGTH_512
}
 Values that represent vector-lengths. More...
 
enum  ZydisMaskModes { ZYDIS_MASK_MODE_INVALID , ZYDIS_MASK_MODE_MERGE , ZYDIS_MASK_MODE_ZERO , ZYDIS_MASK_MODE_MAX_VALUE = ZYDIS_MASK_MODE_ZERO }
 Values that represent AVX mask-modes. More...
 
enum  ZydisBroadcastModes {
  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
}
 Values that represent AVX broadcast-modes. More...
 
enum  ZydisRoundingModes {
  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
}
 Values that represent AVX rounding-modes. More...
 
enum  ZydisSwizzleModes {
  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
}
 Values that represent swizzle-modes. More...
 
enum  ZydisConversionModes {
  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
}
 Values that represent conversion-modes. More...
 

Detailed Description

Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.

Macro Definition Documentation

◆ ZYDIS_ATTRIB_ACCEPTS_BOUND

#define ZYDIS_ATTRIB_ACCEPTS_BOUND   0x0000000000002000

The instruction accepts the bound prefix (0xF2).

◆ ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS

#define ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS   0x0000000000020000

The instruction accepts branch hints (0x2E, 0x3E).

◆ ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK

#define ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK   0x0000000000010000

The instruction accepts the xacquire/xrelease prefixes (0xF2, 0xF3) without the lock-prefix (0x0F).

◆ ZYDIS_ATTRIB_ACCEPTS_LOCK

#define ZYDIS_ATTRIB_ACCEPTS_LOCK   0x0000000000000200

The instruction accepts the lock prefix (0xF0).

◆ ZYDIS_ATTRIB_ACCEPTS_REP

#define ZYDIS_ATTRIB_ACCEPTS_REP   0x0000000000000400

The instruction accepts the rep prefix (0xF3).

◆ ZYDIS_ATTRIB_ACCEPTS_REPE

#define ZYDIS_ATTRIB_ACCEPTS_REPE   0x0000000000000800

The instruction accepts the repe/repz prefix (0xF3).

◆ ZYDIS_ATTRIB_ACCEPTS_REPNE

#define ZYDIS_ATTRIB_ACCEPTS_REPNE   0x0000000000001000

The instruction accepts the repne/repnz prefix (0xF2).

◆ ZYDIS_ATTRIB_ACCEPTS_REPNZ

#define ZYDIS_ATTRIB_ACCEPTS_REPNZ   0x0000000000001000

The instruction accepts the repne/repnz prefix (0xF2).

◆ ZYDIS_ATTRIB_ACCEPTS_REPZ

#define ZYDIS_ATTRIB_ACCEPTS_REPZ   0x0000000000000800

The instruction accepts the repe/repz prefix (0xF3).

◆ ZYDIS_ATTRIB_ACCEPTS_SEGMENT

#define ZYDIS_ATTRIB_ACCEPTS_SEGMENT   0x0000000000040000

The instruction accepts segment prefixes (0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65).

◆ ZYDIS_ATTRIB_ACCEPTS_XACQUIRE

#define ZYDIS_ATTRIB_ACCEPTS_XACQUIRE   0x0000000000004000

The instruction accepts the xacquire prefix (0xF2).

◆ ZYDIS_ATTRIB_ACCEPTS_XRELEASE

#define ZYDIS_ATTRIB_ACCEPTS_XRELEASE   0x0000000000008000

The instruction accepts the xrelease prefix (0xF3).

◆ ZYDIS_ATTRIB_HAS_ADDRESSSIZE

#define ZYDIS_ATTRIB_HAS_ADDRESSSIZE   0x0000000800000000

The instruction has the address-size prefix (0x67).

◆ ZYDIS_ATTRIB_HAS_BOUND

#define ZYDIS_ATTRIB_HAS_BOUND   0x0000000000800000

The instruction has the bound prefix (0xF2).

◆ ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN

#define ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN   0x0000000004000000

The instruction has the branch-not-taken hint (0x2E).

◆ ZYDIS_ATTRIB_HAS_BRANCH_TAKEN

#define ZYDIS_ATTRIB_HAS_BRANCH_TAKEN   0x0000000008000000

The instruction has the branch-taken hint (0x3E).

◆ ZYDIS_ATTRIB_HAS_EVEX

#define ZYDIS_ATTRIB_HAS_EVEX   0x0000000000000020

The instruction has the EVEX prefix.

◆ ZYDIS_ATTRIB_HAS_LOCK

#define ZYDIS_ATTRIB_HAS_LOCK   0x0000000000080000

The instruction has the lock prefix (0xF0).

◆ ZYDIS_ATTRIB_HAS_MODRM

#define ZYDIS_ATTRIB_HAS_MODRM   0x0000000000000001

The instruction has the ModRM byte.

◆ ZYDIS_ATTRIB_HAS_MVEX

#define ZYDIS_ATTRIB_HAS_MVEX   0x0000000000000040

The instruction has the MVEX prefix.

◆ ZYDIS_ATTRIB_HAS_OPERANDSIZE

#define ZYDIS_ATTRIB_HAS_OPERANDSIZE   0x0000000400000000

The instruction has the operand-size prefix (0x66).

◆ ZYDIS_ATTRIB_HAS_REP

#define ZYDIS_ATTRIB_HAS_REP   0x0000000000100000

The instruction has the rep prefix (0xF3).

◆ ZYDIS_ATTRIB_HAS_REPE

#define ZYDIS_ATTRIB_HAS_REPE   0x0000000000200000

The instruction has the repe/repz prefix (0xF3).

◆ ZYDIS_ATTRIB_HAS_REPNE

#define ZYDIS_ATTRIB_HAS_REPNE   0x0000000000400000

The instruction has the repne/repnz prefix (0xF2).

◆ ZYDIS_ATTRIB_HAS_REPNZ

#define ZYDIS_ATTRIB_HAS_REPNZ   0x0000000000400000

The instruction has the repne/repnz prefix (0xF2).

◆ ZYDIS_ATTRIB_HAS_REPZ

#define ZYDIS_ATTRIB_HAS_REPZ   0x0000000000200000

The instruction has the repe/repz prefix (0xF3).

◆ ZYDIS_ATTRIB_HAS_REX

#define ZYDIS_ATTRIB_HAS_REX   0x0000000000000004

The instruction has the REX prefix.

◆ ZYDIS_ATTRIB_HAS_SEGMENT

#define ZYDIS_ATTRIB_HAS_SEGMENT   0x00000003F0000000

The instruction has a segment modifier.

◆ ZYDIS_ATTRIB_HAS_SEGMENT_CS

#define ZYDIS_ATTRIB_HAS_SEGMENT_CS   0x0000000010000000

The instruction has the CS segment modifier (0x2E).

◆ ZYDIS_ATTRIB_HAS_SEGMENT_DS

#define ZYDIS_ATTRIB_HAS_SEGMENT_DS   0x0000000040000000

The instruction has the DS segment modifier (0x3E).

◆ ZYDIS_ATTRIB_HAS_SEGMENT_ES

#define ZYDIS_ATTRIB_HAS_SEGMENT_ES   0x0000000080000000

The instruction has the ES segment modifier (0x26).

◆ ZYDIS_ATTRIB_HAS_SEGMENT_FS

#define ZYDIS_ATTRIB_HAS_SEGMENT_FS   0x0000000100000000

The instruction has the FS segment modifier (0x64).

◆ ZYDIS_ATTRIB_HAS_SEGMENT_GS

#define ZYDIS_ATTRIB_HAS_SEGMENT_GS   0x0000000200000000

The instruction has the GS segment modifier (0x65).

◆ ZYDIS_ATTRIB_HAS_SEGMENT_SS

#define ZYDIS_ATTRIB_HAS_SEGMENT_SS   0x0000000020000000

The instruction has the SS segment modifier (0x36).

◆ ZYDIS_ATTRIB_HAS_SIB

#define ZYDIS_ATTRIB_HAS_SIB   0x0000000000000002

The instruction has the SUB byte.

◆ ZYDIS_ATTRIB_HAS_VEX

#define ZYDIS_ATTRIB_HAS_VEX   0x0000000000000010

The instruction has the VEX prefix.

◆ ZYDIS_ATTRIB_HAS_XACQUIRE

#define ZYDIS_ATTRIB_HAS_XACQUIRE   0x0000000001000000

The instruction has the xacquire prefix (0xF2).

◆ ZYDIS_ATTRIB_HAS_XOP

#define ZYDIS_ATTRIB_HAS_XOP   0x0000000000000008

The instruction has the XOP prefix.

◆ ZYDIS_ATTRIB_HAS_XRELEASE

#define ZYDIS_ATTRIB_HAS_XRELEASE   0x0000000002000000

The instruction has the xrelease prefix (0xF3).

◆ ZYDIS_ATTRIB_IS_FAR_BRANCH

#define ZYDIS_ATTRIB_IS_FAR_BRANCH   0x0000001000000000

The instruction is a far JMP/CALL/RET.

◆ ZYDIS_ATTRIB_IS_PRIVILEGED

#define ZYDIS_ATTRIB_IS_PRIVILEGED   0x0000000000000100

The instruction is privileged.

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

◆ ZYDIS_ATTRIB_IS_RELATIVE

#define ZYDIS_ATTRIB_IS_RELATIVE   0x0000000000000080

The instruction has one or more operands with position-relative offsets.

Typedef Documentation

◆ ZydisBroadcastMode

Defines the ZydisBroadcastMode datatype.

◆ ZydisConversionMode

Defines the ZydisConversionMode datatype.

◆ ZydisCPUFlag

Defines the ZydisCPUFlag datatype.

◆ ZydisCPUFlagAction

Defines the ZydisCPUFlagAction datatype.

◆ ZydisCPUFlagMask

Defines the ZydisCPUFlagMask datatype.

◆ ZydisDecodedInstruction

Defines the ZydisDecodedInstruction struct.

◆ ZydisDecodedOperand

Defines the ZydisDecodedOperand struct.

◆ ZydisExceptionClass

Defines the ZydisExceptionClass datatype.

◆ ZydisInstructionAttributes

Defines the ZydisInstructionAttributes datatype.

◆ ZydisMaskMode

Defines the ZydisMaskMode datatype.

◆ ZydisMemoryOperandType

Defines the ZydisMemoryOperandType datatype.

◆ ZydisRoundingMode

Defines the ZydisRoundingMode datatype.

◆ ZydisSwizzleMode

Defines the ZydisSwizzleMode datatype.

◆ ZydisVectorLength

Defines the ZydisVectorLength datatype.

Enumeration Type Documentation

◆ ZydisBroadcastModes

Values that represent AVX broadcast-modes.

Enumerator
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 

Maximum value of this enum.

◆ ZydisConversionModes

Values that represent conversion-modes.

Enumerator
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 

Maximum value of this enum.

◆ ZydisCPUFlagActions

Values that represent CPU-flag actions.

Enumerator
ZYDIS_CPUFLAG_ACTION_NONE 
ZYDIS_CPUFLAG_ACTION_TESTED 
ZYDIS_CPUFLAG_ACTION_MODIFIED 
ZYDIS_CPUFLAG_ACTION_SET_0 
ZYDIS_CPUFLAG_ACTION_SET_1 
ZYDIS_CPUFLAG_ACTION_UNDEFINED 
ZYDIS_CPUFLAG_ACTION_MAX_VALUE 

Maximum value of this enum.

◆ ZydisCPUFlags

Values that represent CPU-flags.

Enumerator
ZYDIS_CPUFLAG_CF 

Carry flag.

ZYDIS_CPUFLAG_PF 

Parity flag.

ZYDIS_CPUFLAG_AF 

Adjust flag.

ZYDIS_CPUFLAG_ZF 

Zero flag.

ZYDIS_CPUFLAG_SF 

Sign flag.

ZYDIS_CPUFLAG_TF 

Trap flag.

ZYDIS_CPUFLAG_IF 

Interrupt enable flag.

ZYDIS_CPUFLAG_DF 

Direction flag.

ZYDIS_CPUFLAG_OF 

Overflow flag.

ZYDIS_CPUFLAG_IOPL 

I/O privilege level flag.

ZYDIS_CPUFLAG_NT 

Nested task flag.

ZYDIS_CPUFLAG_RF 

Resume flag.

ZYDIS_CPUFLAG_VM 

Virtual 8086 mode flag.

ZYDIS_CPUFLAG_AC 

Alignment check.

ZYDIS_CPUFLAG_VIF 

Virtual interrupt flag.

ZYDIS_CPUFLAG_VIP 

Virtual interrupt pending.

ZYDIS_CPUFLAG_ID 

Able to use CPUID instruction.

ZYDIS_CPUFLAG_C0 

FPU condition-code flag 0.

ZYDIS_CPUFLAG_C1 

FPU condition-code flag 1.

ZYDIS_CPUFLAG_C2 

FPU condition-code flag 2.

ZYDIS_CPUFLAG_C3 

FPU condition-code flag 3.

ZYDIS_CPUFLAG_MAX_VALUE 

Maximum value of this enum.

◆ ZydisExceptionClasses

Values that represent exception-classes.

Enumerator
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_MAX_VALUE 

Maximum value of this enum.

◆ ZydisMaskModes

Values that represent AVX mask-modes.

Enumerator
ZYDIS_MASK_MODE_INVALID 
ZYDIS_MASK_MODE_MERGE 

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

This is the default mode for all EVEX/MVEX-instructions.

ZYDIS_MASK_MODE_ZERO 

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

ZYDIS_MASK_MODE_MAX_VALUE 

Maximum value of this enum.

◆ ZydisMemoryOperandTypes

Values that represent memory-operand types.

Enumerator
ZYDIS_MEMOP_TYPE_INVALID 
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.

◆ ZydisRoundingModes

Values that represent AVX rounding-modes.

Enumerator
ZYDIS_ROUNDING_MODE_INVALID 
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.

◆ ZydisSwizzleModes

Values that represent swizzle-modes.

Enumerator
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 

Maximum value of this enum.

◆ ZydisVectorLengths

Values that represent vector-lengths.

Enumerator
ZYDIS_VECTOR_LENGTH_INVALID 
ZYDIS_VECTOR_LENGTH_128 
ZYDIS_VECTOR_LENGTH_256 
ZYDIS_VECTOR_LENGTH_512 
ZYDIS_VECTOR_LENGTH_MAX_VALUE 

Maximum value of this enum.