- Main Page
- Modules
- Data Structures
- Files

- Search for |

- File List
- Globals

# xed-encoder-hl.h File Reference

`#include "xed-types.h"`
`#include "xed-reg-enum.h"`
`#include "xed-state.h"`
`#include "xed-iclass-enum.h"`
`#include "xed-portability.h"`
`#include "xed-encode.h"`

Go to the source code of this file.

## Data Structures

struct | xed_enc_displacement_t
struct | xed_encoder_instruction_t
struct | xed_encoder_operand_t
union | xed_encoder_prefixes_t
struct | xed_memop_t

## Instruction Properties and prefixes

static XED_INLINE void | xed_addr (xed_encoder_instruction_t *x, xed_uint_t width)
| This is to specify effective address size different than the default.
XED_DLL_EXPORT xed_bool_t | xed_convert_to_encoder_request (xed_encoder_request_t *out, xed_encoder_instruction_t *in)
| convert a xed_encoder_instruction_t to a xed_encoder_request_t for encoding
static XED_INLINE void | xed_lock (xed_encoder_instruction_t *x)
static XED_INLINE void | xed_rep (xed_encoder_instruction_t *x)
static XED_INLINE void | xed_repne (xed_encoder_instruction_t *x)

## Memory Displacement

static XED_INLINE xed_enc_displacement_t | xed_disp (xed_uint64_t displacement, xed_uint32_t displacement_width)
| a memory displacement (not for branches)

## Register and Immmediate Operands

static XED_INLINE xed_encoder_operand_t | xed_imm0 (xed_uint64_t v, xed_uint_t width)
| a first immediate operand (known as IMM0)
static XED_INLINE xed_encoder_operand_t | xed_imm1 (xed_uint8_t v)
| an second immediate operand (known as IMM1)
static XED_INLINE xed_encoder_operand_t | xed_other (xed_operand_enum_t operand_name, xed_int32_t value)
| an operand storage field name and value
static XED_INLINE xed_encoder_operand_t | xed_reg (xed_reg_enum_t reg)
| a register operand
static XED_INLINE xed_encoder_operand_t | xed_simm0 (xed_int32_t v, xed_uint_t width)
| an 32b signed immediate operand

## Creating instructions from operands

static XED_INLINE void | xed_inst (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_uint_t number_of_operands, const xed_encoder_operand_t *operand_array)
| instruction with an array of operands.
static XED_INLINE void | xed_inst0 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width)
| instruction with no operands
static XED_INLINE void | xed_inst1 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_encoder_operand_t op0)
| instruction with one operand
static XED_INLINE void | xed_inst2 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_encoder_operand_t op0, xed_encoder_operand_t op1)
| instruction with two operands
static XED_INLINE void | xed_inst3 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_encoder_operand_t op0, xed_encoder_operand_t op1, xed_encoder_operand_t op2)
| instruction with three operands
static XED_INLINE void | xed_inst4 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_encoder_operand_t op0, xed_encoder_operand_t op1, xed_encoder_operand_t op2, xed_encoder_operand_t op3)
| instruction with four operands
static XED_INLINE void | xed_inst5 (xed_encoder_instruction_t *inst, xed_state_t mode, xed_iclass_enum_t iclass, xed_uint_t effective_operand_width, xed_encoder_operand_t op0, xed_encoder_operand_t op1, xed_encoder_operand_t op2, xed_encoder_operand_t op3, xed_encoder_operand_t op4)
| instruction with five operands

## Memory and Segment-releated Operands

static XED_INLINE xed_encoder_operand_t | xed_mem_b (xed_reg_enum_t base, xed_uint_t width)
| memory operand - base only
static XED_INLINE xed_encoder_operand_t | xed_mem_bd (xed_reg_enum_t base, xed_enc_displacement_t disp, xed_uint_t width)
| memory operand - base and displacement only
static XED_INLINE xed_encoder_operand_t | xed_mem_bisd (xed_reg_enum_t base, xed_reg_enum_t index, xed_uint_t scale, xed_enc_displacement_t disp, xed_uint_t width)
| memory operand - base, index, scale, displacement
static XED_INLINE xed_encoder_operand_t | xed_mem_gb (xed_reg_enum_t seg, xed_reg_enum_t base, xed_uint_t width)
| memory operand - segment and base only
static XED_INLINE xed_encoder_operand_t | xed_mem_gbd (xed_reg_enum_t seg, xed_reg_enum_t base, xed_enc_displacement_t disp, xed_uint_t width)
| memory operand - segment, base and displacement only
static XED_INLINE xed_encoder_operand_t | xed_mem_gbisd (xed_reg_enum_t seg, xed_reg_enum_t base, xed_reg_enum_t index, xed_uint_t scale, xed_enc_displacement_t disp, xed_uint_t width)
| memory operand - segment, base, index, scale, and displacement
static XED_INLINE xed_encoder_operand_t | xed_mem_gd (xed_reg_enum_t seg, xed_enc_displacement_t disp, xed_uint_t width)
| memory operand - segment and displacement only
static XED_INLINE xed_encoder_operand_t | xed_seg0 (xed_reg_enum_t seg0)
| seg reg override for implicit suppressed memory ops
static XED_INLINE xed_encoder_operand_t | xed_seg1 (xed_reg_enum_t seg1)
| seg reg override for implicit suppressed memory ops

## Pointer Displacement

static XED_INLINE xed_encoder_operand_t | xed_ptr (xed_int32_t brdisp, xed_uint_t width)
| a relative displacement for a PTR operand -- the subsequent imm0 holds the 16b selector

## Branch Displacement

static XED_INLINE xed_encoder_operand_t | xed_relbr (xed_int32_t brdisp, xed_uint_t width)
| a relative branch displacement operand

## Defines

#define | XED_ENCODER_OPERANDS_MAX 5

## Enumerations

enum | xed_encoder_operand_type_t { XED_ENCODER_OPERAND_TYPE_INVALID, XED_ENCODER_OPERAND_TYPE_BRDISP, XED_ENCODER_OPERAND_TYPE_REG, XED_ENCODER_OPERAND_TYPE_IMM0,
XED_ENCODER_OPERAND_TYPE_SIMM0,
XED_ENCODER_OPERAND_TYPE_IMM1,
XED_ENCODER_OPERAND_TYPE_MEM,
XED_ENCODER_OPERAND_TYPE_PTR,
XED_ENCODER_OPERAND_TYPE_SEG0,
XED_ENCODER_OPERAND_TYPE_SEG1,
XED_ENCODER_OPERAND_TYPE_OTHER
}

## Define Documentation

#define XED_ENCODER_OPERANDS_MAX 5

| Definition at line 353 of file xed-encoder-hl.h.

## Enumeration Type Documentation

enum xed_encoder_operand_type_t

Enumerator:

  XED_ENCODER_OPERAND_TYPE_INVALID |
  XED_ENCODER_OPERAND_TYPE_BRDISP |
  XED_ENCODER_OPERAND_TYPE_REG |
  XED_ENCODER_OPERAND_TYPE_IMM0 |
  XED_ENCODER_OPERAND_TYPE_SIMM0 |
  XED_ENCODER_OPERAND_TYPE_IMM1 |
  XED_ENCODER_OPERAND_TYPE_MEM |
  XED_ENCODER_OPERAND_TYPE_PTR |
  XED_ENCODER_OPERAND_TYPE_SEG0 |
  XED_ENCODER_OPERAND_TYPE_SEG1 |
  XED_ENCODER_OPERAND_TYPE_OTHER |

Definition at line 70 of file xed-encoder-hl.h.