Zydis  v2.0.0-alpha2
SharedTypes.h File Reference

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

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   9
 

Typedefs

typedef uint8_t ZydisMachineMode
 Defines the ZydisMachineMode datatype. More...
 
typedef uint8_t ZydisAddressWidth
 Defines the ZydisAddressWidth datatype. More...
 
typedef uint8_t ZydisElementType
 Defines the ZydisElementType datatype. More...
 
typedef uint16_t ZydisElementSize
 Defines the ZydisElementSize datatype. More...
 
typedef uint8_t ZydisOperandType
 Defines the ZydisOperandType datatype. More...
 
typedef uint8_t ZydisOperandEncoding
 Defines the ZydisOperandEncoding datatype. More...
 
typedef uint8_t ZydisOperandVisibility
 Defines the ZydisOperandVisibility datatype. More...
 
typedef uint8_t ZydisOperandAction
 Defines the ZydisOperandAction datatype. More...
 
typedef uint8_t ZydisInstructionEncoding
 Defines the ZydisInstructionEncoding datatype. More...
 
typedef uint8_t ZydisOpcodeMap
 Defines the ZydisOpcodeMap map. More...
 

Enumerations

enum  ZydisMachineModes {
  ZYDIS_MACHINE_MODE_INVALID = 0 , ZYDIS_MACHINE_MODE_LONG_64 = 64 , ZYDIS_MACHINE_MODE_LONG_COMPAT_32 = 32 , ZYDIS_MACHINE_MODE_LONG_COMPAT_16 = 16 ,
  ZYDIS_MACHINE_MODE_LEGACY_32 = 32 , ZYDIS_MACHINE_MODE_LEGACY_16 = 16 , ZYDIS_MACHINE_MODE_REAL_16 = 16 , ZYDIS_MACHINE_MODE_MAX_VALUE = ZYDIS_MACHINE_MODE_LONG_64
}
 Values that represent machine modes. More...
 
enum  ZydisAddressWidths {
  ZYDIS_ADDRESS_WIDTH_INVALID = 0 , ZYDIS_ADDRESS_WIDTH_16 = 16 , ZYDIS_ADDRESS_WIDTH_32 = 32 , ZYDIS_ADDRESS_WIDTH_64 = 64 ,
  ZYDIS_ADDRESS_WIDTH_MAX_VALUE = ZYDIS_ADDRESS_WIDTH_64
}
 Values that represent address widths. More...
 
enum  ZydisElementTypes {
  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_MAX_VALUE = ZYDIS_ELEMENT_TYPE_LONGBCD
}
 Values that represent element-types. More...
 
enum  ZydisOperandTypes {
  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
}
 Values that represent operand-types. More...
 
enum  ZydisOperandEncodings {
  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
}
 Values that represent operand-encodings. More...
 
enum  ZydisOperandVisibilities {
  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
}
 Values that represent operand-visibilities. More...
 
enum  ZydisOperandActions {
  ZYDIS_OPERAND_ACTION_INVALID , ZYDIS_OPERAND_ACTION_READ , ZYDIS_OPERAND_ACTION_WRITE , ZYDIS_OPERAND_ACTION_READWRITE ,
  ZYDIS_OPERAND_ACTION_CONDREAD , ZYDIS_OPERAND_ACTION_CONDWRITE , ZYDIS_OPERAND_ACTION_READ_CONDWRITE , ZYDIS_OPERAND_ACTION_CONDREAD_WRITE ,
  ZYDIS_OPERAND_ACTION_MASK_WRITE , ZYDIS_OPERAND_ACTION_MASK_READ , ZYDIS_OPERAND_ACTION_MAX_VALUE = ZYDIS_OPERAND_ACTION_CONDREAD_WRITE
}
 Values that represent operand-actions. More...
 
enum  ZydisInstructionEncodings {
  ZYDIS_INSTRUCTION_ENCODING_INVALID , ZYDIS_INSTRUCTION_ENCODING_DEFAULT , 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
}
 Values that represent instruction-encodings. More...
 
enum  ZydisOpcodeMaps {
  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 ,
  ZYDIS_OPCODE_MAP_MAX_VALUE = ZYDIS_OPCODE_MAP_XOP9
}
 Values that represent opcode-maps. More...
 

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   9

Typedef Documentation

◆ ZydisAddressWidth

typedef uint8_t ZydisAddressWidth

Defines the ZydisAddressWidth datatype.

◆ ZydisElementSize

typedef uint16_t ZydisElementSize

Defines the ZydisElementSize datatype.

◆ ZydisElementType

typedef uint8_t ZydisElementType

Defines the ZydisElementType datatype.

◆ ZydisInstructionEncoding

typedef uint8_t ZydisInstructionEncoding

Defines the ZydisInstructionEncoding datatype.

◆ ZydisMachineMode

typedef uint8_t ZydisMachineMode

Defines the ZydisMachineMode datatype.

◆ ZydisOpcodeMap

typedef uint8_t ZydisOpcodeMap

Defines the ZydisOpcodeMap map.

◆ ZydisOperandAction

typedef uint8_t ZydisOperandAction

Defines the ZydisOperandAction datatype.

◆ ZydisOperandEncoding

typedef uint8_t ZydisOperandEncoding

Defines the ZydisOperandEncoding datatype.

◆ ZydisOperandType

typedef uint8_t ZydisOperandType

Defines the ZydisOperandType datatype.

◆ ZydisOperandVisibility

typedef uint8_t ZydisOperandVisibility

Defines the ZydisOperandVisibility datatype.

Enumeration Type Documentation

◆ ZydisAddressWidths

Values that represent address widths.

Enumerator
ZYDIS_ADDRESS_WIDTH_INVALID 
ZYDIS_ADDRESS_WIDTH_16 
ZYDIS_ADDRESS_WIDTH_32 
ZYDIS_ADDRESS_WIDTH_64 
ZYDIS_ADDRESS_WIDTH_MAX_VALUE 

◆ ZydisElementTypes

Values that represent element-types.

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

◆ ZydisInstructionEncodings

Values that represent instruction-encodings.

Enumerator
ZYDIS_INSTRUCTION_ENCODING_INVALID 
ZYDIS_INSTRUCTION_ENCODING_DEFAULT 

The instruction uses the default 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.

◆ ZydisMachineModes

Values that represent machine modes.

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

◆ ZydisOpcodeMaps

Values that represent opcode-maps.

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

◆ ZydisOperandActions

Values that represent operand-actions.

Enumerator
ZYDIS_OPERAND_ACTION_INVALID 
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_READWRITE 

The operand is read and 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_READ_CONDWRITE 

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

ZYDIS_OPERAND_ACTION_CONDREAD_WRITE 

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

ZYDIS_OPERAND_ACTION_MASK_WRITE 

Mask combining all writing access flags.

ZYDIS_OPERAND_ACTION_MASK_READ 

Mask combining all reading access flags.

ZYDIS_OPERAND_ACTION_MAX_VALUE 

Maximum value of this enum.

◆ ZydisOperandEncodings

Values that represent operand-encodings.

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 

◆ ZydisOperandTypes

Values that represent operand-types.

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.

◆ ZydisOperandVisibilities

Values that represent operand-visibilities.

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.