Zydis  v2.0.0-beta1
ZydisDecodedInstruction_ Struct Reference

Defines the ZydisDecodedInstruction struct. More...

#include <DecoderTypes.h>

Collaboration diagram for ZydisDecodedInstruction_:

Data Fields

ZydisMachineMode machineMode
 The machine mode used to decode this instruction. More...
 
ZydisMnemonic mnemonic
 The instruction-mnemonic. More...
 
ZydisU8 length
 The length of the decoded instruction. More...
 
ZydisU8 data [ZYDIS_MAX_INSTRUCTION_LENGTH]
 The raw bytes of the decoded instruction. More...
 
ZydisInstructionEncoding encoding
 The instruction-encoding (default, 3DNow, VEX, EVEX, XOP). More...
 
ZydisOpcodeMap opcodeMap
 The opcode-map. More...
 
ZydisU8 opcode
 The instruction-opcode. More...
 
ZydisU8 stackWidth
 The stack width. More...
 
ZydisU8 operandWidth
 The effective operand width. More...
 
ZydisU8 addressWidth
 The effective address width. More...
 
ZydisU8 operandCount
 The number of instruction-operands. More...
 
ZydisDecodedOperand operands [ZYDIS_MAX_OPERAND_COUNT]
 Detailed info for all instruction operands. More...
 
ZydisInstructionAttributes attributes
 Instruction attributes. More...
 
ZydisU64 instrAddress
 The instruction address points at the current instruction (based on the initial instruction pointer). More...
 
struct {
   ZydisCPUFlagAction   action
 The CPU-flag action. More...
 
accessedFlags [ZYDIS_CPUFLAG_MAX_VALUE+1]
 Information about accessed CPU flags. More...
 
struct {
   ZydisVectorLength   vectorLength
 The AVX vector-length. More...
 
   struct {
      ZydisMaskMode   mode
 The masking mode. More...
 
      ZydisRegister   reg
 The mask register. More...
 
      ZydisBool   isControlMask
 Signals, if the mask-register is used as a control mask. More...
 
   }   mask
 Info about the embedded writemask-register. More...
 
   struct {
      ZydisBool   isStatic
 Signals, if the broadcast is a static broadcast. More...
 
      ZydisBroadcastMode   mode
 The AVX broadcast-mode. More...
 
   }   broadcast
 Contains info about the AVX broadcast. More...
 
   struct {
      ZydisRoundingMode   mode
 The AVX rounding-mode. More...
 
   }   rounding
 Contains info about the AVX rounding. More...
 
   struct {
      ZydisSwizzleMode   mode
 The AVX register-swizzle mode (MVEX only). More...
 
   }   swizzle
 Contains info about the AVX register-swizzle (MVEX only). More...
 
   struct {
      ZydisConversionMode   mode
 The AVX data-conversion mode (MVEX only). More...
 
   }   conversion
 Contains info about the AVX data-conversion (MVEX only). More...
 
   ZydisBool   hasSAE
 Signals, if the sae functionality is enabled for the instruction. More...
 
   ZydisBool   hasEvictionHint
 Signals, if the instruction has a memory eviction-hint (MVEX only). More...
 
avx
 Extended info for AVX instructions. More...
 
struct {
   ZydisInstructionCategory   category
 The instruction category. More...
 
   ZydisISASet   isaSet
 The ISA-set. More...
 
   ZydisISAExt   isaExt
 The ISA-set extension. More...
 
   ZydisExceptionClass   exceptionClass
 The exception class. More...
 
meta
 Meta info. More...
 
struct {
   struct {
      ZydisU8   data [ZYDIS_MAX_INSTRUCTION_LENGTH - 1]
 
      ZydisU8   count
 
      ZydisU8   hasF0
 
      ZydisU8   hasF3
 
      ZydisU8   hasF2
 
      ZydisU8   has2E
 
      ZydisU8   has36
 
      ZydisU8   has3E
 
      ZydisU8   has26
 
      ZydisU8   has64
 
      ZydisU8   has65
 
      ZydisU8   has66
 
      ZydisU8   has67
 
   }   prefixes
 Detailed info about the legacy prefixes. More...
 
   struct {
      ZydisBool   isDecoded
 TRUE if the prefix got already decoded. More...
 
      ZydisU8   data [1]
 The raw bytes of the prefix. More...
 
      ZydisU8   W
 64-bit operand-size promotion. More...
 
      ZydisU8   R
 Extension of the ModRM.reg field. More...
 
      ZydisU8   X
 Extension of the SIB.index field. More...
 
