Zydis: ZydisDecoderContext_ Struct Reference

Zydis v4.1.1

Loading...
Searching...
No Matches
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.
ZyanU8 | eosz_index
| Contains the effective operand-size index.
ZyanU8 | easz_index
| Contains the effective address-size index.
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.
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.
struct { |
ZyanU8 tuple_type |
| The EVEX tuple-type. More...
ZyanU8 element_size |
| The EVEX element-size. More...
} | evex
| Internal EVEX-specific information.
struct { |
ZyanU8 functionality |
| The MVEX functionality. More...
} | mvex
| Internal MVEX-specific information.
ZyanU8 | cd8_scale
| The scale factor for EVEX/MVEX compressed 8-bit displacement values.

## 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]

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]

struct { ... } mvex

Internal MVEX-specific information.

## ◆ R

ZyanU8 R

## ◆ R2

ZyanU8 R2

## ◆ [struct]

struct { ... } reg_info

Information about encoded operand registers.

## ◆ tuple_type

ZyanU8 tuple_type

The EVEX tuple-type.

## ◆ V2

ZyanU8 V2

## ◆ [struct]

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:

- include/Zydis/DecoderTypes.h