Data Structures | |
struct | xed_decoded_inst_s |
The main container for instructions. More... | |
struct | xed_inst_s |
constant information about a decoded instruction form, including the pointer to the constant operand properties xed_operand_t for this instruction form. More... | |
struct | xed_operand_s |
Constant information about an individual generic operand, like an operand template, describing the operand properties. More... | |
xed_inst_t Attribute access | |
XED_DLL_EXPORT xed_attribute_enum_t | xed_attribute (unsigned int i) |
Return the i'th global attribute in a linear sequence, independent of any instruction. | |
XED_DLL_EXPORT unsigned int | xed_attribute_max (void) |
Return the maximum number of defined attributes, independent of any instruction. | |
XED_DLL_EXPORT xed_uint32_t | xed_inst_get_attribute (const xed_inst_t *p, xed_attribute_enum_t attr) |
Scan for the attribute attr and return 1 if it is found, 0 otherwise. | |
XED_DLL_EXPORT xed_attributes_t | xed_inst_get_attributes (const xed_inst_t *p) |
Return the attributes bit vector. | |
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) |
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) |
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 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_attributes_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 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 (const xed_decoded_inst_t *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 *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 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 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_set_operand_storage_field (xed_decoded_inst_t *p, xed_operand_enum_t operand_name, xed_uint32_t value) |
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. | |
xed_inst_t Template Instruction Information | |
XED_DLL_EXPORT unsigned int | xed_inst_cpl (const xed_inst_t *p) |
xed_inst_cpl() is DEPRECATED. | |
static XED_INLINE unsigned int | xed_inst_noperands (const xed_inst_t *p) |
Number of instruction operands. | |
static XED_INLINE const xed_operand_t * | xed_inst_operand (const xed_inst_t *p, unsigned int i) |
Obtain a pointer to an individual operand. | |
Exceptions | |
static XED_INLINE xed_exception_enum_t | xed_inst_exception (const xed_inst_t *p) |
Return xed_exception_enum_t if present for the specified instruction. | |
xed_inst_t Template Operand Read/Written | |
XED_DLL_EXPORT xed_uint_t | xed_operand_conditional_read (const xed_operand_t *p) |
If the operand has a conditional read (may also write). | |
XED_DLL_EXPORT xed_uint_t | xed_operand_conditional_write (const xed_operand_t *p) |
If the operand has a conditional write (may also read). | |
XED_DLL_EXPORT xed_uint_t | xed_operand_read (const xed_operand_t *p) |
If the operand is read, including conditional reads. | |
XED_DLL_EXPORT xed_uint_t | xed_operand_read_and_written (const xed_operand_t *p) |
If the operand is read-and-written, conditional reads and conditional writes. | |
XED_DLL_EXPORT xed_uint_t | xed_operand_read_only (const xed_operand_t *p) |
If the operand is read-only, including conditional reads. | |
static XED_INLINE xed_operand_action_enum_t | xed_operand_rw (const xed_operand_t *p) |
Returns the raw R/W action. | |
XED_DLL_EXPORT xed_uint_t | xed_operand_written (const xed_operand_t *p) |
If the operand is written, including conditional writes. | |
XED_DLL_EXPORT xed_uint_t | xed_operand_written_only (const xed_operand_t *p) |
If the operand is written-only, including conditional writes. | |
xed_inst_t Template Operands Access | |
static XED_INLINE xed_uint32_t | xed_operand_imm (const xed_operand_t *p) |
static XED_INLINE xed_operand_enum_t | xed_operand_name (const xed_operand_t *p) |
static XED_INLINE xed_nonterminal_enum_t | xed_operand_nonterminal_name (const xed_operand_t *p) |
static XED_INLINE xed_operand_visibility_enum_t | xed_operand_operand_visibility (const xed_operand_t *p) |
XED_DLL_EXPORT void | xed_operand_print (const xed_operand_t *p, char *buf, int buflen) |
Print the operand p into the buffer buf, of length buflen. | |
static XED_INLINE xed_reg_enum_t | xed_operand_reg (const xed_operand_t *p) |
Careful with this one -- use xed_decoded_inst_get_reg()! This one is probably not what you think it is. | |
static XED_INLINE xed_uint_t | xed_operand_template_is_register (const xed_operand_t *p) |
Careful with this one; See xed_operand_is_register(). | |
static XED_INLINE xed_operand_type_enum_t | xed_operand_type (const xed_operand_t *p) |
static XED_INLINE xed_operand_width_enum_t | xed_operand_width (const xed_operand_t *p) |
static XED_INLINE xed_operand_element_xtype_enum_t | xed_operand_xtype (const xed_operand_t *p) |
xed_inst_t Template Operand Enum Name Classification | |
static XED_INLINE xed_uint_t | xed_operand_is_memory_addressing_register (xed_operand_enum_t name) |
Tests the enum for inclusion in XED_OPERAND_{BASE0,BASE1,INDEX,SEG0,SEG1}. | |
static XED_INLINE xed_uint_t | xed_operand_is_register (xed_operand_enum_t name) |
Tests the enum for inclusion in XED_OPERAND_REG0 through XED_OPERAND_REG15. | |
Typedefs | |
typedef XED_DLL_EXPORT xed_decoded_inst_s | xed_decoded_inst_t |
The main container for instructions. | |
typedef XED_DLL_EXPORT xed_inst_s | xed_inst_t |
constant information about a decoded instruction form, including the pointer to the constant operand properties xed_operand_t for this instruction form. | |
typedef XED_DLL_EXPORT xed_operand_s | xed_operand_t |
Constant information about an individual generic operand, like an operand template, describing the operand properties. | |
Functions | |
XED_DLL_EXPORT xed_error_enum_t | xed_decode (xed_decoded_inst_t *xedd, const xed_uint8_t *itext, const unsigned int bytes) |
This is the main interface to the decoder. | |
XED_DLL_EXPORT const xed_inst_t * | xed_inst_table_base (void) |
Return the base of instruction table. |
The machine state is passed in to decoder via the class xed_state_t . That state is set via the constructor of each xed_decoded_inst_t .
The xed_decoded_inst_t contains the results of decoding after a successful decode.
The xed_decoded_inst_t includes an array of xed_operand_values_t and that is where most of the information about the operands, resources etc. are stored. See the Operand storage fields interface. The array is indexed by the xed_operand_enum_t enumeration. Do not access it directly though; use the interface functions in the Operand storage fields interface for portability.
After decoding the xed_decoded_inst_t contains a pointer to the xed_inst_t which acts like a kind of template giving static information about the decoded instruction: what are the types of the operands, the iclass, category extension, etc. The xed_inst_t is accessed via the xed_decoded_inst_inst(cont xed_decoded_inst_t* xedd) function.
Before every decode, you must call one of the initialization functions. The most common case would be to use xed_decoded_inst_zero_keep_mode() or maybe xed_decoded_inst_zero_set_mode().
|
The main container for instructions. After decode, it holds an array of operands with derived information from decode and also valid xed_inst_t pointer which describes the operand templates and the operand order. See Decoding Instructions for API documentation. |
|
constant information about a decoded instruction form, including the pointer to the constant operand properties xed_operand_t for this instruction form.
|
|
Constant information about an individual generic operand, like an operand template, describing the operand properties. See Decoding Instructions for API information. |
|
Return the i'th global attribute in a linear sequence, independent of any instruction. This is used for scanning and printing all attributes. |
|
Return the maximum number of defined attributes, independent of any instruction.
|
|
This is the main interface to the decoder.
|
|
|
|
Print out all the information about the decoded instruction to the buffer buf whose length is maximally buflen.
|
|
Print the instructions with the destination operand on the right, with several exceptions (bound, invlpga, enter, and other instructions with two immediate operands). Also use instruction name suffixes to indicate operation width. Several instructions names are different as well. Recommendation: buflen must be more than 16 bytes, preferably at least 100 bytes.
|
|
Print the instructions with the destination operand on the right, with several exceptions (bound, invlpga, enter, and other instructions with two immediate operands). Also use instruction name suffixes to indicate operation width. Several instructions names are different as well. buflen must be at least 100 bytes.
|
|
Print the instructions with the destination on the left. Use PTR qualifiers for memory access widths. Recommendation: buflen must be more than 16 bytes, preferably at least 100 bytes.
|
|
Print the instructions with the destination on the left. Use PTR qualifiers for memory access widths. Recommendation: buflen must be more than 16 bytes, preferably at least 100 bytes.
|
|
Print the instruction information in an verbose format.
|
|
Returns 1 if the attribute is defined for this instruction.
|
|
Returns the attribute bitvector.
|
|
|
|
|
|
Result in BYTES.
|
|
Result in BITS.
|
|
Return the instruction xed_category_enum_t enumeration.
Definition at line 125 of file xed-decoded-inst.h. |
|
Return the instruction xed_extension_enum_t enumeration.
Definition at line 131 of file xed-decoded-inst.h. |
|
Return the instruction xed_iclass_enum_t enumeration.
Definition at line 143 of file xed-decoded-inst.h. |
|
Return the instruction iform enum of type xed_iform_enum_t .
Definition at line 320 of file xed-decoded-inst.h. |
|
Return the instruction zero-based iform number based on masking the corresponding xed_iform_enum_t. This value is suitable for dispatching. The maximum value for a particular iclass is provided by xed_iform_max_per_iclass() . Definition at line 330 of file xed-decoded-inst.h. |
|
Return true if the first immediate (IMM0) is signed.
|
|
Return the immediate width in BYTES.
|
|
Return the immediate width in BITS.
|
|
|
|
Return the user-specified xed_chip_enum_t chip name, or XED_CHIP_INVALID if not set.
Definition at line 294 of file xed-decoded-inst.h. |
|
Return the instruction xed_isa_set_enum_t enumeration.
Definition at line 137 of file xed-decoded-inst.h. |
|
Return the length of the decoded instruction in bytes.
Definition at line 259 of file xed-decoded-inst.h. |
|
Returns 16/32/64 indicating the machine mode with in bits. This is derived from the input mode information. Definition at line 271 of file xed-decoded-inst.h. |
|
This factors in things like whether or not the reference is an implicit stack push/pop reference, the machine mode and |
|
|
|
Result in BYTES.
|
|
Result in BITS.
|
|
|
|
Returns the operand width in bits: 8/16/32/64. This is different than the xed_operand_values_get_effective_operand_width() which only returns 16/32/64. This factors in the BYTEOP attribute when computing its return value. This is a convenience function. |
|
Return the specified register operand. The specifier is of type xed_operand_enum_t . Definition at line 466 of file xed-decoded-inst.h. |
|
See the comment on xed_decoded_inst_uses_rflags(). This can return 0 if the flags are really not used by this instruction. |
|
|
|
Return the second immediate.
Definition at line 460 of file xed-decoded-inst.h. |
|
|
|
|
|
Returns 16/32/64 indicating the stack addressing mode with in bits. This is derived from the input mode information. Definition at line 279 of file xed-decoded-inst.h. |
|
|
|
Return a user data field for arbitrary use by the user after decoding.
Definition at line 554 of file xed-decoded-inst.h. |
|
Return the xed_inst_t structure for this instruction. This is the route to the basic operands form information. Definition at line 118 of file xed-decoded-inst.h. |
|
Returns true if the instruction is a prefetch.
|
|
|
|
|
|
|
|
Return the number of operands.
Definition at line 191 of file xed-decoded-inst.h. |
|
|
|
Return the size of an element in bits (for SSE and AVX operands).
|
|
Return the type of an element of type xed_operand_element_type_enum_t (for SSE and AVX operands).
|
|
Return the number of element in the operand (for SSE and AVX operands).
|
|
Deprecated -- returns the length in bytes of the operand_index'th operand. Use xed_decoded_inst_operand_length_bits() instead. |
|
Return the length in bits of the operand_index'th operand.
|
|
Obtain a non-constant pointer to the operands.
Definition at line 172 of file xed-decoded-inst.h. |
|
Obtain a constant pointer to the operands.
Definition at line 166 of file xed-decoded-inst.h. |
|
Set the branch displacement using a BYTE length.
|
|
Set the branch displacement a BITS length.
|
|
Set the signed immediate a BYTE length.
|
|
Set the signed immediate a BITS length.
|
|
Set the unsigned immediate a BYTE length.
|
|
Set the unsigned immediate a BITS length.
|
|
Set a user-specified xed_chip_enum_t chip name for restricting decode.
Definition at line 300 of file xed-decoded-inst.h. |
|
Set the memory displacement using a BYTE length.
|
|
Set the memory displacement a BITS length.
|
|
Set the machine mode and stack addressing width directly. This is NOT a full initialization; Call xed_decoded_inst_zero() before using this if you want a clean slate. Definition at line 231 of file xed-decoded-inst.h. |
|
|
|
|
|
Modify the user data field.
Definition at line 559 of file xed-decoded-inst.h. |
|
This returns 1 if the flags are read or written. This will return 0 otherwise. This will return 0 if the flags are really not used by this instruction. For some shifts/rotates, XED puts a flags operand in the operand array before it knows if the flags are used because of mode-dependent masking effects on the immediate. |
|
Return true if the instruction is valid.
Definition at line 113 of file xed-decoded-inst.h. |
|
Indicate if this decoded instruction is valid for the specified xed_chip_enum_t chip.
|
|
Zero the decode structure completely. Re-initializes all operands. |
|
Zero the decode structure, but preserve the existing machine state/mode information. Re-initializes all operands. |
|
Zero the decode structure, but copy the existing machine state/mode information from the supplied operands pointer. Same as xed_decoded_inst_zero_keep_mode. |
|
Zero the decode structure, but set the machine state/mode information. Re-initializes all operands. |
|
xed_inst_cpl() is DEPRECATED. Please use "xed_decoded_inst_get_attribute(xedd, XED_ATTRIBUTE_RING0)" instead. Return the current privilege level (CPL) required for execution, 0 or 3. If the value is zero, then the instruction can only execute in ring 0. |
|
Return xed_exception_enum_t if present for the specified instruction. This is currently only used for SSE and AVX instructions. Definition at line 346 of file xed-inst.h. |
|
Scan for the attribute attr and return 1 if it is found, 0 otherwise.
|
|
Return the attributes bit vector.
|
|
Number of instruction operands.
Definition at line 298 of file xed-inst.h. |
|
Obtain a pointer to an individual operand.
Definition at line 305 of file xed-inst.h. |
|
Return the base of instruction table.
|
|
If the operand has a conditional read (may also write).
|
|
If the operand has a conditional write (may also read).
|
|
Definition at line 156 of file xed-inst.h. |
|
Tests the enum for inclusion in XED_OPERAND_{BASE0,BASE1,INDEX,SEG0,SEG1}.
Definition at line 184 of file xed-inst.h. |
|
Tests the enum for inclusion in XED_OPERAND_REG0 through XED_OPERAND_REG15.
Definition at line 176 of file xed-inst.h. |
|
Definition at line 86 of file xed-inst.h. |
|
Definition at line 120 of file xed-inst.h. |
|
Definition at line 93 of file xed-inst.h. |
|
Print the operand p into the buffer buf, of length buflen.
|
|
If the operand is read, including conditional reads.
|
|
If the operand is read-and-written, conditional reads and conditional writes.
|
|
If the operand is read-only, including conditional reads.
|
|
Careful with this one -- use xed_decoded_inst_get_reg()! This one is probably not what you think it is. It is only used for hard-coded registers implicit in the instruction encoding. Most likely you want to get the xed_operand_enum_t and then look up the instruction using xed_decoded_inst_get_reg(). The hard-coded registers are also available that way.
Definition at line 133 of file xed-inst.h. |
|
Returns the raw R/W action. There are many cases for conditional reads and writes. Definition at line 199 of file xed-inst.h. |
|
Careful with this one; See xed_operand_is_register().
Definition at line 149 of file xed-inst.h. |
|
Definition at line 101 of file xed-inst.h. |
|
Definition at line 114 of file xed-inst.h. |
|
If the operand is written, including conditional writes.
|
|
If the operand is written-only, including conditional writes.
|
|
Definition at line 108 of file xed-inst.h. |