Intel® X86 Encoder Decoder: Operand storage fields

Intel® X86 Encoder Decoder

Loading...
Searching...
No Matches
Operand storage fields

## Initialization
XED_DLL_EXPORT void | xed_operand_values_init (xed_operand_values_t *p)
| Initializes operand structure.
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_mode (xed_operand_values_t *p, const xed_state_t *dstate)
| Set the mode values.
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 structure.

## String output
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_print_short (const xed_operand_values_t *ov, char *buf, int buflen)
| More tersely dump all the information about the operands to buf.

## REP/REPNE Prefixes
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_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, or ignored).
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, or ignored).
XED_DLL_EXPORT void | xed_operand_values_clear_rep (xed_operand_values_t *p)
| DO NOT USE - DEPRECATED.

## Atomic / Locked operations
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 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_bool_t | xed_operand_values_lockable (const xed_operand_values_t *p)
| Returns true if the instruction could be re-encoded to have a lock prefix but does not have one currently.
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 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_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 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 xed_bool_t | xed_operand_values_has_memory_displacement (const xed_operand_values_t *p)
| True if there is a memory displacement
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_displacement (const xed_operand_values_t *p)
| True if there is a memory or branch displacement
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_immediate (const xed_operand_values_t *p)
| Return true if there is an immediate operand
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 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 opcodes.
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 xed_bool_t | xed_operand_values_mandatory_66_prefix (const xed_operand_values_t *p)
| This is exclusive to cases whereby the 66 prefix is mandatory.
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_bool_t | xed_operand_values_has_segment_prefix (const xed_operand_values_t *p)
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 xed_bool_t | xed_operand_values_get_long_mode (const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bool_t | xed_operand_values_get_real_mode (const xed_operand_values_t *p)
XED_DLL_EXPORT xed_bits_t | xed_operand_values_get_pp_vex_prefix (const xed_operand_values_t *p)
| Return the [VEX,EVEX].PP encoding value (2 bits).

## Memory Addressing
XED_DLL_EXPORT xed_bool_t | xed_operand_values_accesses_memory (const xed_operand_values_t *p)
XED_DLL_EXPORT unsigned int | xed_operand_values_number_of_memory_operands (const xed_operand_values_t *p)
XED_DLL_EXPORT unsigned int | xed_operand_values_get_memory_operand_length (const xed_operand_values_t *p, unsigned int memop_idx)
| return bytes
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_reg_enum_t | xed_operand_values_get_index_reg (const xed_operand_values_t *p, unsigned int memop_idx)
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 unsigned int | xed_operand_values_get_scale (const xed_operand_values_t *p)
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 modes.
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 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 xed_bool_t | xed_operand_values_branch_not_taken_hint (const xed_operand_values_t *p)
| Returns true if 0x2E prefix on Jcc.
XED_DLL_EXPORT xed_bool_t | xed_operand_values_branch_taken_hint (const xed_operand_values_t *p)
| Returns true if 0x3E prefix on Jcc.
XED_DLL_EXPORT xed_bool_t | xed_operand_values_ignored_branch_not_taken_hint (const xed_operand_values_t *p)
| Returns true if instruction has ignored 0x2E prefix.
XED_DLL_EXPORT xed_bool_t | xed_operand_values_ignored_branch_taken_hint (const xed_operand_values_t *p)
| Returns true if instruction has ignored 0x3E prefix.
XED_DLL_EXPORT xed_bool_t | xed_operand_values_cet_no_track (const xed_operand_values_t *p)
| Returns true for indirect call/jmp with 0x3E prefix (if the legacy prefix rules are obeyed).
XED_DLL_EXPORT xed_bool_t | xed_operand_values_is_nop (const xed_operand_values_t *p)

## Immediates
XED_DLL_EXPORT xed_int64_t | xed_operand_values_get_immediate_int64 (const 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_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 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_uint8_t | xed_operand_values_get_second_immediate (const xed_operand_values_t *p)

## Memory Displacements
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_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_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_int64_t | xed_operand_values_get_memory_displacement_int64 (const xed_operand_values_t *p)
| Returns the potentially scaled value of the memory displacement.
XED_DLL_EXPORT xed_int64_t | xed_operand_values_get_memory_displacement_int64_raw (const xed_operand_values_t *p)
| Returns the unscaled (raw) memory displacement.
XED_DLL_EXPORT xed_uint8_t | xed_operand_values_get_memory_displacement_byte (const xed_operand_values_t *p, unsigned int i)

## Branch Displacements
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_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_int64_t | xed_operand_values_get_branch_displacement_int64 (const xed_operand_values_t *p)
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_iclass_enum_t | xed_operand_values_get_iclass (const xed_operand_values_t *p)

## Encoding
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)
| width is bits 8, 16, 32, 64
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_memory_operand_length (xed_operand_values_t *p, unsigned int memop_length)
| takes bytes, not bits, as an argument
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_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 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_set_absbr (xed_operand_values_t *p)
| Indicate that we have an absolute branch.
XED_DLL_EXPORT void | xed_operand_values_set_branch_displacement (xed_operand_values_t *p, xed_int64_t x, unsigned int len)
| Set the branch displacement using a BYTES length
XED_DLL_EXPORT void | xed_operand_values_set_branch_displacement_bits (xed_operand_values_t *p, xed_int64_t x, unsigned int len_bits)
| Set the branch displacement using a BITS length
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 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 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_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 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)
| Set the operand storage field entry named 'operand_name' to the register value specified by 'reg_name'.

