32 #ifndef ZYDIS_DECODER_H
33 #define ZYDIS_DECODER_H
35 #include <Zycore/Types.h>
36 #include <Zycore/Defines.h>
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
struct ZydisDecoder_ ZydisDecoder
Defines the ZydisDecoder struct.
ZydisDecoderMode_
Defines the ZydisDecoderMode enum.
Definition: Decoder.h:56
@ ZYDIS_DECODER_MODE_WBNOINVD
Enables the WBNOINVD mode.
Definition: Decoder.h:130
@ ZYDIS_DECODER_MODE_KNC
Enables KNC compatibility-mode.
Definition: Decoder.h:89
@ ZYDIS_DECODER_MODE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition: Decoder.h:164
@ ZYDIS_DECODER_MODE_IPREFETCH
Enables the IPREFETCH mode.
Definition: Decoder.h:146
@ ZYDIS_DECODER_MODE_LZCNT
Enables the LZCNT mode.
Definition: Decoder.h:113
@ ZYDIS_DECODER_MODE_MINIMAL
Enables minimal instruction decoding without semantic analysis.
Definition: Decoder.h:69
@ ZYDIS_DECODER_MODE_TZCNT
Enables the TZCNT mode.
Definition: Decoder.h:121
@ ZYDIS_DECODER_MODE_MAX_VALUE
Maximum value of this enum.
Definition: Decoder.h:160
@ ZYDIS_DECODER_MODE_UD0_COMPAT
Enables the UD0 compatibility mode.
Definition: Decoder.h:155
@ ZYDIS_DECODER_MODE_AMD_BRANCHES
Enables the AMD-branch mode.
Definition: Decoder.h:80
@ ZYDIS_DECODER_MODE_MPX
Enables the MPX mode.
Definition: Decoder.h:97
@ ZYDIS_DECODER_MODE_CLDEMOTE
Enables the CLDEMOTE mode.
Definition: Decoder.h:138
@ ZYDIS_DECODER_MODE_CET
Enables the CET mode.
Definition: Decoder.h:105
enum ZydisDecoderMode_ ZydisDecoderMode
Defines the ZydisDecoderMode enum.
#define ZYDIS_EXPORT
Symbol is exported in shared library builds.
Definition: Defines.h:67
#define ZYDIS_MAX_OPERAND_COUNT
Definition: SharedTypes.h:50
enum ZydisStackWidth_ ZydisStackWidth
Defines the ZydisStackWidth enum.
enum ZydisMachineMode_ ZydisMachineMode
Defines the ZydisMachineMode enum.
Status code definitions and check macros.
ZYDIS_EXPORT ZyanStatus ZydisDecoderDecodeFull(const ZydisDecoder *decoder, const void *buffer, ZyanUSize length, ZydisDecodedInstruction *instruction, ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT])
Decodes the instruction in the given input buffer and returns all details (e.g.
ZYDIS_EXPORT ZyanStatus ZydisDecoderDecodeInstruction(const ZydisDecoder *decoder, ZydisDecoderContext *context, const void *buffer, ZyanUSize length, ZydisDecodedInstruction *instruction)
Decodes the instruction in the given input buffer.
ZYDIS_EXPORT ZyanStatus ZydisDecoderInit(ZydisDecoder *decoder, ZydisMachineMode machine_mode, ZydisStackWidth stack_width)
Initializes the given ZydisDecoder instance.
ZYDIS_EXPORT ZyanStatus ZydisDecoderEnableMode(ZydisDecoder *decoder, ZydisDecoderMode mode, ZyanBool enabled)
Enables or disables the specified decoder-mode.
ZYDIS_EXPORT ZyanStatus ZydisDecoderDecodeOperands(const ZydisDecoder *decoder, const ZydisDecoderContext *context, const ZydisDecodedInstruction *instruction, ZydisDecodedOperand *operands, ZyanU8 operand_count)
Decodes the instruction operands.
Information about a decoded instruction.
Definition: DecoderTypes.h:1252
Defines the ZydisDecodedOperand struct.
Definition: DecoderTypes.h:214
The decoder context is used to preserve some internal state between subsequent decode operations for ...
Definition: DecoderTypes.h:1353
Defines the ZydisDecoder struct.
Definition: Decoder.h:178
ZydisStackWidth stack_width
The stack width.
Definition: Decoder.h:186
ZydisMachineMode machine_mode
The machine mode.
Definition: Decoder.h:182
ZyanU32 decoder_mode
The decoder mode bitmap.
Definition: Decoder.h:190