Zydis  v2.0.0-alpha2
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 struct ZydisDecodedOperand_ ZydisDecodedOperand
 Defines the ZydisDecodedOperand struct. More...
 
typedef uint64_t ZydisInstructionAttributes
 Defines the ZydisInstructionAttributes datatype. More...
 
typedef uint8_t ZydisCPUFlag
 Defines the ZydisCPUFlag datatype. More...
 
typedef uint32_t ZydisCPUFlagMask
 Defines the ZydisCPUFlagMask datatype. More...
 
typedef uint8_t ZydisCPUFlagAction
 Defines the ZydisCPUFlagAction datatype. More...
 
typedef uint8_t ZydisExceptionClass
 Defines the ZydisExceptionClass datatype. More...
 
typedef uint16_t ZydisVectorLength
 Defines the ZydisVectorLength datatype. More...
 
typedef uint8_t ZydisMaskMode
 Defines the ZydisMaskMode datatype. More...
 
typedef uint8_t ZydisBroadcastMode
 Defines the ZydisBroadcastMode datatype. More...
 
typedef uint8_t ZydisRoundingMode
 Defines the ZydisRoundingMode datatype. More...
 
typedef uint8_t ZydisSwizzleMode
 Defines the ZydisSwizzleMode datatype. More...
 
typedef uint8_t ZydisConversionMode
 Defines the ZydisConversionMode datatype. More...
 
typedef struct ZydisDecodedInstruction_ ZydisDecodedInstruction
 Defines the ZydisDecodedInstruction struct. More...
 

Enumerations

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

typedef uint8_t ZydisBroadcastMode

Defines the ZydisBroadcastMode datatype.

◆ ZydisConversionMode

typedef uint8_t ZydisConversionMode

Defines the ZydisConversionMode datatype.

◆ ZydisCPUFlag

typedef uint8_t ZydisCPUFlag

Defines the ZydisCPUFlag datatype.

◆ ZydisCPUFlagAction

typedef uint8_t ZydisCPUFlagAction

Defines the ZydisCPUFlagAction datatype.

◆ ZydisCPUFlagMask

typedef uint32_t ZydisCPUFlagMask

Defines the ZydisCPUFlagMask datatype.

◆ ZydisDecodedInstruction

Defines the ZydisDecodedInstruction struct.

◆ ZydisDecodedOperand

Defines the ZydisDecodedOperand struct.

◆ ZydisExceptionClass

typedef uint8_t ZydisExceptionClass

Defines the ZydisExceptionClass datatype.

◆ ZydisInstructionAttributes

typedef uint64_t ZydisInstructionAttributes

Defines the ZydisInstructionAttributes datatype.

◆ ZydisMaskMode

typedef uint8_t ZydisMaskMode

Defines the ZydisMaskMode datatype.

◆ ZydisRoundingMode

typedef uint8_t ZydisRoundingMode

Defines the ZydisRoundingMode datatype.

◆ ZydisSwizzleMode

typedef uint8_t ZydisSwizzleMode

Defines the ZydisSwizzleMode datatype.

◆ ZydisVectorLength

typedef uint16_t 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.

◆ 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.