34 #if !defined(_XED_OPERAND_VALUES_INTERFACE_H_)
35 # define _XED_OPERAND_VALUES_INTERFACE_H_
248 unsigned int memop_idx);
253 unsigned int memop_idx);
258 unsigned int memop_idx);
263 unsigned int memop_idx);
432 unsigned int memop_length);
439 xed_int64_t x,
unsigned int len);
445 unsigned int len_bits);
462 unsigned int len_bits);
495 unsigned int memop_idx,
500 unsigned int memop_idx,
505 unsigned int memop_idx,
XED_DLL_EXPORT void xed_operand_values_set_scale(xed_operand_values_t *p, xed_uint_t memop_idx, xed_uint_t new_scale)
XED_DLL_EXPORT xed_bool_t xed_operand_values_get_real_mode(const xed_operand_values_t *p)
The main container for instructions.
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_branch_displacement_length(const xed_operand_values_t *p)
Return the branch displacement width in bytes.
XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_branch_displacement_byte(const xed_operand_values_t *p, unsigned int i)
XED_DLL_EXPORT xed_int64_t xed_operand_values_get_immediate_int64(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_branch_displacement(const xed_operand_values_t *p)
True if there is a branch displacement.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_real_rep(const xed_operand_values_t *p)
True if the instruction has a real REP prefix.
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_effective_operand_width(const xed_operand_values_t *p)
Returns The effective operand width in bits: 16/32/64.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_immediate(const xed_operand_values_t *p)
Return true if there is an immediate operand.
XED_DLL_EXPORT xed_bool_t xed_operand_values_using_default_segment(const xed_operand_values_t *p, unsigned int i)
Indicates if the default segment is being used.
XED_DLL_EXPORT void xed_operand_values_set_base_reg(xed_operand_values_t *p, unsigned int memop_idx, xed_reg_enum_t new_base)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_rep_prefix(const xed_operand_values_t *p)
True if the instruction as a F3 REP prefix (used for opcode refining, for rep for string operations...
XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_seg_reg(const xed_operand_values_t *p, unsigned int memop_idx)
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_memory_displacement_length(const xed_operand_values_t *p)
Return the memory displacement width in BYTES.
XED_DLL_EXPORT xed_iclass_enum_t xed_operand_values_get_iclass(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_rexw_prefix(const xed_operand_values_t *p)
This instruction has a REX prefix with the W bit set.
XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_memory_displacement_byte(const xed_operand_values_t *p, unsigned int i)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_modrm_byte(const xed_operand_values_t *p)
Returns true if the instruction has a MODRM byte.
XED_DLL_EXPORT void xed_operand_values_set_effective_operand_width(xed_operand_values_t *p, unsigned int width)
width is bits 8, 16, 32, 64
XED_DLL_EXPORT void xed_operand_values_set_immediate_signed_bits(xed_operand_values_t *p, xed_int32_t x, unsigned int bits)
Set the signed immediate using a BITS length.
XED_DLL_EXPORT xed_bool_t xed_operand_values_get_long_mode(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_repne_prefix(const xed_operand_values_t *p)
True if the instruction as a F2 REP prefix (used for opcode refining, for rep for string operations...
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_displacement(const xed_operand_values_t *p)
True if there is a memory or branch displacement.
XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_second_immediate(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_rep(xed_operand_values_t *p)
for REP(F3) prefix on string ops
XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_immediate_byte(const xed_operand_values_t *p, unsigned int i)
Return the i'th byte of the immediate.
XED_DLL_EXPORT xed_bool_t xed_operand_values_get_atomic(const xed_operand_values_t *p)
Returns true if the memory operation has atomic read-modify-write semantics.
XED_DLL_EXPORT void xed_operand_values_set_immediate_signed(xed_operand_values_t *p, xed_int32_t x, unsigned int bytes)
Set the signed immediate using a BYTES length.
XED_DLL_EXPORT xed_bool_t xed_operand_values_memop_without_modrm(const xed_operand_values_t *p)
Returns true if the instruction access memory but without using a MODRM byte limiting its addressing ...
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_effective_address_width(const xed_operand_values_t *p)
Returns The effective address width in bits: 16/32/64.
XED_DLL_EXPORT void xed_operand_values_set_memory_displacement_bits(xed_operand_values_t *p, xed_int64_t x, unsigned int len_bits)
Set the memory displacement using a BITS length.
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_memory_displacement_length_bits(const xed_operand_values_t *p)
Return the memory displacement width in BITS.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_address_size_prefix(const xed_operand_values_t *p)
This indicates the presence of a 67 prefix.
XED_DLL_EXPORT void xed_operand_values_set_iclass(xed_operand_values_t *p, xed_iclass_enum_t iclass)
XED_DLL_EXPORT void xed_operand_values_zero_segment_override(xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_mode(xed_operand_values_t *p, const xed_state_t *dstate)
Set the mode values.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_lock_prefix(const xed_operand_values_t *p)
Returns true if the memory operation has a valid lock prefix.
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_memory_displacement_length_bits_raw(const xed_operand_values_t *p)
Return the raw memory displacement width in BITS(ignores scaling)
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_branch_displacement_length_bits(const xed_operand_values_t *p)
Return the branch displacement width in bits.
XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_index_reg(const xed_operand_values_t *p, unsigned int memop_idx)
XED_DLL_EXPORT void xed_operand_values_zero_memory_displacement(xed_operand_values_t *p)
XED_DLL_EXPORT xed_int64_t xed3_operand_get_memory_displacement_int64(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_init_keep_mode(xed_operand_values_t *dst, const xed_operand_values_t *src)
Initializes dst operand structure but preserves the existing MODE/SMODE values from the src operand s...
XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_base_reg(const xed_operand_values_t *p, unsigned int memop_idx)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_memory_displacement(const xed_operand_values_t *p)
True if there is a memory displacement.
Encapsulates machine modes for decoder/encoder requests.
XED_DLL_EXPORT void xed_operand_values_set_lock(xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_print_short(const xed_operand_values_t *ov, char *buf, int buflen)
More tersely dump all the information about the operands to buf.
XED_DLL_EXPORT void xed_operand_values_clear_rep(xed_operand_values_t *p)
clear the REP prefix indicator
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_disp(const xed_operand_values_t *p)
ALIAS for has_displacement().
XED_DLL_EXPORT xed_bool_t xed_operand_values_is_nop(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_operand_size_prefix(const xed_operand_values_t *p)
This does not include the cases when the 66 prefix is used an opcode-refining prefix for multibyte op...
XED_DLL_EXPORT void xed_operand_values_zero_immediate(xed_operand_values_t *p)
XED_DLL_EXPORT xed_int64_t xed_operand_values_get_memory_displacement_int64(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_zero_branch_displacement(xed_operand_values_t *p)
XED_DLL_EXPORT xed_uint64_t xed_operand_values_get_immediate_uint64(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_uint32_t xed_operand_values_get_stack_address_width(const xed_operand_values_t *p)
Returns The stack address width in bits: 16/32/64.
XED_DLL_EXPORT void xed_operand_values_set_immediate_unsigned_bits(xed_operand_values_t *p, xed_uint64_t x, unsigned int bits)
Set the unsigned immediate using a BIT length.
XED_DLL_EXPORT xed_int32_t xed3_operand_get_branch_displacement_int32(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_relbr(xed_operand_values_t *p)
Indicate that we have a relative branch.
XED_DLL_EXPORT void xed_operand_values_dump(const xed_operand_values_t *ov, char *buf, int buflen)
Dump all the information about the operands to buf.
XED_DLL_EXPORT void xed_operand_values_set_seg_reg(xed_operand_values_t *p, unsigned int memop_idx, xed_reg_enum_t new_seg)
XED_DLL_EXPORT void xed_operand_values_set_index_reg(xed_operand_values_t *p, unsigned int memop_idx, xed_reg_enum_t new_index)
XED_DLL_EXPORT void xed_operand_values_init(xed_operand_values_t *p)
Initializes operand structure.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_sib_byte(const xed_operand_values_t *p)
Returns true if the instruction has a SIB byte.
XED_DLL_EXPORT unsigned int xed_operand_values_get_scale(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_operand_reg(xed_operand_values_t *p, xed_operand_enum_t operand_name, xed_reg_enum_t reg_name)
Set the operand storage field entry named 'operand_name' to the register value specified by 'reg_name...
XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_segment_prefix(const xed_operand_values_t *p)
Return the segment prefix, if any, as a xed_reg_enum_t value.
XED_DLL_EXPORT void xed_operand_values_set_immediate_unsigned(xed_operand_values_t *p, xed_uint64_t x, unsigned int bytes)
Set the unsigned immediate using a BYTE length.
XED_DLL_EXPORT void xed_operand_values_set_memory_operand_length(xed_operand_values_t *p, unsigned int memop_length)
XED_DLL_EXPORT unsigned int xed_operand_values_number_of_memory_operands(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_uint_t xed_operand_values_get_immediate_is_signed(const xed_operand_values_t *p)
Return true if the first immediate (IMM0) is signed.
XED_DLL_EXPORT void xed_operand_values_set_memory_displacement(xed_operand_values_t *p, xed_int64_t x, unsigned int len)
Set the memory displacement using a BYTES length.
XED_DLL_EXPORT void xed_operand_values_init_set_mode(xed_operand_values_t *p, const xed_state_t *dstate)
Initializes the operand storage and sets mode values.
XED_DLL_EXPORT void xed_operand_values_set_effective_address_width(xed_operand_values_t *p, unsigned int width)
width is bits 16, 32, 64
XED_DLL_EXPORT void xed_operand_values_set_branch_displacement(xed_operand_values_t *p, xed_int32_t x, unsigned int len)
Set the branch displacement using a BYTES length.
XED_DLL_EXPORT xed_bool_t xed_operand_values_branch_not_taken_hint(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_accesses_memory(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_branch_displacement_bits(xed_operand_values_t *p, xed_int32_t x, unsigned int len_bits)
Set the branch displacement using a BITS length.
XED_DLL_EXPORT xed_bool_t xed_operand_values_is_prefetch(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_get_displacement_for_memop(const xed_operand_values_t *p)
Deprecated.
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_segment_prefix(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_branch_taken_hint(const xed_operand_values_t *p)
XED_DLL_EXPORT void xed_operand_values_set_repne(xed_operand_values_t *p)
for REPNE(F2) prefix on string ops
XED_DLL_EXPORT xed_int32_t xed_operand_values_get_branch_displacement_int32(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_int64_t xed3_operand_get_memory_displacement_int64_raw(const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t xed_operand_values_has_66_prefix(const xed_operand_values_t *p)
This includes any 66 prefix that shows up even if it is ignored.
XED_DLL_EXPORT unsigned int xed_operand_values_get_memory_operand_length(const xed_operand_values_t *p, unsigned int memop_idx)