Zydis  v4.0.0
SharedTypes.h File Reference

Defines decoder/encoder-shared macros and types. More...

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

Go to the source code of this file.

Macros

#define ZYDIS_MAX_INSTRUCTION_LENGTH   15
 
#define ZYDIS_MAX_OPERAND_COUNT   10
 
#define ZYDIS_MAX_OPERAND_COUNT_VISIBLE   5
 
#define ZYDIS_ATTRIB_HAS_MODRM   (1ULL << 0)
 The instruction has the ModRM byte. More...
 
#define ZYDIS_ATTRIB_HAS_SIB   (1ULL << 1)
 The instruction has the SIB byte. More...
 
#define ZYDIS_ATTRIB_HAS_REX   (1ULL << 2)
 The instruction has the REX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_XOP   (1ULL << 3)
 The instruction has the XOP prefix. More...
 
#define ZYDIS_ATTRIB_HAS_VEX   (1ULL << 4)
 The instruction has the VEX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_EVEX   (1ULL << 5)
 The instruction has the EVEX prefix. More...
 
#define ZYDIS_ATTRIB_HAS_MVEX   (1ULL << 6)
 The instruction has the MVEX prefix. More...
 
#define ZYDIS_ATTRIB_IS_RELATIVE   (1ULL << 7)
 The instruction has one or more operands with position-relative offsets. More...
 
#define ZYDIS_ATTRIB_IS_PRIVILEGED   (1ULL << 8)
 The instruction is privileged. More...
 
#define ZYDIS_ATTRIB_CPUFLAG_ACCESS   (1ULL << 9)
 The instruction accesses one or more CPU-flags. More...
 
#define ZYDIS_ATTRIB_CPU_STATE_CR   (1ULL << 10)
 The instruction may conditionally read the general CPU state. More...
 
#define ZYDIS_ATTRIB_CPU_STATE_CW   (1ULL << 11)
 The instruction may conditionally write the general CPU state. More...
 
#define ZYDIS_ATTRIB_FPU_STATE_CR   (1ULL << 12)
 The instruction may conditionally read the FPU state (X87, MMX). More...
 
#define ZYDIS_ATTRIB_FPU_STATE_CW   (1ULL << 13)
 The instruction may conditionally write the FPU state (X87, MMX). More...
 
#define ZYDIS_ATTRIB_XMM_STATE_CR   (1ULL << 14)
 The instruction may conditionally read the XMM state (AVX, AVX2, AVX-512). More...
 
#define ZYDIS_ATTRIB_XMM_STATE_CW   (1ULL << 15)
 The instruction may conditionally write the XMM state (AVX, AVX2, AVX-512). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_LOCK   (1ULL << 16)
 The instruction accepts the LOCK prefix (0xF0). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REP   (1ULL << 17)
 The instruction accepts the REP prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPE   (1ULL << 18)
 The instruction accepts the REPE/REPZ prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPZ   ZYDIS_ATTRIB_ACCEPTS_REPE
 The instruction accepts the REPE/REPZ prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNE   (1ULL << 19)
 The instruction accepts the REPNE/REPNZ prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_REPNZ   ZYDIS_ATTRIB_ACCEPTS_REPNE
 The instruction accepts the REPNE/REPNZ prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_BND   (1ULL << 20)
 The instruction accepts the BND prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_XACQUIRE   (1ULL << 21)
 The instruction accepts the XACQUIRE prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_XRELEASE   (1ULL << 22)
 The instruction accepts the XRELEASE prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK   (1ULL << 23)
 The instruction accepts the XACQUIRE/XRELEASE prefixes (0xF2, 0xF3) without the LOCK prefix (0x0F). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS   (1ULL << 24)
 The instruction accepts branch hints (0x2E, 0x3E). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_NOTRACK   (1ULL << 25)
 The instruction accepts the CET no-track prefix (0x3E). More...
 