## Detailed Description

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 .

## Function Documentation

## ◆ xed_operand_values_accesses_memory()

XED_DLL_EXPORT xed_bool_t xed_operand_values_accesses_memory | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_branch_not_taken_hint()

XED_DLL_EXPORT xed_bool_t xed_operand_values_branch_not_taken_hint | ( | const xed_operand_values_t * | p | ) |

Returns true if 0x2E prefix on Jcc.

## ◆ xed_operand_values_branch_taken_hint()

XED_DLL_EXPORT xed_bool_t xed_operand_values_branch_taken_hint | ( | const xed_operand_values_t * | p | ) |

Returns true if 0x3E prefix on Jcc.

## ◆ xed_operand_values_cet_no_track()

XED_DLL_EXPORT xed_bool_t xed_operand_values_cet_no_track | ( | const xed_operand_values_t * | p | ) |

Returns true for indirect call/jmp with 0x3E prefix (if the legacy prefix rules are obeyed).

## ◆ xed_operand_values_clear_rep()

XED_DLL_EXPORT void xed_operand_values_clear_rep | ( | xed_operand_values_t * | p | ) |

DO NOT USE - DEPRECATED.

The correct way to do remove a rep prefix is by changing the iclass

## ◆ xed_operand_values_dump()

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_operand_values_get_atomic()

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.

An XCHG accessing memory is atomic with or without a LOCK prefix.

## ◆ xed_operand_values_get_base_reg()

XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_base_reg | ( | const xed_operand_values_t * | p,
|  | unsigned int | memop_idx )

## ◆ xed_operand_values_get_branch_displacement_byte()

XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_branch_displacement_byte | ( | const xed_operand_values_t * | p,
|  | unsigned int | i )

## ◆ xed_operand_values_get_branch_displacement_int64()

XED_DLL_EXPORT xed_int64_t xed_operand_values_get_branch_displacement_int64 | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_branch_displacement_length()

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_operand_values_get_branch_displacement_length_bits()

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_operand_values_get_displacement_for_memop()

XED_DLL_EXPORT xed_bool_t xed_operand_values_get_displacement_for_memop | ( | const xed_operand_values_t * | p | ) |

Deprecated.

Compatibility function for XED0. See has_memory_displacement().

