The operand storage fields are an array of values used for decoding and for encoding. This holds derived semantic information from decode or required fields used during encoding. They are accessible from a xed_decoded_inst_t or a xed_encoder_request_t .
More...
|
XED_DLL_EXPORT void | xed_operand_values_zero_immediate (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_zero_branch_displacement (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_zero_memory_displacement (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_set_lock (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_zero_segment_override (xed_operand_values_t *p) |
|
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_set_effective_operand_width (xed_operand_values_t *p, unsigned int width) |
|
XED_DLL_EXPORT void | xed_operand_values_set_effective_address_width (xed_operand_values_t *p, unsigned int width) |
|
XED_DLL_EXPORT void | xed_operand_values_set_memory_operand_length (xed_operand_values_t *p, unsigned int memop_length) |
| takes bytes, not bits, as an argument More...
|
|
XED_DLL_EXPORT void | xed_operand_values_set_memory_displacement (xed_operand_values_t *p, xed_int64_t x, unsigned int len) |
|
XED_DLL_EXPORT void | xed_operand_values_set_memory_displacement_bits (xed_operand_values_t *p, xed_int64_t x, unsigned int len_bits) |
|
XED_DLL_EXPORT void | xed_operand_values_set_relbr (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_set_absbr (xed_operand_values_t *p) |
|
XED_DLL_EXPORT void | xed_operand_values_set_branch_displacement (xed_operand_values_t *p, xed_int64_t x, unsigned int len) |
|
XED_DLL_EXPORT void | xed_operand_values_set_branch_displacement_bits (xed_operand_values_t *p, xed_int64_t x, unsigned int len_bits) |
|
XED_DLL_EXPORT void | xed_operand_values_set_immediate_signed (xed_operand_values_t *p, xed_int32_t x, unsigned int bytes) |
|
XED_DLL_EXPORT void | xed_operand_values_set_immediate_signed_bits (xed_operand_values_t *p, xed_int32_t x, unsigned int bits) |
|
XED_DLL_EXPORT void | xed_operand_values_set_immediate_unsigned (xed_operand_values_t *p, xed_uint64_t x, unsigned int bytes) |
|
XED_DLL_EXPORT void | xed_operand_values_set_immediate_unsigned_bits (xed_operand_values_t *p, xed_uint64_t x, unsigned int bits) |
|
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 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_set_scale (xed_operand_values_t *p, xed_uint_t memop_idx, xed_uint_t new_scale) |
|
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) |
|
The operand storage fields are an array of values used for decoding and for encoding. This holds derived semantic information from decode or required fields used during encoding. They are accessible from a xed_decoded_inst_t or a xed_encoder_request_t .
◆ xed_operand_values_accesses_memory()
◆ xed_operand_values_branch_not_taken_hint()
Returns true if 0x2E prefix on Jcc
◆ xed_operand_values_branch_taken_hint()
Returns true if 0x3E prefix on Jcc
◆ xed_operand_values_cet_no_track()
Returns true for indirect call/jmp with 0x3E prefix (if the legacy prefix rules are obeyed)
◆ xed_operand_values_clear_rep()
DO NOT USE - DEPRECATED. The correct way to do remove a rep prefix is by changing the iclass
◆ xed_operand_values_dump()
Dump all the information about the operands to buf.
◆ xed_operand_values_get_atomic()
Returns true if the memory operation has atomic read-modify-write semantics. An XCHG accessing memory is atomic with or without a LOCK prefix.
◆ xed_operand_values_get_base_reg()
◆ xed_operand_values_get_branch_displacement_byte()
◆ xed_operand_values_get_branch_displacement_int64()
◆ xed_operand_values_get_branch_displacement_length()
Return the branch displacement width in bytes
◆ xed_operand_values_get_branch_displacement_length_bits()
Return the branch displacement width in bits
◆ xed_operand_values_get_displacement_for_memop()
Deprecated. Compatibility function for XED0. See has_memory_displacement().
◆ xed_operand_values_get_effective_address_width()
Returns The effective address width in bits: 16/32/64.
◆ xed_operand_values_get_effective_operand_width()
Returns The effective operand width in bits: 16/32/64. Note this is not the same as the width of the operand which can vary! For 8 bit operations, the effective operand width is the machine mode's default width. If you also want to identify byte operations use the higher level function xed_decoded_inst_get_operand_width() .
◆ xed_operand_values_get_iclass()
◆ xed_operand_values_get_immediate_byte()
Return the i'th byte of the immediate
◆ xed_operand_values_get_immediate_int64()
◆ xed_operand_values_get_immediate_is_signed()
Return true if the first immediate (IMM0) is signed
◆ xed_operand_values_get_immediate_uint64()
◆ xed_operand_values_get_index_reg()
◆ xed_operand_values_get_long_mode()
◆ xed_operand_values_get_memory_displacement_byte()
◆ xed_operand_values_get_memory_displacement_int64()
Returns the potentially scaled value of the memory displacement.
Certain AVX512 memory displacements are scaled before they are used.
◆ xed_operand_values_get_memory_displacement_int64_raw()
Returns the unscaled (raw) memory displacement.
Certain AVX512 memory displacements are scaled before they are used.
◆ xed_operand_values_get_memory_displacement_length()
Return the memory displacement width in BYTES
◆ xed_operand_values_get_memory_displacement_length_bits()
Return the memory displacement width in BITS
◆ xed_operand_values_get_memory_displacement_length_bits_raw()
Return the raw memory displacement width in BITS(ignores scaling)
◆ xed_operand_values_get_memory_operand_length()
◆ xed_operand_values_get_pp_vex_prefix()
Return the [VEX,EVEX].PP encoding value (2 bits)
◆ xed_operand_values_get_real_mode()
◆ xed_operand_values_get_scale()
◆ xed_operand_values_get_second_immediate()
◆ xed_operand_values_get_seg_reg()
◆ xed_operand_values_get_stack_address_width()
Returns The stack address width in bits: 16/32/64.
◆ xed_operand_values_has_66_prefix()
This includes any 66 prefix that shows up even if it is ignored.
◆ xed_operand_values_has_address_size_prefix()
This indicates the presence of a 67 prefix.
◆ xed_operand_values_has_branch_displacement()
True if there is a branch displacement
◆ xed_operand_values_has_displacement()
True if there is a memory or branch displacement
◆ xed_operand_values_has_immediate()
Return true if there is an immediate operand
◆ xed_operand_values_has_lock_prefix()
Returns true if the memory operation has a valid lock prefix.
◆ xed_operand_values_has_memory_displacement()
True if there is a memory displacement
◆ xed_operand_values_has_modrm_byte()
Returns true if the instruction has a MODRM byte.
◆ xed_operand_values_has_operand_size_prefix()
This does not include the cases when the 66 prefix is used an opcode-refining prefix for multibyte opcodes.
◆ xed_operand_values_has_real_rep()
True if the instruction has a real REP prefix. This returns false if there is no F2/F3 prefix or the F2/F3 prefix is used to refine the opcode as in some SSE operations.
◆ xed_operand_values_has_rep_prefix()
True if the instruction as a F3 REP prefix (used for opcode refining, for rep for string operations, or ignored).
◆ xed_operand_values_has_repne_prefix()
True if the instruction as a F2 REP prefix (used for opcode refining, for rep for string operations, or ignored).
◆ xed_operand_values_has_rexw_prefix()
This instruction has a REX prefix with the W bit set.
◆ xed_operand_values_has_segment_prefix()
◆ xed_operand_values_has_sib_byte()
Returns true if the instruction has a SIB byte.
◆ xed_operand_values_ignored_branch_not_taken_hint()
Returns true if instruction has ignored 0x2E prefix
◆ xed_operand_values_ignored_branch_taken_hint()
Returns true if instruction has ignored 0x3E prefix
◆ xed_operand_values_init()
Initializes operand structure
◆ xed_operand_values_init_keep_mode()
Initializes dst operand structure but preserves the existing MODE/SMODE values from the src operand structure.
◆ xed_operand_values_init_set_mode()
Initializes the operand storage and sets mode values.
◆ xed_operand_values_is_nop()
◆ xed_operand_values_lockable()
Returns true if the instruction could be re-encoded to have a lock prefix but does not have one currently.
◆ xed_operand_values_mandatory_66_prefix()
This is exclusive to cases whereby the 66 prefix is mandatory.
◆ xed_operand_values_memop_without_modrm()
Returns true if the instruction access memory but without using a MODRM byte limiting its addressing modes.
◆ xed_operand_values_number_of_memory_operands()
◆ xed_operand_values_print_short()
More tersely dump all the information about the operands to buf.
◆ xed_operand_values_segment_prefix()
◆ xed_operand_values_set_absbr()
Indicate that we have an absolute branch.
◆ xed_operand_values_set_base_reg()
◆ xed_operand_values_set_branch_displacement()
Set the branch displacement using a BYTES length
◆ xed_operand_values_set_branch_displacement_bits()
Set the branch displacement using a BITS length
◆ xed_operand_values_set_effective_address_width()
◆ xed_operand_values_set_effective_operand_width()
width is bits 8, 16, 32, 64
◆ xed_operand_values_set_iclass()
◆ xed_operand_values_set_immediate_signed()
Set the signed immediate using a BYTES length
◆ xed_operand_values_set_immediate_signed_bits()
Set the signed immediate using a BITS length
◆ xed_operand_values_set_immediate_unsigned()
Set the unsigned immediate using a BYTE length.
◆ xed_operand_values_set_immediate_unsigned_bits()
Set the unsigned immediate using a BIT length.
◆ xed_operand_values_set_index_reg()
◆ xed_operand_values_set_lock()
◆ xed_operand_values_set_memory_displacement()
Set the memory displacement using a BYTES length
◆ xed_operand_values_set_memory_displacement_bits()
Set the memory displacement using a BITS length
◆ xed_operand_values_set_memory_operand_length()
takes bytes, not bits, as an argument
◆ xed_operand_values_set_mode()
◆ xed_operand_values_set_operand_reg()
Set the operand storage field entry named 'operand_name' to the register value specified by 'reg_name'.
◆ xed_operand_values_set_relbr()
Indicate that we have a relative branch.
◆ xed_operand_values_set_scale()
◆ xed_operand_values_set_seg_reg()
◆ xed_operand_values_using_default_segment()
Indicates if the default segment is being used.
- Parameters
-
[in] | p | the pointer to the xed_operand_values_t structure. |
[in] | i | 0 or 1, indicating which memory operation. |
- Returns
- true if the memory operation is using the default segment for the associated addressing mode base register.
◆ xed_operand_values_zero_branch_displacement()
◆ xed_operand_values_zero_immediate()
◆ xed_operand_values_zero_memory_displacement()
◆ xed_operand_values_zero_segment_override()