      ZydisU8   B
 Extension of the ModRM.rm, SIB.base, or opcode.reg field. More...
 
   }   rex
 Detailed info about the REX-prefix. More...
 
   struct {
      ZydisBool   isDecoded
 TRUE if the prefix got already decoded. More...
 
      ZydisU8   data [3]
 The raw bytes of the prefix. More...
 
      ZydisU8   R
 Extension of the ModRM.reg field (inverted). More...
 
      ZydisU8   X
 Extension of the SIB.index field (inverted). More...
 
      ZydisU8   B
 Extension of the ModRM.rm, SIB.base, or opcode.reg field (inverted). More...
 
      ZydisU8   m_mmmm
 Opcode-map specifier. More...
 
      ZydisU8   W
 64-bit operand-size promotion or opcode-extension. More...
 
      ZydisU8   vvvv
 NDS register specifier (inverted). More...
 
      ZydisU8   L
 Vector-length specifier. More...
 
      ZydisU8   pp
 Compressed legacy prefix. More...
 
   }   xop
 Detailed info about the XOP-prefix. More...
 
   struct {
      ZydisBool   isDecoded
 TRUE if the prefix got already decoded. More...
 
      ZydisU8   data [3]
 The raw bytes of the prefix. More...
 
      ZydisU8   R
 Extension of the ModRM.reg field (inverted). More...
 
      ZydisU8   X
 Extension of the SIB.index field (inverted). More...
 
      ZydisU8   B
 Extension of the ModRM.rm, SIB.base, or opcode.reg field (inverted). More...
 
      ZydisU8   m_mmmm
 Opcode-map specifier. More...
 
      ZydisU8   W
 64-bit operand-size promotion or opcode-extension. More...
 
      ZydisU8   vvvv
 NDS register specifier (inverted). More...
 
      ZydisU8   L
 Vector-length specifier. More...
 
      ZydisU8   pp
 Compressed legacy prefix. More...
 
   }   vex
 Detailed info about the VEX-prefix. More...
 
   struct {
      ZydisBool   isDecoded
 TRUE if the prefix got already decoded. More...
 
      ZydisU8   data [4]
 The raw bytes of the prefix. More...
 
      ZydisU8   R
 Extension of the ModRM.reg field (inverted). More...
 
      ZydisU8   X
 Extension of the SIB.index/vidx field (inverted). More...
 
      ZydisU8   B
 Extension of the ModRM.rm or SIB.base field (inverted). More...
 
      ZydisU8   R2
 High-16 register specifier modifier (inverted). More...
 
      ZydisU8   mm
 Opcode-map specifier. More...
 
      ZydisU8   W
 64-bit operand-size promotion or opcode-extension. More...
 
      ZydisU8   vvvv
 NDS register specifier (inverted). More...
 
      ZydisU8   pp
 Compressed legacy prefix. More...
 
      ZydisU8   z
 Zeroing/Merging. More...
 
      ZydisU8   L2
 Vector-length specifier or rounding-control (most significant bit). More...
 
      ZydisU8   L
 Vector-length specifier or rounding-control (least significant bit). More...
 
      ZydisU8   b
 Broadcast/RC/SAE Context. More...
 
      ZydisU8   V2
 High-16 NDS/VIDX register specifier. More...
 
      ZydisU8   aaa
 Embedded opmask register specifier. More...
 
   }   evex
 Detailed info about the EVEX-prefix. More...
 
   struct {
      ZydisBool   isDecoded
 TRUE if the prefix got already decoded. More...
 
      ZydisU8   data [4]
 The raw bytes of the prefix. More...
 
      ZydisU8   R
 Extension of the ModRM.reg field (inverted). More...
 
      ZydisU8   X
 Extension of the SIB.index/vidx field (inverted). More...
 
      ZydisU8   B
 Extension of the ModRM.rm or SIB.base field (inverted). More...
 
      ZydisU8   R2
 High-16 register specifier modifier (inverted). More...
 
      ZydisU8   mmmm
 Opcode-map specifier. More...
 
      ZydisU8   W
 64-bit operand-size promotion or opcode-extension. More...
 
      ZydisU8   vvvv
 NDS register specifier (inverted). More...
 
      ZydisU8   pp
 Compressed legacy prefix. More...
 
      ZydisU8   E
 Non-temporal/eviction hint. More...
 
      ZydisU8   SSS
 Swizzle/broadcast/up-convert/down-convert/static-rounding controls. More...
 
      ZydisU8   V2
 High-16 NDS/VIDX register specifier. More...
 
