Zydis  v4.1.0
ZydisDecoderContext_ Struct Reference

The decoder context is used to preserve some internal state between subsequent decode operations for THE SAME instruction. More...

#include <DecoderTypes.h>

Data Fields

const void * definition
 A pointer to the internal instruction definition. More...
 
ZyanU8 eosz_index
 Contains the effective operand-size index. More...
 
ZyanU8 easz_index
 Contains the effective address-size index. More...
 
struct {
   ZyanU8   W
 
   ZyanU8   R
 
   ZyanU8   X
 
   ZyanU8   B
 
   ZyanU8   L
 
   ZyanU8   LL
 
   ZyanU8   R2
 
   ZyanU8   V2
 
   ZyanU8   vvvv
 
   ZyanU8   mask
 
vector_unified
 Contains some cached REX/XOP/VEX/EVEX/MVEX values to provide uniform access. More...
 
struct {
   ZyanBool   is_mod_reg
 Signals if the modrm.mod == 3 or reg form is forced for the instruction. More...
 
   ZyanU8   id_reg
 The final register id for the reg encoded register. More...
 
   ZyanU8   id_rm
 The final register id for the rm encoded register. More...
 
   ZyanU8   id_ndsndd
 The final register id for the ndsndd (.vvvv) encoded register. More...
 
   ZyanU8   id_base
 The final register id for the base register. More...
 
   ZyanU8   id_index
 The final register id for the index register. More...
 
reg_info
 Information about encoded operand registers. More...
 
struct {
   ZyanU8   tuple_type
 The EVEX tuple-type. More...
 
   ZyanU8   element_size
 The EVEX element-size. More...
 
evex
 Internal EVEX-specific information. More...
 
struct {
   ZyanU8   functionality
 The MVEX functionality. More...
 
mvex
 Internal MVEX-specific information. More...
 
ZyanU8 cd8_scale
 The scale factor for EVEX/MVEX compressed 8-bit displacement values. More...
 

Detailed Description

The decoder context is used to preserve some internal state between subsequent decode operations for THE SAME instruction.

The context is initialized by ZydisDecoderDecodeInstruction and required by e.g. ZydisDecoderDecodeOperands.

All fields in this struct should be considered as "private". Any changes may lead to unexpected behavior.

This struct is neither ABI nor API stable!

Field Documentation

◆ B

ZyanU8 B

◆ cd8_scale

ZyanU8 cd8_scale

The scale factor for EVEX/MVEX compressed 8-bit displacement values.

◆ definition

const void* definition

A pointer to the internal instruction definition.

◆ easz_index

ZyanU8 easz_index

Contains the effective address-size index.

0 = 16 bit, 1 = 32 bit, 2 = 64 bit

◆ element_size

ZyanU8 element_size

The EVEX element-size.

◆ eosz_index

ZyanU8 eosz_index

Contains the effective operand-size index.

0 = 16 bit, 1 = 32 bit, 2 = 64 bit

◆ 

struct { ... } evex

Internal EVEX-specific information.

◆ functionality

ZyanU8 functionality

The MVEX functionality.

◆ id_base

ZyanU8 id_base

The final register id for the base register.

This value is only set, if a memory operand is encoded in modrm.rm.

◆ id_index

ZyanU8 id_index

The final register id for the index register.

This value is only set, if a memory operand is encoded in modrm.rm and the SIB byte is present.

◆ id_ndsndd

ZyanU8 id_ndsndd

The final register id for the ndsndd (.vvvv) encoded register.

◆ id_reg

ZyanU8 id_reg

The final register id for the reg encoded register.

◆ id_rm

ZyanU8 id_rm

The final register id for the rm encoded register.

This value is only set, if a register is encoded in modrm.rm.

◆ is_mod_reg

ZyanBool is_mod_reg

Signals if the modrm.mod == 3 or reg form is forced for the instruction.

◆ L

ZyanU8 L

◆ LL

ZyanU8 LL

◆ mask

ZyanU8 mask

◆ 

struct { ... } mvex

Internal MVEX-specific information.

◆ R

ZyanU8 R

◆ R2

ZyanU8 R2

◆ 

struct { ... } reg_info

Information about encoded operand registers.

◆ tuple_type

ZyanU8 tuple_type

The EVEX tuple-type.

◆ V2

ZyanU8 V2

◆ 

struct { ... } vector_unified

Contains some cached REX/XOP/VEX/EVEX/MVEX values to provide uniform access.

◆ vvvv

ZyanU8 vvvv

◆ W

ZyanU8 W

◆ X

ZyanU8 X

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