## ◆ xed_operand_values_get_effective_address_width()

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_operand_values_get_effective_operand_width()

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.

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_DLL_EXPORT xed_iclass_enum_t xed_operand_values_get_iclass | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_immediate_byte()

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_operand_values_get_immediate_int64()

XED_DLL_EXPORT xed_int64_t xed_operand_values_get_immediate_int64 | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_immediate_is_signed()

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_operand_values_get_immediate_uint64()

XED_DLL_EXPORT xed_uint64_t xed_operand_values_get_immediate_uint64 | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_index_reg()

XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_index_reg | ( | const xed_operand_values_t * | p,
|  | unsigned int | memop_idx )

## ◆ xed_operand_values_get_long_mode()

XED_DLL_EXPORT xed_bool_t xed_operand_values_get_long_mode | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_memory_displacement_byte()

XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_memory_displacement_byte | ( | const xed_operand_values_t * | p,
|  | unsigned int | i )

## ◆ xed_operand_values_get_memory_displacement_int64()

XED_DLL_EXPORT xed_int64_t xed_operand_values_get_memory_displacement_int64 | ( | const xed_operand_values_t * | p | ) |

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()

XED_DLL_EXPORT xed_int64_t xed_operand_values_get_memory_displacement_int64_raw | ( | const xed_operand_values_t * | p | ) |

Returns the unscaled (raw) memory displacement.

Certain AVX512 memory displacements are scaled before they are used.

## ◆ xed_operand_values_get_memory_displacement_length()

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_operand_values_get_memory_displacement_length_bits()

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_operand_values_get_memory_displacement_length_bits_raw()

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_operand_values_get_memory_operand_length()

XED_DLL_EXPORT unsigned int xed_operand_values_get_memory_operand_length | ( | const xed_operand_values_t * | p,
|  | unsigned int | memop_idx )

return bytes

## ◆ xed_operand_values_get_pp_vex_prefix()

XED_DLL_EXPORT xed_bits_t xed_operand_values_get_pp_vex_prefix | ( | const xed_operand_values_t * | p | ) |

Return the [VEX,EVEX].PP encoding value (2 bits).

## ◆ xed_operand_values_get_real_mode()

XED_DLL_EXPORT xed_bool_t xed_operand_values_get_real_mode | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_scale()

XED_DLL_EXPORT unsigned int xed_operand_values_get_scale | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_second_immediate()

XED_DLL_EXPORT xed_uint8_t xed_operand_values_get_second_immediate | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_get_seg_reg()

XED_DLL_EXPORT xed_reg_enum_t xed_operand_values_get_seg_reg | ( | const xed_operand_values_t * | p,
|  | unsigned int | memop_idx )

## ◆ xed_operand_values_get_stack_address_width()

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_operand_values_has_66_prefix()

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_operand_values_has_address_size_prefix()

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_operand_values_has_branch_displacement()

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_operand_values_has_displacement()

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_operand_values_has_immediate()

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_operand_values_has_lock_prefix()

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_operand_values_has_memory_displacement()

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

## ◆ xed_operand_values_has_modrm_byte()

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_operand_values_has_operand_size_prefix()

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 opcodes.

## ◆ xed_operand_values_has_real_rep()

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.

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()

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, or ignored).

## ◆ xed_operand_values_has_repne_prefix()

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, or ignored).

## ◆ xed_operand_values_has_rexw_prefix()

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_operand_values_has_segment_prefix()

XED_DLL_EXPORT xed_bool_t xed_operand_values_has_segment_prefix | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_has_sib_byte()

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_operand_values_ignored_branch_not_taken_hint()

XED_DLL_EXPORT xed_bool_t xed_operand_values_ignored_branch_not_taken_hint | ( | const xed_operand_values_t * | p | ) |

Returns true if instruction has ignored 0x2E prefix.

## ◆ xed_operand_values_ignored_branch_taken_hint()

XED_DLL_EXPORT xed_bool_t xed_operand_values_ignored_branch_taken_hint | ( | const xed_operand_values_t * | p | ) |

