Zydis  v2.0.0
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   10
 

Typedefs

typedef ZydisU8 ZydisMachineMode
 Defines the ZydisMachineMode datatype.
 
typedef ZydisU8 ZydisAddressWidth
 Defines the ZydisAddressWidth datatype.
 
typedef ZydisU8 ZydisElementType
 Defines the ZydisElementType datatype.
 
typedef ZydisU16 ZydisElementSize
 Defines the ZydisElementSize datatype.
 
typedef ZydisU8 ZydisOperandType
 Defines the ZydisOperandType datatype.
 
typedef ZydisU8 ZydisOperandEncoding
 Defines the ZydisOperandEncoding datatype.
 
typedef ZydisU8 ZydisOperandVisibility
 Defines the ZydisOperandVisibility datatype.
 
typedef ZydisU8 ZydisOperandAction
 Defines the ZydisOperandAction datatype.
 
typedef ZydisU8 ZydisInstructionEncoding
 Defines the ZydisInstructionEncoding datatype.
 
typedef ZydisU8 ZydisOpcodeMap
 Defines the ZydisOpcodeMap map.
 

Enumerations

enum  ZydisMachineModes {
  ZYDIS_MACHINE_MODE_INVALID , 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
}
 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_XOPA
}
 Values that represent opcode-maps. More...
 

Detailed Description

Defines decoder/encoder-shared macros and types.

Enumeration Type Documentation

◆ ZydisAddressWidths

Values that represent address widths.

Enumerator
ZYDIS_ADDRESS_WIDTH_MAX_VALUE 

Maximum value of this enum.

◆ ZydisElementTypes

Values that represent element-types.

Enumerator
ZYDIS_ELEMENT_TYPE_MAX_VALUE 

Maximum value of this enum.

◆ ZydisInstructionEncodings

Values that represent instruction-encodings.

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

Maximum value of this enum.

◆ ZydisOperandActions

Values that represent operand-actions.

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

Maximum value of this enum.

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