#define ZYDIS_ATTRIB_ACCEPTS_SEGMENT   (1ULL << 26)
 The instruction accepts segment prefixes (0x2E, 0x36, 0x3E, 0x26, 0x64, 0x65). More...
 
#define ZYDIS_ATTRIB_HAS_LOCK   (1ULL << 27)
 The instruction has the LOCK prefix (0xF0). More...
 
#define ZYDIS_ATTRIB_HAS_REP   (1ULL << 28)
 The instruction has the REP prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPE   (1ULL << 29)
 The instruction has the REPE/REPZ prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPZ   ZYDIS_ATTRIB_HAS_REPE
 The instruction has the REPE/REPZ prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_REPNE   (1ULL << 30)
 The instruction has the REPNE/REPNZ prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_REPNZ   ZYDIS_ATTRIB_HAS_REPNE
 The instruction has the REPNE/REPNZ prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_BND   (1ULL << 31)
 The instruction has the BND prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_XACQUIRE   (1ULL << 32)
 The instruction has the XACQUIRE prefix (0xF2). More...
 
#define ZYDIS_ATTRIB_HAS_XRELEASE   (1ULL << 33)
 The instruction has the XRELEASE prefix (0xF3). More...
 
#define ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN   (1ULL << 34)
 The instruction has the branch-not-taken hint (0x2E). More...
 
#define ZYDIS_ATTRIB_HAS_BRANCH_TAKEN   (1ULL << 35)
 The instruction has the branch-taken hint (0x3E). More...
 
#define ZYDIS_ATTRIB_HAS_NOTRACK   (1ULL << 36)
 The instruction has the CET no-track prefix (0x3E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_CS   (1ULL << 37)
 The instruction has the CS segment modifier (0x2E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_SS   (1ULL << 38)
 The instruction has the SS segment modifier (0x36). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_DS   (1ULL << 39)
 The instruction has the DS segment modifier (0x3E). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_ES   (1ULL << 40)
 The instruction has the ES segment modifier (0x26). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_FS   (1ULL << 41)
 The instruction has the FS segment modifier (0x64). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT_GS   (1ULL << 42)
 The instruction has the GS segment modifier (0x65). More...
 
#define ZYDIS_ATTRIB_HAS_SEGMENT
 The instruction has a segment modifier. More...
 
#define ZYDIS_ATTRIB_HAS_OPERANDSIZE   (1ULL << 43)
 The instruction has the operand-size override prefix (0x66). More...
 
#define ZYDIS_ATTRIB_HAS_ADDRESSSIZE   (1ULL << 44)
 The instruction has the address-size override prefix (0x67). More...
 
#define ZYDIS_ATTRIB_HAS_EVEX_B   (1ULL << 45)
 The instruction has the EVEX.b bit set. More...
 

Typedefs

typedef enum ZydisMachineMode_ ZydisMachineMode
 Defines the ZydisMachineMode enum. More...
 
typedef enum ZydisStackWidth_ ZydisStackWidth
 Defines the ZydisStackWidth enum. More...
 
typedef enum ZydisElementType_ ZydisElementType
 Defines the ZydisElementType enum. More...
 
typedef ZyanU16 ZydisElementSize
 Defines the ZydisElementSize datatype. More...
 
typedef enum ZydisOperandType_ ZydisOperandType
 Defines the ZydisOperandType enum. More...
 
typedef enum ZydisOperandEncoding_ ZydisOperandEncoding
 Defines the ZydisOperandEncoding enum. More...
 
typedef enum ZydisOperandVisibility_ ZydisOperandVisibility
 Defines the ZydisOperandVisibility enum. More...
 
typedef enum ZydisOperandAction_ ZydisOperandAction
 Defines the ZydisOperandAction enum. More...
 
typedef ZyanU8 ZydisOperandActions
 Defines the ZydisOperandActions data-type. More...
 
typedef enum ZydisInstructionEncoding_ ZydisInstructionEncoding
 Defines the ZydisInstructionEncoding enum. More...
 
typedef enum ZydisOpcodeMap_ ZydisOpcodeMap
 Defines the ZydisOpcodeMap enum. More...
 
typedef ZyanU64 ZydisInstructionAttributes
 Defines the ZydisInstructionAttributes data-type. More...
 

Enumerations

enum  ZydisMachineMode_ {
  ZYDIS_MACHINE_MODE_LONG_64 , ZYDIS_MACHINE_MODE_LONG_COMPAT_32 , ZYDIS_MACHINE_MODE_LONG_COMPAT_16 , ZYDIS_MACHINE_MODE_LEGACY_32 ,
  ZYDIS_MACHINE_MODE_LEGACY_16 , ZYDIS_MACHINE_MODE_REAL_16 , ZYDIS_MACHINE_MODE_MAX_VALUE = ZYDIS_MACHINE_MODE_REAL_16 , ZYDIS_MACHINE_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MACHINE_MODE_MAX_VALUE)
}
 Defines the ZydisMachineMode enum. More...
 
enum  ZydisStackWidth_ {
  ZYDIS_STACK_WIDTH_16 , ZYDIS_STACK_WIDTH_32 , ZYDIS_STACK_WIDTH_64 , ZYDIS_STACK_WIDTH_MAX_VALUE = ZYDIS_STACK_WIDTH_64 ,
  ZYDIS_STACK_WIDTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_STACK_WIDTH_MAX_VALUE)
}
 Defines the ZydisStackWidth enum. More...
 
