Definition in file xed-decoded-inst.h.
#include "xed-common-hdrs.h"
#include "xed-common-defs.h"
#include "xed-portability.h"
#include "xed-util.h"
#include "xed-types.h"
#include "xed-operand-values-interface.h"
#include "xed-inst.h"
#include "xed-flags.h"
#include "xed-encoder-gen-defs.h"
Go to the source code of this file.
Data Structures | |
struct | xed_decoded_inst_s |
The main container for instructions. More... | |
IFORM handling | |
#define | XED_MASK_IFORM(x) ((x) & 0xFF) |
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. | |
static XED_INLINE xed_uint_t | xed_decoded_inst_get_old_iform (const xed_decoded_inst_t *p) |
DEPRECATED Return the instruction iform number. | |
XED_DLL_EXPORT xed_uint32_t | xed_iform_max_per_iclass (xed_iclass_enum_t iclass) |
Return the maximum number of iforms for a particular iclass. | |
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 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) |
static XED_INLINE 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) |
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) |
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) |
modes | |
static XED_INLINE xed_uint_t | xed_decoded_inst_get_address_mode (const xed_decoded_inst_t *p) |
static XED_INLINE xed_uint_t | xed_decoded_inst_get_mode (const xed_decoded_inst_t *p) |
static XED_INLINE xed_uint_t | xed_decoded_inst_get_stack_address_mode (const xed_decoded_inst_t *p) |
xed_decoded_inst_t High-level accessors | |
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_uint32_t | xed_decoded_inst_get_attributes (const xed_decoded_inst_t *p) |
Returns the attribute bitvector. | |
static XED_INLINE xed_category_enum_t | xed_decoded_inst_get_category (const xed_decoded_inst_t *p) |
Return the instruction category enumeration. | |
static XED_INLINE xed_extension_enum_t | xed_decoded_inst_get_extension (const xed_decoded_inst_t *p) |
Return the instruction extension enumeration. | |
static XED_INLINE xed_iclass_enum_t | xed_decoded_inst_get_iclass (const xed_decoded_inst_t *p) |
Return the instruction class 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. | |
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 Operands: Number and Length | |
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_length (const xed_decoded_inst_t *p, unsigned int operand_index) |
Return the length in bytes of the operand_index'th operand. | |
xed_decoded_inst_t Operands array access | |
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 Initialization | |
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_DECODER_STATE_H_ |
Typedefs | |
typedef XED_DLL_EXPORT xed_decoded_inst_s | xed_decoded_inst_t |
The main container for instructions. |
|
Definition at line 37 of file xed-decoded-inst.h. |
|
Definition at line 235 of file xed-decoded-inst.h. |