      ZydisU8   kkk
 Embedded opmask register specifier. More...
 
   }   mvex
 Detailed info about the MVEX-prefix. More...
 
   struct {
      ZydisBool   isDecoded
 
      ZydisU8   data [1]
 
      ZydisU8   mod
 
      ZydisU8   reg
 
      ZydisU8   rm
 
   }   modrm
 Detailed info about the ModRM-byte. More...
 
   struct {
      ZydisBool   isDecoded
 
      ZydisU8   data [1]
 
      ZydisU8   scale
 
      ZydisU8   index
 
      ZydisU8   base
 
   }   sib
 Detailed info about the SIB-byte. More...
 
   struct {
      ZydisI64   value
 The displacement value. More...
 
      ZydisU8   size
 The physical displacement size, in bits. More...
 
      ZydisU8   offset
 The offset of the displacement data, relative to the beginning of the instruction, in bytes. More...
 
   }   disp
 Detailed info about displacement-bytes. More...
 
   struct {
      ZydisBool   isSigned
 Signals, if the immediate value is signed. More...
 
      ZydisBool   isRelative
 Signals, if the immediate value contains a relative offset. More...
 
      union {
         ZydisU64   u
 
         ZydisI64   s
 
      }   value
 The immediate value. More...
 
      ZydisU8   size
 The physical immediate size, in bits. More...
 