enum  ZydisElementType_ {
  ZYDIS_ELEMENT_TYPE_INVALID , ZYDIS_ELEMENT_TYPE_STRUCT , ZYDIS_ELEMENT_TYPE_UINT , ZYDIS_ELEMENT_TYPE_INT ,
  ZYDIS_ELEMENT_TYPE_FLOAT16 , ZYDIS_ELEMENT_TYPE_FLOAT32 , ZYDIS_ELEMENT_TYPE_FLOAT64 , ZYDIS_ELEMENT_TYPE_FLOAT80 ,
  ZYDIS_ELEMENT_TYPE_LONGBCD , ZYDIS_ELEMENT_TYPE_CC , ZYDIS_ELEMENT_TYPE_MAX_VALUE = ZYDIS_ELEMENT_TYPE_CC , ZYDIS_ELEMENT_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ELEMENT_TYPE_MAX_VALUE)
}
 Defines the ZydisElementType enum. More...
 
enum  ZydisOperandType_ {
  ZYDIS_OPERAND_TYPE_UNUSED , ZYDIS_OPERAND_TYPE_REGISTER , ZYDIS_OPERAND_TYPE_MEMORY , ZYDIS_OPERAND_TYPE_POINTER ,
  ZYDIS_OPERAND_TYPE_IMMEDIATE , ZYDIS_OPERAND_TYPE_MAX_VALUE = ZYDIS_OPERAND_TYPE_IMMEDIATE , ZYDIS_OPERAND_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE)
}
 Defines the ZydisOperandType enum. More...
 
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 , ZYDIS_OPERAND_ENCODING_MAX_VALUE = ZYDIS_OPERAND_ENCODING_JIMM16_32_32 ,
  ZYDIS_OPERAND_ENCODING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ENCODING_MAX_VALUE)
}
 Defines the ZydisOperandEncoding enum. More...
 
enum  ZydisOperandVisibility_ {
  ZYDIS_OPERAND_VISIBILITY_INVALID , ZYDIS_OPERAND_VISIBILITY_EXPLICIT , ZYDIS_OPERAND_VISIBILITY_IMPLICIT , ZYDIS_OPERAND_VISIBILITY_HIDDEN ,
  ZYDIS_OPERAND_VISIBILITY_MAX_VALUE = ZYDIS_OPERAND_VISIBILITY_HIDDEN , ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS =
}
 Defines the ZydisOperandVisibility enum. More...
 
