32 #ifndef _XED_ENCODER_HL_H_
33 # define _XED_ENCODER_HL_H_
53 xed_uint32_t displacement_width ) {
190 o.
u.
s.operand_name = operand_name;
345 xed_uint32_t repne :1;
346 xed_uint32_t lock :1;
347 xed_uint32_t br_hint_taken :1;
348 xed_uint32_t br_hint_not_taken :1;
353 #define XED_ENCODER_OPERANDS_MAX 5
568 for(i=0;i<number_of_operands;i++) {
569 inst->
operands[i] = operand_array[i];
xed_encoder_operand_t operands[XED_ENCODER_OPERANDS_MAX]
struct xed_encoder_prefixes_t::@4 s
The main container for instructions.
static XED_INLINE void xed_lock(xed_encoder_instruction_t *x)
static XED_INLINE xed_enc_displacement_t xed_disp(xed_uint64_t displacement, xed_uint32_t displacement_width)
a memory displacement (not for branches)
union xed_encoder_operand_t::@2 u
xed_uint64_t displacement
static XED_INLINE xed_encoder_operand_t xed_mem_b(xed_reg_enum_t base, xed_uint_t width)
memory operand - base only
xed_uint32_t effective_operand_width
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
xed_encoder_prefixes_t prefixes
static XED_INLINE xed_encoder_operand_t xed_relbr(xed_int32_t brdisp, xed_uint_t width)
a relative branch displacement operand
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
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
xed_operand_enum_t operand_name
static XED_INLINE xed_encoder_operand_t xed_imm0(xed_uint64_t v, xed_uint_t width)
a first immediate operand (known as IMM0)
xed_uint32_t effective_address_width
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_seg1(xed_reg_enum_t seg1)
seg reg override for implicit suppressed memory ops
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_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_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_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_rep(xed_encoder_instruction_t *x)
static XED_INLINE xed_encoder_operand_t xed_imm1(xed_uint8_t v)
an second immediate operand (known as IMM1)
Encapsulates machine modes for decoder/encoder requests.
xed_encoder_operand_type_t
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_seg0(xed_reg_enum_t seg0)
seg reg override for implicit suppressed memory ops
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
struct xed_encoder_operand_t::@2::@3 s
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.
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 ...
static XED_INLINE void xed_repne(xed_encoder_instruction_t *x)
xed_uint32_t displacement_width
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 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
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
xed_encoder_operand_type_t type
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
#define XED_ENCODER_OPERANDS_MAX
static XED_INLINE xed_encoder_operand_t xed_simm0(xed_int32_t v, xed_uint_t width)
an 32b signed immediate operand
xed_enc_displacement_t disp
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 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