- Main Page
- Modules
- Data Structures
- Files

- Search for |

- File List
- Globals

# xed-decoded-inst-api.h File Reference

`#include "xed-decoded-inst.h"`
`#include "xed-operand-accessors.h"`
`#include "xed-state.h"`
`#include "xed-operand-values-interface.h"`

Go to the source code of this file.

## xed_decoded_inst_t Operand Field Details

XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_conditionally_writes_registers (const xed_decoded_inst_t *p)
XED_DLL_EXPORT xed_reg_enum_t | xed_decoded_inst_get_base_reg (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_int32_t | xed_decoded_inst_get_branch_displacement (const xed_decoded_inst_t *p)
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_branch_displacement_width (const xed_decoded_inst_t *p)
| Result in BYTES.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_branch_displacement_width_bits (const xed_decoded_inst_t *p)
| Result in BITS.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_immediate_is_signed (const xed_decoded_inst_t *p)
| Return true if the first immediate (IMM0) is signed.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_immediate_width (const xed_decoded_inst_t *p)
| Return the immediate width in BYTES.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_immediate_width_bits (const xed_decoded_inst_t *p)
| Return the immediate width in BITS.
XED_DLL_EXPORT xed_reg_enum_t | xed_decoded_inst_get_index_reg (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT unsigned int | xed_decoded_inst_get_memop_address_width (const xed_decoded_inst_t *p, xed_uint_t memop_idx)
XED_DLL_EXPORT xed_int64_t | xed_decoded_inst_get_memory_displacement (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_memory_displacement_width (const xed_decoded_inst_t *p, unsigned int mem_idx)
| Result in BYTES.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_memory_displacement_width_bits (const xed_decoded_inst_t *p, unsigned int mem_idx)
| Result in BITS.
XED_DLL_EXPORT unsigned int | xed_decoded_inst_get_memory_operand_length (const xed_decoded_inst_t *p, unsigned int memop_idx)
XED_DLL_EXPORT xed_reg_enum_t | xed_decoded_inst_get_reg (const xed_decoded_inst_t *p, xed_operand_enum_t reg_operand)
| Return the specified register operand.
XED_DLL_EXPORT const xed_simple_flag_t * | xed_decoded_inst_get_rflags_info (const xed_decoded_inst_t *p)
| See the comment on xed_decoded_inst_uses_rflags().
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_scale (const xed_decoded_inst_t *p, unsigned int mem_idx)
static XED_INLINE xed_uint8_t | xed_decoded_inst_get_second_immediate (const xed_decoded_inst_t *p)
| Return the second immediate.
XED_DLL_EXPORT xed_reg_enum_t | xed_decoded_inst_get_seg_reg (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_int32_t | xed_decoded_inst_get_signed_immediate (const xed_decoded_inst_t *p)
XED_DLL_EXPORT xed_uint64_t | xed_decoded_inst_get_unsigned_immediate (const xed_decoded_inst_t *p)
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_is_prefetch (const xed_decoded_inst_t *p)
| Returns true if the instruction is a prefetch.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_mem_read (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_mem_written (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_mem_written_only (const xed_decoded_inst_t *p, unsigned int mem_idx)
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_number_of_memory_operands (const xed_decoded_inst_t *p)
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_uses_rflags (const xed_decoded_inst_t *p)
| This returns 1 if the flags are read or written.

## xed_decoded_inst_t Printers

XED_DLL_EXPORT void | xed_decoded_inst_dump (const xed_decoded_inst_t *p, char *buf, int buflen)
| Print out all the information about the decoded instruction to the buffer buf whose length is maximally buflen.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_dump_att_format (const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address)
| Print the instructions with the destination operand on the right, with several exceptions (bound, invlpga, enter, and other instructions with two immediate operands).
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_dump_att_format_context (const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address, void *context)
| Print the instructions with the destination operand on the right, with several exceptions (bound, invlpga, enter, and other instructions with two immediate operands).
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_dump_intel_format (const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address)
| Print the instructions with the destination on the left.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_dump_intel_format_context (const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address, void *context)
| Print the instructions with the destination on the left.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_dump_xed_format (const xed_decoded_inst_t *p, char *buf, int buflen, xed_uint64_t runtime_address)
| Print the instruction information in an verbose format.

## xed_decoded_inst_t Attirbutes and properties

XED_DLL_EXPORT xed_uint32_t | xed_decoded_inst_get_attribute (const xed_decoded_inst_t *p, xed_attribute_enum_t attr)
| Returns 1 if the attribute is defined for this instruction.
XED_DLL_EXPORT xed_attributes_t | xed_decoded_inst_get_attributes (const xed_decoded_inst_t *p)
| Returns the attribute bitvector.

## xed_decoded_inst_t get Byte

static XED_INLINE xed_uint8_t | xed_decoded_inst_get_byte (const xed_decoded_inst_t *p, xed_uint_t byte_index)
| Read itext byte.

## xed_decoded_inst_t High-level accessors

static XED_INLINE xed_category_enum_t | xed_decoded_inst_get_category (const xed_decoded_inst_t *p)
| Return the instruction xed_category_enum_t enumeration.
static XED_INLINE xed_extension_enum_t | xed_decoded_inst_get_extension (const xed_decoded_inst_t *p)
| Return the instruction xed_extension_enum_t enumeration.
static XED_INLINE xed_iclass_enum_t | xed_decoded_inst_get_iclass (const xed_decoded_inst_t *p)
| Return the instruction xed_iclass_enum_t enumeration.
static XED_INLINE xed_isa_set_enum_t | xed_decoded_inst_get_isa_set (xed_decoded_inst_t const *const p)
| Return the instruction xed_isa_set_enum_t enumeration.
static XED_INLINE const xed_inst_t * | xed_decoded_inst_inst (const xed_decoded_inst_t *p)
| Return the xed_inst_t structure for this instruction.
static XED_INLINE xed_bool_t | xed_decoded_inst_valid (const xed_decoded_inst_t *p)
| Return true if the instruction is valid.

## IFORM handling

static XED_INLINE xed_iform_enum_t | xed_decoded_inst_get_iform_enum (const xed_decoded_inst_t *p)
| Return the instruction iform enum of type xed_iform_enum_t .
static XED_INLINE unsigned int | xed_decoded_inst_get_iform_enum_dispatch (const xed_decoded_inst_t *p)
| Return the instruction zero-based iform number based on masking the corresponding xed_iform_enum_t.

## Modes

static XED_INLINE xed_chip_enum_t | xed_decoded_inst_get_input_chip (const xed_decoded_inst_t *p)
| Return the user-specified xed_chip_enum_t chip name, or XED_CHIP_INVALID if not set.
static XED_INLINE xed_uint_t | xed_decoded_inst_get_machine_mode_bits (const xed_decoded_inst_t *p)
| Returns 16/32/64 indicating the machine mode with in bits.
XED_DLL_EXPORT xed_uint32_t | xed_decoded_inst_get_operand_width (const xed_decoded_inst_t *p)
| Returns the operand width in bits: 8/16/32/64.
static XED_INLINE xed_uint_t | xed_decoded_inst_get_stack_address_mode_bits (const xed_decoded_inst_t *p)
| Returns 16/32/64 indicating the stack addressing mode with in bits.
static XED_INLINE void | xed_decoded_inst_set_input_chip (xed_decoded_inst_t *p, xed_chip_enum_t chip)
| Set a user-specified xed_chip_enum_t chip name for restricting decode.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_valid_for_chip (xed_decoded_inst_t const *const p, xed_chip_enum_t chip)
| Indicate if this decoded instruction is valid for the specified xed_chip_enum_t chip.

## xed_decoded_inst_t Length

static XED_INLINE xed_uint_t | xed_decoded_inst_get_length (const xed_decoded_inst_t *p)
| Return the length of the decoded instruction in bytes.

## xed_decoded_inst_t User Data Field

static XED_INLINE xed_uint64_t | xed_decoded_inst_get_user_data (xed_decoded_inst_t *p)
| Return a user data field for arbitrary use by the user after decoding.
static XED_INLINE void | xed_decoded_inst_set_user_data (xed_decoded_inst_t *p, xed_uint64_t new_value)
| Modify the user data field.

## xed_decoded_inst_t Inc Length

static XED_INLINE xed_uint_t | xed_decoded_inst_inc_length (xed_decoded_inst_t *p)
| Increment the length of the decoded instruction in bytes.

## xed_decoded_inst_t Operands

static XED_INLINE unsigned int | xed_decoded_inst_noperands (const xed_decoded_inst_t *p)
| Return the number of operands.
XED_DLL_EXPORT unsigned int | xed_decoded_inst_operand_element_size_bits (const xed_decoded_inst_t *p, unsigned int operand_index)
| Return the size of an element in bits (for SSE and AVX operands).
XED_DLL_EXPORT xed_operand_element_type_enum_t | xed_decoded_inst_operand_element_type (const xed_decoded_inst_t *p, unsigned int operand_index)
| Return the type of an element of type xed_operand_element_type_enum_t (for SSE and AVX operands).
XED_DLL_EXPORT unsigned int | xed_decoded_inst_operand_elements (const xed_decoded_inst_t *p, unsigned int operand_index)
| Return the number of element in the operand (for SSE and AVX operands).
XED_DLL_EXPORT unsigned int | xed_decoded_inst_operand_length (const xed_decoded_inst_t *p, unsigned int operand_index)
| Deprecated -- returns the length in bytes of the operand_index'th operand.
XED_DLL_EXPORT unsigned int | xed_decoded_inst_operand_length_bits (const xed_decoded_inst_t *p, unsigned int operand_index)
| Return the length in bits of the operand_index'th operand.
static XED_INLINE xed_operand_values_t * | xed_decoded_inst_operands (xed_decoded_inst_t *p)
| Obtain a non-constant pointer to the operands.
static XED_INLINE const xed_operand_values_t * | xed_decoded_inst_operands_const (const xed_decoded_inst_t *p)
| Obtain a constant pointer to the operands.

## xed_decoded_inst_t Modification

XED_DLL_EXPORT void | xed_decoded_inst_set_branch_displacement (xed_decoded_inst_t *p, xed_int32_t disp, xed_uint_t length_bytes)
| Set the branch displacement using a BYTE length.
XED_DLL_EXPORT void | xed_decoded_inst_set_branch_displacement_bits (xed_decoded_inst_t *p, xed_int32_t disp, xed_uint_t length_bits)
| Set the branch displacement a BITS length.
XED_DLL_EXPORT void | xed_decoded_inst_set_immediate_signed (xed_decoded_inst_t *p, xed_int32_t x, xed_uint_t length_bytes)
| Set the signed immediate a BYTE length.
XED_DLL_EXPORT void | xed_decoded_inst_set_immediate_signed_bits (xed_decoded_inst_t *p, xed_int32_t x, xed_uint_t length_bits)
| Set the signed immediate a BITS length.
XED_DLL_EXPORT void | xed_decoded_inst_set_immediate_unsigned (xed_decoded_inst_t *p, xed_uint64_t x, xed_uint_t length_bytes)
| Set the unsigned immediate a BYTE length.
XED_DLL_EXPORT void | xed_decoded_inst_set_immediate_unsigned_bits (xed_decoded_inst_t *p, xed_uint64_t x, xed_uint_t length_bits)
| Set the unsigned immediate a BITS length.
XED_DLL_EXPORT void | xed_decoded_inst_set_memory_displacement (xed_decoded_inst_t *p, xed_int64_t disp, xed_uint_t length_bytes)
| Set the memory displacement using a BYTE length.
XED_DLL_EXPORT void | xed_decoded_inst_set_memory_displacement_bits (xed_decoded_inst_t *p, xed_int64_t disp, xed_uint_t length_bits)
| Set the memory displacement a BITS length.
XED_DLL_EXPORT void | xed_decoded_inst_set_scale (xed_decoded_inst_t *p, xed_uint_t scale)

## xed_decoded_inst_t Set Length

static XED_INLINE xed_uint_t | xed_decoded_inst_set_length (xed_decoded_inst_t *p, unsigned char length)
| Set the length of the decoded instruction in bytes.

## xed_decoded_inst_t Initialization

static XED_INLINE void | xed_decoded_inst_set_mode (xed_decoded_inst_t *p, xed_machine_mode_enum_t mmode, xed_address_width_enum_t stack_addr_width)
| Set the machine mode and stack addressing width directly.
XED_DLL_EXPORT void | xed_decoded_inst_zero (xed_decoded_inst_t *p)
| Zero the decode structure completely.
XED_DLL_EXPORT void | xed_decoded_inst_zero_keep_mode (xed_decoded_inst_t *p)
| Zero the decode structure, but preserve the existing machine state/mode information.
XED_DLL_EXPORT void | xed_decoded_inst_zero_keep_mode_from_operands (xed_decoded_inst_t *p, const xed_operand_values_t *operands)
| Zero the decode structure, but copy the existing machine state/mode information from the supplied operands pointer.
XED_DLL_EXPORT void | xed_decoded_inst_zero_set_mode (xed_decoded_inst_t *p, const xed_state_t *dstate)
| Zero the decode structure, but set the machine state/mode information.

## Defines

#define | _XED_DECODED_INST_API_H_

## Functions

XED_DLL_EXPORT xed_uint8_t | xed_decoded_inst_get_modrm (const xed_decoded_inst_t *p)
| Returns the modrm byte.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_get_nprefixes (xed_decoded_inst_t *p)
| Returns the number of legacy prefixes.
XED_DLL_EXPORT xed_uint32_t | xed_decoded_inst_has_mpx_prefix (const xed_decoded_inst_t *p)
| Returns 1 if the instruction has mpx prefix.
XED_DLL_EXPORT xed_uint32_t | xed_decoded_inst_is_xacquire (const xed_decoded_inst_t *p)
| Returns 1 if the instruction is xacquire.
XED_DLL_EXPORT xed_uint32_t | xed_decoded_inst_is_xrelease (const xed_decoded_inst_t *p)
| Returns 1 if the instruction is xrelease.
XED_DLL_EXPORT xed_bool_t | xed_decoded_inst_masked_vector_operation (xed_decoded_inst_t *p)
| Returns 1 iff the instruction uses destination-masking.
XED_DLL_EXPORT xed_uint_t | xed_decoded_inst_vector_length_bits (xed_decoded_inst_t const *const p)
| Returns 128, 256 or 512 for operations in the VEX, EVEX (or XOP) encoding space and returns 0 for (most) nonvector operations.

## Detailed Description

Definition in file xed-decoded-inst-api.h.

## Define Documentation

#define _XED_DECODED_INST_API_H_

| Definition at line 35 of file xed-decoded-inst-api.h.