Zydis  v2.0
Macros | Typedefs | Enumerations
SharedTypes.h File Reference

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

#include <Zycore/Types.h>

Go to the source code of this file.

Macros

#define ZYDIS_MAX_INSTRUCTION_LENGTH   15
 
#define ZYDIS_MAX_OPERAND_COUNT   10
 

Typedefs

typedef enum ZydisMachineMode_ ZydisMachineMode
 Defines the ZydisMachineMode enum.
 
typedef enum ZydisAddressWidth_ ZydisAddressWidth
 Defines the ZydisAddressWidth enum.
 
typedef enum ZydisElementType_ ZydisElementType
 Defines the ZydisElementType enum.
 
typedef ZyanU16 ZydisElementSize
 Defines the ZydisElementSize datatype.
 
typedef enum ZydisOperandType_ ZydisOperandType
 Defines the ZydisOperandType enum.
 
typedef enum ZydisOperandEncoding_ ZydisOperandEncoding
 Defines the ZydisOperandEncoding enum.
 
typedef enum ZydisOperandVisibility_ ZydisOperandVisibility
 Defines the ZydisOperandVisibility enum.
 
typedef enum ZydisOperandAction_ ZydisOperandAction
 Defines the ZydisOperandVisibility enum.
 
typedef enum ZydisInstructionEncoding_ ZydisInstructionEncoding
 Defines the ZydisInstructionEncoding enum.
 
typedef enum ZydisOpcodeMap_ ZydisOpcodeMap
 Defines the ZydisOpcodeMap enum.
 

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  ZydisAddressWidth_ {
  ZYDIS_ADDRESS_WIDTH_16, ZYDIS_ADDRESS_WIDTH_32, ZYDIS_ADDRESS_WIDTH_64, ZYDIS_ADDRESS_WIDTH_MAX_VALUE = ZYDIS_ADDRESS_WIDTH_64,
  ZYDIS_ADDRESS_WIDTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ADDRESS_WIDTH_MAX_VALUE)
}
 Defines the ZydisAddressWidth 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_MAX_VALUE = ZYDIS_ELEMENT_TYPE_LONGBCD, 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_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, ZYDIS_OPERAND_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ACTION_MAX_VALUE)
}
 Defines the ZydisOperandVisibility enum. More...
 
enum  ZydisInstructionEncoding_ {
  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, 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_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...
 

Detailed Description

Defines decoder/encoder-shared macros and types.

Enumeration Type Documentation

◆ ZydisAddressWidth_

Defines the ZydisAddressWidth enum.

Enumerator
ZYDIS_ADDRESS_WIDTH_MAX_VALUE 

Maximum value of this enum.

ZYDIS_ADDRESS_WIDTH_REQUIRED_BITS 

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

◆ ZydisElementType_

Defines the ZydisElementType enum.

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

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

ZYDIS_OPERAND_ACTION_REQUIRED_BITS 

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

◆ ZydisOperandEncoding_

Defines the ZydisOperandEncoding enum.

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