enum  ZydisOperandAction_ {
  ZYDIS_OPERAND_ACTION_READ = 0x01 , ZYDIS_OPERAND_ACTION_WRITE = 0x02 , ZYDIS_OPERAND_ACTION_CONDREAD = 0x04 , ZYDIS_OPERAND_ACTION_CONDWRITE = 0x08 ,
  ZYDIS_OPERAND_ACTION_READWRITE = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_WRITE , ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE , ZYDIS_OPERAND_ACTION_READ_CONDWRITE , ZYDIS_OPERAND_ACTION_CONDREAD_WRITE ,
  ZYDIS_OPERAND_ACTION_MASK_READ = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_CONDREAD , ZYDIS_OPERAND_ACTION_MASK_WRITE = ZYDIS_OPERAND_ACTION_WRITE | ZYDIS_OPERAND_ACTION_CONDWRITE , ZYDIS_OPERAND_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ACTION_CONDWRITE)
}
 Defines the ZydisOperandAction enum. More...
 
enum  ZydisInstructionEncoding_ {
  ZYDIS_INSTRUCTION_ENCODING_LEGACY , ZYDIS_INSTRUCTION_ENCODING_3DNOW , ZYDIS_INSTRUCTION_ENCODING_XOP , ZYDIS_INSTRUCTION_ENCODING_VEX ,
  ZYDIS_INSTRUCTION_ENCODING_EVEX , ZYDIS_INSTRUCTION_ENCODING_MVEX , ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE = ZYDIS_INSTRUCTION_ENCODING_MVEX , ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS =
}
 Defines the ZydisInstructionEncoding enum. More...
 
enum  ZydisOpcodeMap_ {
  ZYDIS_OPCODE_MAP_DEFAULT , ZYDIS_OPCODE_MAP_0F , ZYDIS_OPCODE_MAP_0F38 , ZYDIS_OPCODE_MAP_0F3A ,
  ZYDIS_OPCODE_MAP_MAP4 , ZYDIS_OPCODE_MAP_MAP5 , ZYDIS_OPCODE_MAP_MAP6 , ZYDIS_OPCODE_MAP_MAP7 ,
  ZYDIS_OPCODE_MAP_0F0F , ZYDIS_OPCODE_MAP_XOP8 , ZYDIS_OPCODE_MAP_XOP9 , ZYDIS_OPCODE_MAP_XOPA ,
  ZYDIS_OPCODE_MAP_MAX_VALUE = ZYDIS_OPCODE_MAP_XOPA , ZYDIS_OPCODE_MAP_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPCODE_MAP_MAX_VALUE)
}
 Defines the ZydisOpcodeMap enum. More...
 

Functions

 ZYAN_STATIC_ASSERT (ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE - ZYDIS_OPERAND_TYPE_REGISTER)==2)
 

Detailed Description

Defines decoder/encoder-shared macros and types.

Macro Definition Documentation

◆ ZYDIS_MAX_INSTRUCTION_LENGTH

#define ZYDIS_MAX_INSTRUCTION_LENGTH   15

◆ ZYDIS_MAX_OPERAND_COUNT

#define ZYDIS_MAX_OPERAND_COUNT   10

◆ ZYDIS_MAX_OPERAND_COUNT_VISIBLE

#define ZYDIS_MAX_OPERAND_COUNT_VISIBLE   5

Typedef Documentation

◆ ZydisElementSize

typedef ZyanU16 ZydisElementSize

Defines the ZydisElementSize datatype.

◆ ZydisElementType

Defines the ZydisElementType enum.

◆ ZydisInstructionEncoding

Defines the ZydisInstructionEncoding enum.

◆ ZydisMachineMode

Defines the ZydisMachineMode enum.

◆ ZydisOpcodeMap