      ZydisU8   offset
 The offset of the immediate data, relative to the beginning of the instruction, in bytes. More...
 
   }   imm [2]
 Detailed info about immediate-bytes. More...
 
raw
 Extended info about different instruction-parts like ModRM, SIB or encoding-prefixes. More...
 

Detailed Description

Defines the ZydisDecodedInstruction struct.

Field Documentation

◆ aaa

ZydisU8 aaa

Embedded opmask register specifier.

◆ 

struct { ... } accessedFlags[ZYDIS_CPUFLAG_MAX_VALUE + 1]

Information about accessed CPU flags.

◆ action

The CPU-flag action.

You can call ZydisGetAccessedFlagsByAction to get a mask with all flags matching a specific action.

◆ addressWidth

ZydisU8 addressWidth

The effective address width.

◆ attributes

Instruction attributes.

◆ 

struct { ... } avx

Extended info for AVX instructions.

◆ B

Extension of the ModRM.rm, SIB.base, or opcode.reg field.

Extension of the ModRM.rm or SIB.base field (inverted).

Extension of the ModRM.rm, SIB.base, or opcode.reg field (inverted).

◆ b

Broadcast/RC/SAE Context.

◆ base

ZydisU8 base

◆ 

struct { ... } broadcast

Contains info about the AVX broadcast.

◆ category

The instruction category.

◆ 

struct { ... } conversion

Contains info about the AVX data-conversion (MVEX only).

◆ count

ZydisU8 count

◆ data

ZydisU8 data[1]

The raw bytes of the decoded instruction.

The raw bytes of the prefix.

◆ 

struct { ... } disp

Detailed info about displacement-bytes.

◆ E

Non-temporal/eviction hint.

◆ encoding

The instruction-encoding (default, 3DNow, VEX, EVEX, XOP).

◆ 

struct { ... } evex

Detailed info about the EVEX-prefix.

◆ exceptionClass

ZydisExceptionClass exceptionClass

The exception class.

◆ has26

ZydisU8 has26

◆ has2E

ZydisU8 has2E

◆ has36

ZydisU8 has36

◆ has3E

ZydisU8 has3E

◆ has64

ZydisU8 has64

◆ has65

ZydisU8 has65

◆ has66

ZydisU8 has66

◆ has67

ZydisU8 has67

◆ hasEvictionHint

ZydisBool hasEvictionHint

Signals, if the instruction has a memory eviction-hint (MVEX only).

◆ hasF0

ZydisU8 hasF0

◆ hasF2

ZydisU8 hasF2

◆ hasF3

ZydisU8 hasF3

◆ hasSAE

ZydisBool hasSAE

Signals, if the sae functionality is enabled for the instruction.

◆ 

struct { ... } imm[2]

Detailed info about immediate-bytes.

◆ index

ZydisU8 index

◆ instrAddress

ZydisU64 instrAddress

The instruction address points at the current instruction (based on the initial instruction pointer).

◆ isaExt

ZydisISAExt isaExt

The ISA-set extension.

◆ isaSet

ZydisISASet isaSet

The ISA-set.

◆ isControlMask

ZydisBool isControlMask

Signals, if the mask-register is used as a control mask.

◆ isDecoded

ZydisBool isDecoded

TRUE if the prefix got already decoded.

◆ isRelative

ZydisBool isRelative

Signals, if the immediate value contains a relative offset.

You can use ZydisCalcAbsoluteAddress to determine the absolute address value.

◆ isSigned

ZydisBool isSigned

Signals, if the immediate value is signed.

◆ isStatic

ZydisBool isStatic

Signals, if the broadcast is a static broadcast.

This is the case for instructions with inbuild broadcast functionality, that is always active and not be controlled by a flag in the XOP/VEX/EVEX/MVEX-prefix.

◆ kkk

ZydisU8 kkk

Embedded opmask register specifier.

◆ L

Vector-length specifier.

Vector-length specifier or rounding-control (least significant bit).

◆ L2

ZydisU8 L2

Vector-length specifier or rounding-control (most significant bit).

◆ length

ZydisU8 length

The length of the decoded instruction.

◆ m_mmmm

ZydisU8 m_mmmm

Opcode-map specifier.

◆ machineMode

ZydisMachineMode machineMode

The machine mode used to decode this instruction.

◆ 

struct { ... } mask

Info about the embedded writemask-register.

◆ 

struct { ... } meta

Meta info.

◆ mm

ZydisU8 mm

Opcode-map specifier.

◆ mmmm

ZydisU8 mmmm

Opcode-map specifier.

◆ mnemonic

ZydisMnemonic mnemonic

The instruction-mnemonic.

◆ mod

ZydisU8 mod

◆ mode [1/5]

The masking mode.

◆ mode [2/5]

The AVX broadcast-mode.

◆ mode [3/5]

The AVX rounding-mode.

◆ mode [4/5]

The AVX register-swizzle mode (MVEX only).

◆ mode [5/5]

The AVX data-conversion mode (MVEX only).

◆ 

struct { ... } modrm

Detailed info about the ModRM-byte.

◆ 

struct { ... } mvex

Detailed info about the MVEX-prefix.

◆ offset

ZydisU8 offset

The offset of the displacement data, relative to the beginning of the instruction, in bytes.

The offset of the immediate data, relative to the beginning of the instruction, in bytes.

◆ opcode

ZydisU8 opcode

The instruction-opcode.

◆ opcodeMap

ZydisOpcodeMap opcodeMap

The opcode-map.

◆ operandCount

ZydisU8 operandCount

The number of instruction-operands.

◆ operands

Detailed info for all instruction operands.

◆ operandWidth

ZydisU8 operandWidth

The effective operand width.

◆ pp

ZydisU8 pp

Compressed legacy prefix.

◆ 

struct { ... } prefixes

Detailed info about the legacy prefixes.

◆ R

Extension of the ModRM.reg field.

Extension of the ModRM.reg field (inverted).

◆ R2

ZydisU8 R2

High-16 register specifier modifier (inverted).

◆ 

struct { ... } raw

Extended info about different instruction-parts like ModRM, SIB or encoding-prefixes.

◆ reg [1/2]

The mask register.

◆ reg [2/2]

ZydisU8 reg

◆ 

struct { ... } rex

Detailed info about the REX-prefix.

◆ rm

ZydisU8 rm

◆ 

struct { ... } rounding

Contains info about the AVX rounding.

◆ s

◆ scale

ZydisU8 scale

◆ 

struct { ... } sib

Detailed info about the SIB-byte.

◆ size

ZydisU8 size

The physical displacement size, in bits.

The physical immediate size, in bits.

◆ SSS

ZydisU8 SSS

Swizzle/broadcast/up-convert/down-convert/static-rounding controls.

◆ stackWidth

ZydisU8 stackWidth

The stack width.

◆ 

struct { ... } swizzle

Contains info about the AVX register-swizzle (MVEX only).

◆ u

◆ V2

ZydisU8 V2

High-16 NDS/VIDX register specifier.

◆ value [1/2]

ZydisI64 value

The displacement value.

◆  [2/2]

union { ... } value

The immediate value.

◆ vectorLength

ZydisVectorLength vectorLength

The AVX vector-length.

◆ 

struct { ... } vex

Detailed info about the VEX-prefix.

◆ vvvv

ZydisU8 vvvv

NDS register specifier (inverted).

◆ W

64-bit operand-size promotion.

64-bit operand-size promotion or opcode-extension.

◆ X

Extension of the SIB.index field.

Extension of the SIB.index/vidx field (inverted).

Extension of the SIB.index field (inverted).

◆ 

struct { ... } xop

Detailed info about the XOP-prefix.

◆ z

Zeroing/Merging.


The documentation for this struct was generated from the following file: