Zydis: ZydisDecoderContext_ Struct Reference

Zydis v4.0.0

Loading...
Searching...
No Matches
Data Fields
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.
ZyanU8 id_reg
| The final register id for the `reg` encoded register.
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.
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.
ZyanU8 element_size
| The EVEX element-size.
} | evex
| Internal EVEX-specific information.
struct {
ZyanU8 functionality
| The MVEX functionality.
} | 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

## ◆ easz_index

ZyanU8 easz_index

Contains the effective address-size index.

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

## ◆ eosz_index

ZyanU8 eosz_index

Contains the effective operand-size index.

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

## ◆ 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_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`.

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

- include/Zydis/DecoderTypes.h