Defines the ZydisOpcodeMap enum.

◆ ZydisOperandAction

Defines the ZydisOperandAction enum.

◆ ZydisOperandActions

typedef ZyanU8 ZydisOperandActions

Defines the ZydisOperandActions data-type.

◆ ZydisOperandEncoding

Defines the ZydisOperandEncoding enum.

◆ ZydisOperandType

Defines the ZydisOperandType enum.

◆ ZydisOperandVisibility

Defines the ZydisOperandVisibility enum.

◆ ZydisStackWidth

Defines the ZydisStackWidth enum.

Enumeration Type Documentation

◆ ZydisElementType_

Defines the ZydisElementType enum.

Enumerator
ZYDIS_ELEMENT_TYPE_INVALID 
ZYDIS_ELEMENT_TYPE_STRUCT 

A struct type.

ZYDIS_ELEMENT_TYPE_UINT 

Unsigned integer value.

ZYDIS_ELEMENT_TYPE_INT 

Signed integer value.

ZYDIS_ELEMENT_TYPE_FLOAT16 

16-bit floating point value (half).

ZYDIS_ELEMENT_TYPE_FLOAT32 

32-bit floating point value (single).

ZYDIS_ELEMENT_TYPE_FLOAT64 

64-bit floating point value (double).

ZYDIS_ELEMENT_TYPE_FLOAT80 

80-bit floating point value (extended).

ZYDIS_ELEMENT_TYPE_LONGBCD 

Binary coded decimal value.

ZYDIS_ELEMENT_TYPE_CC 

A condition code (e.g.

used by CMPPD, VCMPPD, ...).

ZYDIS_ELEMENT_TYPE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_ELEMENT_TYPE_REQUIRED_BITS 

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

◆ ZydisInstructionEncoding_

Defines the ZydisInstructionEncoding enum.

Enumerator
ZYDIS_INSTRUCTION_ENCODING_LEGACY 

The instruction uses the legacy encoding.

ZYDIS_INSTRUCTION_ENCODING_3DNOW 

The instruction uses the AMD 3DNow-encoding.

ZYDIS_INSTRUCTION_ENCODING_XOP 

The instruction uses the AMD XOP-encoding.

ZYDIS_INSTRUCTION_ENCODING_VEX 

The instruction uses the VEX-encoding.

ZYDIS_INSTRUCTION_ENCODING_EVEX 

The instruction uses the EVEX-encoding.

ZYDIS_INSTRUCTION_ENCODING_MVEX 

The instruction uses the MVEX-encoding.

ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE 

Maximum value of this enum.

ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS 

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

◆ ZydisMachineMode_

Defines the ZydisMachineMode enum.

Enumerator
ZYDIS_MACHINE_MODE_LONG_64 

64 bit mode.

ZYDIS_MACHINE_MODE_LONG_COMPAT_32 

32 bit protected mode.

ZYDIS_MACHINE_MODE_LONG_COMPAT_16 

16 bit protected mode.

ZYDIS_MACHINE_MODE_LEGACY_32 

32 bit protected mode.

ZYDIS_MACHINE_MODE_LEGACY_16 

16 bit protected mode.

ZYDIS_MACHINE_MODE_REAL_16 

16 bit real mode.

ZYDIS_MACHINE_MODE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_MACHINE_MODE_REQUIRED_BITS 

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

◆ ZydisOpcodeMap_

Defines the ZydisOpcodeMap enum.

Enumerator
ZYDIS_OPCODE_MAP_DEFAULT 
ZYDIS_OPCODE_MAP_0F 
ZYDIS_OPCODE_MAP_0F38 
ZYDIS_OPCODE_MAP_0F3A 
ZYDIS_OPCODE_MAP_MAP4 
ZYDIS_OPCODE_MAP_MAP5 
ZYDIS_OPCODE_MAP_MAP6 
ZYDIS_OPCODE_MAP_MAP7 
ZYDIS_OPCODE_MAP_0F0F 
ZYDIS_OPCODE_MAP_XOP8 
ZYDIS_OPCODE_MAP_XOP9 
ZYDIS_OPCODE_MAP_XOPA 
ZYDIS_OPCODE_MAP_MAX_VALUE 

