XED
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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
 

Macros

#define XED_ENCODER_OPERANDS_MAX   5 /* FIXME */
 

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
}
 

Functions

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) More...
 
Branch Displacement
static XED_INLINE
xed_encoder_operand_t 
xed_relbr (xed_int32_t brdisp, xed_uint_t width)
 a relative branch displacement operand More...
 
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 More...
 
Register and Immmediate Operands
static XED_INLINE
xed_encoder_operand_t 
xed_reg (xed_reg_enum_t reg)
 a register operand More...
 
static XED_INLINE
xed_encoder_operand_t 
xed_imm0 (xed_uint64_t v, xed_uint_t width)
 a first immediate operand (known as IMM0) More...
 
static XED_INLINE
xed_encoder_operand_t 
xed_simm0 (xed_int32_t v, xed_uint_t width)
 an 32b signed immediate operand More...
 
static XED_INLINE
xed_encoder_operand_t 
xed_imm1 (xed_uint8_t v)
 an second immediate operand (known as IMM1) More...
 
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 More...
 
Memory and Segment-releated Operands
static XED_INLINE
xed_encoder_operand_t 
xed_seg0 (xed_reg_enum_t seg0)
 seg reg override for implicit suppressed memory ops More...
 
static XED_INLINE
xed_encoder_operand_t 
xed_seg1 (xed_reg_enum_t seg1)
 seg reg override for implicit suppressed memory ops More...
 
static XED_INLINE
xed_encoder_operand_t 
xed_mem_b (xed_reg_enum_t base, xed_uint_t width)
 memory operand - base only More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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. More...
 
static XED_INLINE void xed_rep (xed_encoder_instruction_t *x)
 
static XED_INLINE void xed_repne (xed_encoder_instruction_t *x)
 
static XED_INLINE void xed_lock (xed_encoder_instruction_t *x)
 
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 More...
 
Creating instructions from 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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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. More...
 

Macro Definition Documentation

#define XED_ENCODER_OPERANDS_MAX   5 /* FIXME */

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

Enumeration Type Documentation

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.