Returns true if instruction has ignored 0x3E prefix.

## ◆ xed_operand_values_init()

XED_DLL_EXPORT void xed_operand_values_init | ( | xed_operand_values_t * | p | ) |

Initializes operand structure.

## ◆ xed_operand_values_init_keep_mode()

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 structure.

## ◆ xed_operand_values_init_set_mode()

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_operand_values_is_nop()

XED_DLL_EXPORT xed_bool_t xed_operand_values_is_nop | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_lockable()

XED_DLL_EXPORT xed_bool_t xed_operand_values_lockable | ( | const xed_operand_values_t * | p | ) |

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()

XED_DLL_EXPORT xed_bool_t xed_operand_values_mandatory_66_prefix | ( | const xed_operand_values_t * | p | ) |

This is exclusive to cases whereby the 66 prefix is mandatory.

## ◆ xed_operand_values_memop_without_modrm()

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 modes.

## ◆ xed_operand_values_number_of_memory_operands()

XED_DLL_EXPORT unsigned int xed_operand_values_number_of_memory_operands | ( | const xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_print_short()

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_operand_values_segment_prefix()

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_operand_values_set_absbr()

XED_DLL_EXPORT void xed_operand_values_set_absbr | ( | xed_operand_values_t * | p | ) |

Indicate that we have an absolute branch.

## ◆ xed_operand_values_set_base_reg()

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_operand_values_set_branch_displacement()

XED_DLL_EXPORT void xed_operand_values_set_branch_displacement | ( | xed_operand_values_t * | p,
|  | xed_int64_t | x,
|  | unsigned int | len )

Set the branch displacement using a BYTES length

## ◆ xed_operand_values_set_branch_displacement_bits()

XED_DLL_EXPORT void xed_operand_values_set_branch_displacement_bits | ( | xed_operand_values_t * | p,
|  | xed_int64_t | x,
|  | unsigned int | len_bits )

Set the branch displacement using a BITS length

## ◆ xed_operand_values_set_effective_address_width()

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_operand_values_set_effective_operand_width()

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_operand_values_set_iclass()

XED_DLL_EXPORT void xed_operand_values_set_iclass | ( | xed_operand_values_t * | p,
|  | xed_iclass_enum_t | iclass )

## ◆ xed_operand_values_set_immediate_signed()

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_operand_values_set_immediate_signed_bits()

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_operand_values_set_immediate_unsigned()

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_operand_values_set_immediate_unsigned_bits()

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_operand_values_set_index_reg()

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_operand_values_set_lock()

XED_DLL_EXPORT void xed_operand_values_set_lock | ( | xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_set_memory_displacement()

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_operand_values_set_memory_displacement_bits()

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_operand_values_set_memory_operand_length()

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

## ◆ xed_operand_values_set_mode()

XED_DLL_EXPORT void xed_operand_values_set_mode | ( | xed_operand_values_t * | p,
|  | const xed_state_t * | dstate )

Set the mode values.

## ◆ xed_operand_values_set_operand_reg()

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_operand_values_set_relbr()

XED_DLL_EXPORT void xed_operand_values_set_relbr | ( | xed_operand_values_t * | p | ) |

Indicate that we have a relative branch.

## ◆ xed_operand_values_set_scale()

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_operand_values_set_seg_reg()

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_operand_values_using_default_segment()

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.

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_DLL_EXPORT void xed_operand_values_zero_branch_displacement | ( | xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_zero_immediate()

XED_DLL_EXPORT void xed_operand_values_zero_immediate | ( | xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_zero_memory_displacement()

XED_DLL_EXPORT void xed_operand_values_zero_memory_displacement | ( | xed_operand_values_t * | p | ) |

## ◆ xed_operand_values_zero_segment_override()

XED_DLL_EXPORT void xed_operand_values_zero_segment_override | ( | xed_operand_values_t * | p | ) |