Maximum value of this enum.

ZYDIS_OPCODE_MAP_REQUIRED_BITS 

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

◆ ZydisOperandAction_

Defines the ZydisOperandAction enum.

Enumerator
ZYDIS_OPERAND_ACTION_READ 

The operand is read by the instruction.

ZYDIS_OPERAND_ACTION_WRITE 

The operand is written by the instruction (must write).

ZYDIS_OPERAND_ACTION_CONDREAD 

The operand is conditionally read by the instruction.

ZYDIS_OPERAND_ACTION_CONDWRITE 

The operand is conditionally written by the instruction (may write).

ZYDIS_OPERAND_ACTION_READWRITE 

The operand is read (must read) and written by the instruction (must write).

ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE 

The operand is conditionally read (may read) and conditionally written by the instruction (may write).

ZYDIS_OPERAND_ACTION_READ_CONDWRITE 

The operand is read (must read) and conditionally written by the instruction (may write).

ZYDIS_OPERAND_ACTION_CONDREAD_WRITE 

The operand is written (must write) and conditionally read by the instruction (may read).

ZYDIS_OPERAND_ACTION_MASK_READ 

Mask combining all reading access flags.

ZYDIS_OPERAND_ACTION_MASK_WRITE 

Mask combining all writing access flags.

ZYDIS_OPERAND_ACTION_REQUIRED_BITS 

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

◆ ZydisOperandEncoding_

Defines the ZydisOperandEncoding enum.

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

Maximum value of this enum.

ZYDIS_OPERAND_ENCODING_REQUIRED_BITS 

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

◆ ZydisOperandType_

Defines the ZydisOperandType enum.

Enumerator
ZYDIS_OPERAND_TYPE_UNUSED 

The operand is not used.

ZYDIS_OPERAND_TYPE_REGISTER 

The operand is a register operand.

ZYDIS_OPERAND_TYPE_MEMORY 

The operand is a memory operand.

ZYDIS_OPERAND_TYPE_POINTER 

The operand is a pointer operand with a segment:offset lvalue.

ZYDIS_OPERAND_TYPE_IMMEDIATE 

The operand is an immediate operand.

ZYDIS_OPERAND_TYPE_MAX_VALUE 

Maximum value of this enum.

ZYDIS_OPERAND_TYPE_REQUIRED_BITS 

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

◆ ZydisOperandVisibility_

Defines the ZydisOperandVisibility enum.

Enumerator
ZYDIS_OPERAND_VISIBILITY_INVALID 
ZYDIS_OPERAND_VISIBILITY_EXPLICIT 

The operand is explicitly encoded in the instruction.

ZYDIS_OPERAND_VISIBILITY_IMPLICIT 

The operand is part of the opcode, but listed as an operand.

ZYDIS_OPERAND_VISIBILITY_HIDDEN 

The operand is part of the opcode, and not typically listed as an operand.

ZYDIS_OPERAND_VISIBILITY_MAX_VALUE 

Maximum value of this enum.

ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS 

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

◆ ZydisStackWidth_

Defines the ZydisStackWidth enum.

Enumerator
ZYDIS_STACK_WIDTH_16 
ZYDIS_STACK_WIDTH_32 
ZYDIS_STACK_WIDTH_64 
ZYDIS_STACK_WIDTH_MAX_VALUE 

Maximum value of this enum.

ZYDIS_STACK_WIDTH_REQUIRED_BITS 

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

Function Documentation

◆ ZYAN_STATIC_ASSERT()

ZYAN_STATIC_ASSERT ( ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE - ZYDIS_OPERAND_TYPE_REGISTER = =2)