Module xed_sys::xed_interface
[−]
[src]
Structs
__BindgenUnionField | |
xed_attributes_t | |
xed_chip_features_t |
@ingroup ISASET |
xed_cpuid_rec_t | |
xed_decoded_inst_s |
@ingroup DEC The main container for instructions. After decode, it holds an array of operands with derived information from decode and also valid |
xed_decoded_inst_s__bindgen_ty_1 | |
xed_decoded_inst_s__bindgen_ty_2 | |
xed_decoder_vars_s | |
xed_enc_displacement_t | |
xed_encoder_iforms_s | |
xed_encoder_instruction_t | |
xed_encoder_operand_t | |
xed_encoder_operand_t__bindgen_ty_1 | |
xed_encoder_operand_t__bindgen_ty_1__bindgen_ty_1 | |
xed_encoder_prefixes_t | |
xed_encoder_prefixes_t__bindgen_ty_1 | |
xed_encoder_vars_s | |
xed_flag_enum_s |
@ingroup FLAGS Associated with each flag field there can be one action. |
xed_flag_set_s |
@ingroup FLAGS a union of flags bits |
xed_flag_set_s__bindgen_ty_1 | |
xed_format_options_t |
Options for the disasembly formatting functions. Set once during initialization by a calling #xed_format_set_options @ingroup PRINT |
xed_iform_info_s |
@ingroup IFORM Statically available information about iforms. Values are returned by #xed_iform_map(). |
xed_inst_s |
@ingroup DEC constant information about a decoded instruction form, including the pointer to the constant operand properties #xed_operand_t for this instruction form. |
xed_memop_t | |
xed_operand_s |
@ingroup DEC Constant information about an individual generic operand, like an operand template, describing the operand properties. See @ref DEC for API information. |
xed_operand_s__bindgen_ty_1 | |
xed_operand_storage_s | |
xed_print_info_t |
@ingroup PRINT This contains the information used by the various disassembly printers. Call xed_init_print_info to initialize the fields. Then change the required and optional fields when required. |
xed_simple_flag_s |
@ingroup FLAGS A collection of #xed_flag_action_t's and unions of read and written flags |
xed_state_s |
Encapsulates machine modes for decoder/encoder requests. It specifies the machine operating mode as a |
xed_union16_t | |
xed_union16_t__bindgen_ty_1 | |
xed_union32_t | |
xed_union32_t__bindgen_ty_1 | |
xed_union32_t__bindgen_ty_2 | |
xed_union64_t | |
xed_union64_t__bindgen_ty_1 | |
xed_union64_t__bindgen_ty_2 | |
xed_union64_t__bindgen_ty_3 |
Enums
Constants
Statics
xed_verbose |
Functions
str2xed_address_width_enum_t⚠ | |
str2xed_attribute_enum_t⚠ | |
str2xed_category_enum_t⚠ | |
str2xed_chip_enum_t⚠ | |
str2xed_cpuid_bit_enum_t⚠ | |
str2xed_error_enum_t⚠ | |
str2xed_exception_enum_t⚠ | |
str2xed_extension_enum_t⚠ | |
str2xed_flag_action_enum_t⚠ | |
str2xed_flag_enum_t⚠ | |
str2xed_iclass_enum_t⚠ | |
str2xed_iform_enum_t⚠ | |
str2xed_isa_set_enum_t⚠ | |
str2xed_machine_mode_enum_t⚠ | |
str2xed_nonterminal_enum_t⚠ | |
str2xed_operand_action_enum_t⚠ | |
str2xed_operand_convert_enum_t⚠ | |
str2xed_operand_element_type_enum_t⚠ | |
str2xed_operand_element_xtype_enum_t⚠ | |
str2xed_operand_enum_t⚠ | |
str2xed_operand_type_enum_t⚠ | |
str2xed_operand_visibility_enum_t⚠ | |
str2xed_operand_width_enum_t⚠ | |
str2xed_reg_class_enum_t⚠ | |
str2xed_reg_enum_t⚠ | |
str2xed_syntax_enum_t⚠ | |
xed3_get_generic_operand⚠ | |
xed3_set_generic_operand⚠ | |
xed_address_width_enum_t2str⚠ | |
xed_address_width_enum_t_last⚠ | |
xed_agen⚠ |
Using the registered callbacks, compute the memory address for a specified memop in a decoded instruction. memop_index can have the value 0 for XED_OPERAND_MEM0, XED_OPERAND_AGEN, or 1 for XED_OPERAND_MEM1. Any other value results in an error being returned. The context parameter which is passed to the registered callbacks can be used to identify which thread's state is being referenced. The context parameter can also be used to specify which element of a vector register should be returned for gather an scatter operations. @ingroup AGEN |
xed_agen_register_callback⚠ |
Initialize the callback functions. Tell XED what to call when using |
xed_attribute⚠ |
@ingroup DEC Return the i'th global attribute in a linear sequence, independent of any instruction. This is used for scanning and printing all attributes. |
xed_attribute_enum_t2str⚠ | |
xed_attribute_enum_t_last⚠ | |
xed_attribute_max⚠ |
@ingroup DEC Return the maximum number of defined attributes, independent of any instruction. |
xed_category_enum_t2str⚠ | |
xed_category_enum_t_last⚠ | |
xed_chip_enum_t2str⚠ | |
xed_chip_enum_t_last⚠ | |
xed_classify_avx⚠ |
@ingroup DEC True for AVX/AVX2 SIMD VEX-encoded operations. Does not include BMI/BMI2 instructions. |
xed_classify_avx512⚠ |
@ingroup DEC True for AVX512 (EVEX-encoded) SIMD and (VEX encoded) K-mask instructions |
xed_classify_avx512_maskop⚠ |
@ingroup DEC True for AVX512 (VEX-encoded) K-mask operations |
xed_classify_sse⚠ |
@ingroup DEC True for SSE/SSE2/etc. SIMD operations. Includes AES and PCLMULQDQ |
xed_convert_to_encoder_request⚠ |
@ingroup ENCHL convert a #xed_encoder_instruction_t to a #xed_encoder_request_t for encoding |
xed_cpuid_bit_enum_t2str⚠ | |
xed_cpuid_bit_enum_t_last⚠ | |
xed_decode⚠ |
This is the main interface to the decoder. @param xedd the decoded instruction of type #xed_decoded_inst_t . Mode/state sent in via xedd; See the #xed_state_t @param itext the pointer to the array of instruction text bytes @param bytes the length of the itext input array. 1 to 15 bytes, anything more is ignored. @return #xed_error_enum_t indicating success (#XED_ERROR_NONE) or failure. Note failure can be due to not enough bytes in the input array. |
xed_decode_with_features⚠ |
@ingroup DEC See #xed_decode(). This version of the decode API adds a CPUID feature vector to support restricting decode based on both a specified chip via |
xed_decoded_inst_conditionally_writes_registers⚠ |
@ingroup DEC |
xed_decoded_inst_dump⚠ |
@ingroup PRINT Print out all the information about the decoded instruction to the buffer buf whose length is maximally buflen. This is for debugging. |
xed_decoded_inst_dump_xed_format⚠ |
@ingroup PRINT Print the instruction information in a verbose format. This is for debugging. @param p a #xed_decoded_inst_t for a decoded instruction @param buf a buffer to write the disassembly in to. @param buflen maximum length of the disassembly buffer @param runtime_address the address of the instruction being disassembled. If zero, the offset is printed for relative branches. If nonzero, XED attempts to print the target address for relative branches. @return Returns 0 if the disassembly fails, 1 otherwise. |
xed_decoded_inst_get_attribute⚠ |
@ingroup DEC Returns 1 if the attribute is defined for this instruction. |
xed_decoded_inst_get_attributes⚠ |
@ingroup DEC Returns the attribute bitvector |
xed_decoded_inst_get_base_reg⚠ |
@ingroup DEC |
xed_decoded_inst_get_branch_displacement⚠ |
@ingroup DEC |
xed_decoded_inst_get_branch_displacement_width⚠ |
@ingroup DEC Result in BYTES |
xed_decoded_inst_get_branch_displacement_width_bits⚠ |
@ingroup DEC Result in BITS |
xed_decoded_inst_get_immediate_is_signed⚠ |
@ingroup DEC Return true if the first immediate (IMM0) is signed |
xed_decoded_inst_get_immediate_width⚠ |
@ingroup DEC Return the immediate width in BYTES. |
xed_decoded_inst_get_immediate_width_bits⚠ |
@ingroup DEC Return the immediate width in BITS. |
xed_decoded_inst_get_index_reg⚠ | |
xed_decoded_inst_get_memop_address_width⚠ |
@ingroup DEC |
xed_decoded_inst_get_memory_displacement⚠ |
@ingroup DEC |
xed_decoded_inst_get_memory_displacement_width⚠ |
@ingroup DEC Result in BYTES |
xed_decoded_inst_get_memory_displacement_width_bits⚠ |
@ingroup DEC Result in BITS |
xed_decoded_inst_get_memory_operand_length⚠ |
returns bytes @ingroup DEC |
xed_decoded_inst_get_modrm⚠ |
@ingroup DEC Returns the modrm byte |
xed_decoded_inst_get_nprefixes⚠ |
@ingroup DEC Returns the number of legacy prefixes. |
xed_decoded_inst_get_operand_width⚠ |
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 function provides a information for that is only useful for (scalable) GPR-operations. Individual operands have more specific information available from |
xed_decoded_inst_get_reg⚠ |
@ingroup DEC Return the specified register operand. The specifier is of type |
xed_decoded_inst_get_rflags_info⚠ |
See the comment on xed_decoded_inst_uses_rflags(). This can return 0 if the flags are really not used by this instruction. @ingroup DEC |
xed_decoded_inst_get_scale⚠ |
@ingroup DEC |
xed_decoded_inst_get_seg_reg⚠ |
@ingroup DEC |
xed_decoded_inst_get_signed_immediate⚠ |
@ingroup DEC |
xed_decoded_inst_get_unsigned_immediate⚠ |
@ingroup DEC |
xed_decoded_inst_has_mpx_prefix⚠ |
@ingroup DEC Returns 1 if the instruction has mpx prefix. |
xed_decoded_inst_is_broadcast⚠ |
@ingroup DEC Return 1 for broadcast instructions or AVX512 load-op instructions using the broadcast feature 0 otherwise. Logical OR of |
xed_decoded_inst_is_broadcast_instruction⚠ |
@ingroup DEC Return 1 for broadcast instruction. (NOT including AVX512 load-op instructions) 0 otherwise. Just a category check. |
xed_decoded_inst_is_prefetch⚠ |
@ingroup DEC Returns true if the instruction is a prefetch |
xed_decoded_inst_is_xacquire⚠ |
@ingroup DEC Returns 1 if the instruction is xacquire. |
xed_decoded_inst_is_xrelease⚠ |
@ingroup DEC Returns 1 if the instruction is xrelease. |
xed_decoded_inst_masked_vector_operation⚠ |
@ingroup DEC Returns 1 iff the instruction uses destination-masking. This is 0 for blend operations that use their mask field as a control. |
xed_decoded_inst_masking⚠ |
Returns true if the instruction uses write-masking @ingroup DEC |
xed_decoded_inst_mem_read⚠ |
@ingroup DEC |
xed_decoded_inst_mem_written⚠ |
@ingroup DEC |
xed_decoded_inst_mem_written_only⚠ |
@ingroup DEC |
xed_decoded_inst_merging⚠ |
Returns true if the instruction uses write-masking with merging @ingroup DEC |
xed_decoded_inst_number_of_memory_operands⚠ |
@ingroup DEC |
xed_decoded_inst_operand_action⚠ |
Interpret the operand action in light of AVX512 masking and zeroing/merging. If masking and merging are used together, the dest operand may also be read. If masking and merging are used together, the elemnents of dest operand register may be conditionally written (so that input values live on in the output register). @ingroup DEC |
xed_decoded_inst_operand_element_size_bits⚠ |
Return the size of an element in bits (for SSE and AVX operands) @ingroup DEC |
xed_decoded_inst_operand_element_type⚠ |
Return the type of an element of type #xed_operand_element_type_enum_t (for SSE and AVX operands) @ingroup DEC |
xed_decoded_inst_operand_elements⚠ |
Return the number of element in the operand (for SSE and AVX operands) @ingroup DEC |
xed_decoded_inst_operand_length⚠ |
Deprecated -- returns the length in bytes of the operand_index'th operand. Use #xed_decoded_inst_operand_length_bits() instead. @ingroup DEC |
xed_decoded_inst_operand_length_bits⚠ |
Return the length in bits of the operand_index'th operand. @ingroup DEC |
xed_decoded_inst_set_branch_displacement⚠ |
@ingroup DEC Set the branch displacement using a BYTE length |
xed_decoded_inst_set_branch_displacement_bits⚠ |
@ingroup DEC Set the branch displacement a BITS length |
xed_decoded_inst_set_immediate_signed⚠ |
@ingroup DEC Set the signed immediate a BYTE length |
xed_decoded_inst_set_immediate_signed_bits⚠ |
@ingroup DEC Set the signed immediate a BITS length |
xed_decoded_inst_set_immediate_unsigned⚠ |
@ingroup DEC Set the unsigned immediate a BYTE length |
xed_decoded_inst_set_immediate_unsigned_bits⚠ |
@ingroup DEC Set the unsigned immediate a BITS length |
xed_decoded_inst_set_memory_displacement⚠ |
@ingroup DEC Set the memory displacement using a BYTE length |
xed_decoded_inst_set_memory_displacement_bits⚠ |
@ingroup DEC Set the memory displacement a BITS length |
xed_decoded_inst_set_scale⚠ |
@ingroup DEC |
xed_decoded_inst_uses_embedded_broadcast⚠ |
@ingroup DEC Return 1 for AVX512 load-op instructions using the broadcast feature, 0 otherwise. |
xed_decoded_inst_uses_rflags⚠ |
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. @ingroup DEC |
xed_decoded_inst_valid_for_chip⚠ |
Indicate if this decoded instruction is valid for the specified |
xed_decoded_inst_vector_length_bits⚠ |
@ingroup DEC Returns 128, 256 or 512 for operations in the VEX, EVEX (or XOP) encoding space and returns 0 for (most) nonvector operations. This usually the content of the VEX.L or EVEX.LL field, reinterpreted. Some GPR instructions (like the BMI1/BMI2) are encoded in the VEX space and return non-zero values from this API. |
xed_decoded_inst_zero⚠ |
@ingroup DEC Zero the decode structure completely. Re-initializes all operands. |
xed_decoded_inst_zero_keep_mode⚠ |
@ingroup DEC Zero the decode structure, but preserve the existing machine state/mode information. Re-initializes all operands. |
xed_decoded_inst_zero_keep_mode_from_operands⚠ |
@ingroup DEC Zero the decode structure, but copy the existing machine state/mode information from the supplied operands pointer. Same as |
xed_decoded_inst_zero_set_mode⚠ |
@ingroup DEC Zero the decode structure, but set the machine state/mode information. Re-initializes all operands. |
xed_decoded_inst_zeroing⚠ |
Returns true if the instruction uses write-masking with zeroing @ingroup DEC |
xed_encode⚠ |
This is the main interface to the encoder. The array should be at most 15 bytes long. The ilen parameter should indicate this length. If the array is too short, the encoder may fail to encode the request. Failure is indicated by a return value of type #xed_error_enum_t that is not equal to #XED_ERROR_NONE. Otherwise, #XED_ERROR_NONE is returned and the length of the encoded instruction is returned in olen. |
xed_encode_nop⚠ |
This function will attempt to encode a NOP of exactly ilen bytes. If such a NOP is not encodeable, then false will be returned. |
xed_encode_request_print⚠ |
@ingroup ENC |
xed_encoder_request_clear_rep⚠ |
@ingroup ENC clear the REP prefix indicator |
xed_encoder_request_get_iclass⚠ |
@ingroup ENC |
xed_encoder_request_get_operand_order⚠ | |
xed_encoder_request_init_from_decode⚠ |
@ingroup ENC Converts an decoder request to a valid encoder request. |
xed_encoder_request_operands⚠ |
@ingroup ENC |
xed_encoder_request_operands_const⚠ |
@ingroup ENC |
xed_encoder_request_set_agen⚠ |
@ingroup ENC |
xed_encoder_request_set_base0⚠ |
@ingroup ENC |
xed_encoder_request_set_base1⚠ |
@ingroup ENC |
xed_encoder_request_set_branch_displacement⚠ |
@ingroup ENC |
xed_encoder_request_set_effective_address_size⚠ |
@ingroup ENC |
xed_encoder_request_set_effective_operand_width⚠ |
@ingroup ENC |
xed_encoder_request_set_iclass⚠ |
@ingroup ENC |
xed_encoder_request_set_index⚠ |
@ingroup ENC |
xed_encoder_request_set_mem0⚠ |
@ingroup ENC |
xed_encoder_request_set_mem1⚠ |
@ingroup ENC |
xed_encoder_request_set_memory_displacement⚠ |
@ingroup ENC |
xed_encoder_request_set_memory_operand_length⚠ |
@ingroup ENC |
xed_encoder_request_set_operand_order⚠ | |
xed_encoder_request_set_ptr⚠ |
@ingroup ENC |
xed_encoder_request_set_reg⚠ | |
xed_encoder_request_set_relbr⚠ |
@ingroup ENC |
xed_encoder_request_set_rep⚠ |
@ingroup ENC for REP(F3) prefix on string ops |
xed_encoder_request_set_repne⚠ |
@ingroup ENC for REPNE(F2) prefix on string ops |
xed_encoder_request_set_scale⚠ |
@ingroup ENC |
xed_encoder_request_set_seg0⚠ |
@ingroup ENC |
xed_encoder_request_set_seg1⚠ |
@ingroup ENC |
xed_encoder_request_set_simm⚠ |
@ingroup ENC same storage as uimm0 |
xed_encoder_request_set_uimm0⚠ |
@ingroup ENC Set the uimm0 using a BYTE width. |
xed_encoder_request_set_uimm1⚠ |
@ingroup ENC |
xed_encoder_request_set_uimm0_bits⚠ |
@ingroup ENC Set the uimm0 using a BIT width. |
xed_encoder_request_zero⚠ |
@ingroup ENC |
xed_encoder_request_zero_operand_order⚠ | |
xed_encoder_request_zero_set_mode⚠ |
@ingroup ENC |
xed_error_enum_t2str⚠ | |
xed_error_enum_t_last⚠ | |
xed_exception_enum_t2str⚠ | |
xed_exception_enum_t_last⚠ | |
xed_extension_enum_t2str⚠ | |
xed_extension_enum_t_last⚠ | |
xed_flag_action_action_invalid⚠ |
@ingroup FLAGS |
xed_flag_action_enum_t2str⚠ | |
xed_flag_action_enum_t_last⚠ | |
xed_flag_action_get_action⚠ |
@ingroup FLAGS |
xed_flag_action_get_flag_name⚠ |
@ingroup FLAGS |
xed_flag_action_print⚠ |
@ingroup FLAGS |
xed_flag_action_read_action⚠ |
@ingroup FLAGS |
xed_flag_action_read_flag⚠ |
@ingroup FLAGS |
xed_flag_action_write_action⚠ |
@ingroup FLAGS |
xed_flag_action_writes_flag⚠ |
@ingroup FLAGS |
xed_flag_enum_t2str⚠ | |
xed_flag_enum_t_last⚠ | |
xed_flag_set_is_subset_of⚠ |
@ingroup FLAGS returns true if this object has a subset of the flags of the "other" object. |
xed_flag_set_print⚠ |
@ingroup FLAGS print the flag set in the supplied buffer |
xed_format_context⚠ |
Disassemble the decoded instruction using the specified syntax. The output buffer must be at least 25 bytes long. Returns true if disassembly proceeded without errors. @param syntax a #xed_syntax_enum_t the specifies the disassembly format @param xedd a #xed_decoded_inst_t for a decoded instruction @param out_buffer a buffer to write the disassembly in to. @param buffer_len maximum length of the disassembly buffer @param runtime_instruction_address the address of the instruction being disassembled. If zero, the offset is printed for relative branches. If nonzero, XED attempts to print the target address for relative branches. @param context A void* used only for the call back routine for symbolic disassembly if one is provided. Can be zero. @param symbolic_callback A function pointer for obtaining symbolic disassembly. Can be zero. @return Returns 0 if the disassembly fails, 1 otherwise. @ingroup PRINT |
xed_format_generic⚠ |
@ingroup PRINT Disassemble the instruction information to a buffer. See the |
xed_format_set_options⚠ |
Optionally, customize the disassembly formatting options by passing in a #xed_format_options_t structure. @ingroup PRINT |
xed_get_byte⚠ | |
xed_get_chip_features⚠ |
fill in the contents of p with the vector of chip features. |
xed_get_copyright⚠ |
@ingroup INIT Returns a copyright string. |
xed_get_cpuid_bit_for_isa_set⚠ |
Returns the name of the i'th cpuid bit associated with this isa-set. Call this repeatedly, with 0 <= i < XED_MAX_CPUID_BITS_PER_ISA_SET. Give up when i == XED_MAX_CPUID_BITS_PER_ISA_SET or the return value is XED_CPUID_BIT_INVALID. |
xed_get_cpuid_rec⚠ |
This provides the details of the CPUID bit specification, if the enumeration value is not sufficient. Returns 1 on success and fills in the structure pointed to by p. Returns 0 on failure. |
xed_get_largest_enclosing_register⚠ |
Returns the largest enclosing register for any kind of register; This is mostly useful for GPRs. (64b mode assumed) @ingroup REGINTFC |
xed_get_largest_enclosing_register32⚠ |
Returns the largest enclosing register for any kind of register; This is mostly useful for GPRs in 32b mode. @ingroup REGINTFC |
xed_get_register_width_bits⚠ |
Returns the width, in bits, of the named register. 32b mode @ingroup REGINTFC |
xed_get_register_width_bits64⚠ |
Returns the width, in bits, of the named register. 64b mode. @ingroup REGINTFC |
xed_get_version⚠ |
@ingroup INIT Returns a string representing XED svn commit revision and time stamp. |
xed_gpr_reg_class⚠ |
Returns the specific width GPR reg class (like XED_REG_CLASS_GPR32 or XED_REG_CLASS_GPR64) for a given GPR register. Or XED_REG_INVALID if not a GPR. @ingroup REGINTFC |
xed_iclass_enum_t2str⚠ | |
xed_iclass_enum_t_last⚠ | |
xed_iform_enum_t2str⚠ | |
xed_iform_enum_t_last⚠ | |
xed_iform_first_per_iclass⚠ |
@ingroup IFORM Return the first of the iforms for a particular iclass. This function returns valid data as soon as global data is initialized. (This function does not require a decoded instruction as input). |
xed_iform_map⚠ |
@ingroup IFORM Map the #xed_iform_enum_t to a pointer to a #xed_iform_info_t which indicates the #xed_iclass_enum_t, the #xed_category_enum_t and the |
xed_iform_max_per_iclass⚠ |
@ingroup IFORM Return the maximum number of iforms for a particular iclass. This function returns valid data as soon as global data is initialized. (This function does not require a decoded instruction as input). |
xed_iform_to_category⚠ |
@ingroup IFORM Return the category for a given iform. This function returns valid data as soon as global data is initialized. (This function does not require a decoded instruction as input). |
xed_iform_to_extension⚠ |
@ingroup IFORM Return the extension for a given iform. This function returns valid data as soon as global data is initialized. (This function does not require a decoded instruction as input). |
xed_iform_to_iclass_string_att⚠ |
@ingroup IFORM Return a pointer to a character string of the iclass. This translates the internal disambiguated names to the more ambiguous names that people like to see. This returns the ATT SYSV-syntax name. |
xed_iform_to_iclass_string_intel⚠ |
@ingroup IFORM Return a pointer to a character string of the iclass. This translates the internal disambiguated names to the more ambiguous names that people like to see. This returns the Intel-syntax name. |
xed_iform_to_isa_set⚠ |
@ingroup IFORM Return the isa_set for a given iform. This function returns valid data as soon as global data is initialized. (This function does not require a decoded instruction as input). |
xed_iformfl_enum_t_last⚠ | |
xed_ild_decode⚠ |
This function just does instruction length decoding. It does not return a fully decoded instruction. @param xedd the decoded instruction of type #xed_decoded_inst_t . Mode/state sent in via xedd; See the #xed_state_t . @param itext the pointer to the array of instruction text bytes @param bytes the length of the itext input array. 1 to 15 bytes, anything more is ignored. @return #xed_error_enum_t indicating success (#XED_ERROR_NONE) or failure. Only two failure codes are valid for this function: #XED_ERROR_BUFFER_TOO_SHORT and #XED_ERROR_GENERAL_ERROR. In general this function cannot tell if the instruction is valid or not. For valid instructions, XED can figure out if enough bytes were provided to decode the instruction. If not enough were provided, XED returns #XED_ERROR_BUFFER_TOO_SHORT. From this function, the #XED_ERROR_GENERAL_ERROR is an indication that XED could not decode the instruction's length because the instruction was so invalid that even its length may across implmentations. |
xed_init_print_info⚠ |
@ingroup PRINT |
xed_inst_cpl⚠ |
@ingroup DEC 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. |
xed_inst_flag_info_index⚠ | |
xed_inst_get_attribute⚠ |
@ingroup DEC Scan for the attribute attr and return 1 if it is found, 0 otherwise. |
xed_inst_get_attributes⚠ |
@ingroup DEC Return the attributes bit vector |
xed_inst_operand⚠ |
@ingroup DEC Obtain a pointer to an individual operand |
xed_inst_table_base⚠ |
@ingroup DEC Return the base of instruction table. |
xed_internal_assert⚠ | |
xed_isa_set_enum_t2str⚠ | |
xed_isa_set_enum_t_last⚠ | |
xed_itoa⚠ | |
xed_itoa_hex⚠ |
defaults to lowercase |
xed_itoa_hex_ul⚠ | |
xed_itoa_hex_zeros⚠ |
defaults to lowercase |
xed_machine_mode_enum_t2str⚠ | |
xed_machine_mode_enum_t_last⚠ | |
xed_modify_chip_features⚠ |
present = 1 to turn the feature on. present=0 to remove the feature. |
xed_nonterminal_enum_t2str⚠ | |
xed_nonterminal_enum_t_last⚠ | |
xed_norep_map⚠ |
@ingroup DEC Take an #xed_iclass_enum_t value for an instruction with a REP/REPNE/REPE prefix and return the corresponding #xed_iclass_enum_t without that prefix. If the input instruction does not have a REP/REPNE/REPE prefix, this function returns XED_ICLASS_INVALID. |
xed_operand_action_conditional_read⚠ | |
xed_operand_action_conditional_write⚠ | |
xed_operand_action_enum_t2str⚠ | |
xed_operand_action_enum_t_last⚠ | |
xed_operand_action_read⚠ | |
xed_operand_action_read_and_written⚠ | |
xed_operand_action_read_only⚠ | |
xed_operand_action_written⚠ | |
xed_operand_action_written_only⚠ | |
xed_operand_conditional_read⚠ |
@ingroup DEC If the operand has a conditional read (may also write) |
xed_operand_conditional_write⚠ |
@ingroup DEC If the operand has a conditional write (may also read) |
xed_operand_convert_enum_t2str⚠ | |
xed_operand_convert_enum_t_last⚠ | |
xed_operand_element_type_enum_t2str⚠ | |
xed_operand_element_type_enum_t_last⚠ | |
xed_operand_element_xtype_enum_t2str⚠ | |
xed_operand_element_xtype_enum_t_last⚠ | |
xed_operand_enum_t2str⚠ | |
xed_operand_enum_t_last⚠ | |
xed_operand_print⚠ |
@ingroup DEC Print the operand p into the buffer buf, of length buflen. @param p an operand template, #xed_operand_t. @param buf buffer that gets filled in @param buflen maximum buffer length |
xed_operand_read⚠ |
@ingroup DEC If the operand is read, including conditional reads |
xed_operand_read_and_written⚠ |
@ingroup DEC If the operand is read-and-written, conditional reads and conditional writes |
xed_operand_read_only⚠ |
@ingroup DEC If the operand is read-only, including conditional reads |
xed_operand_type_enum_t2str⚠ | |
xed_operand_type_enum_t_last⚠ | |
xed_operand_values_accesses_memory⚠ |
@ingroup OPERANDS |
xed_operand_values_branch_not_taken_hint⚠ |
@ingroup OPERANDS |
xed_operand_values_branch_taken_hint⚠ |
@ingroup OPERANDS |
xed_operand_values_clear_rep⚠ |
@ingroup OPERANDS |
xed_operand_values_dump⚠ |
@ingroup OPERANDS Dump all the information about the operands to buf. |
xed_operand_values_get_atomic⚠ |
@ingroup OPERANDS |
xed_operand_values_get_base_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_get_branch_displacement_byte⚠ |
@ingroup OPERANDS |
xed_operand_values_get_branch_displacement_int32⚠ |
@ingroup OPERANDS |
xed_operand_values_get_branch_displacement_length⚠ |
@ingroup OPERANDS Return the branch displacement width in bytes |
xed_operand_values_get_branch_displacement_length_bits⚠ |
@ingroup OPERANDS Return the branch displacement width in bits |
xed_operand_values_get_displacement_for_memop⚠ |
@ingroup OPERANDS |
xed_operand_values_get_effective_address_width⚠ |
@ingroup OPERANDS |
xed_operand_values_get_effective_operand_width⚠ |
@ingroup OPERANDS |
xed_operand_values_get_iclass⚠ |
@ingroup OPERANDS |
xed_operand_values_get_immediate_byte⚠ |
@ingroup OPERANDS |
xed_operand_values_get_immediate_int64⚠ |
@ingroup OPERANDS |
xed_operand_values_get_immediate_is_signed⚠ |
@ingroup OPERANDS Return true if the first immediate (IMM0) is signed |
xed_operand_values_get_immediate_uint64⚠ |
@ingroup OPERANDS |
xed_operand_values_get_index_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_get_long_mode⚠ |
@ingroup OPERANDS |
xed_operand_values_get_memory_displacement_byte⚠ |
@ingroup OPERANDS |
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. @ingroup OPERANDS |
xed_operand_values_get_memory_displacement_int64_raw⚠ |
Returns the unscaled (raw) memory displacement. Certain AVX512 memory displacements are scaled before they are used. @ingroup OPERANDS |
xed_operand_values_get_memory_displacement_length⚠ |
@ingroup OPERANDS Return the memory displacement width in BYTES |
xed_operand_values_get_memory_displacement_length_bits⚠ |
@ingroup OPERANDS Return the memory displacement width in BITS |
xed_operand_values_get_memory_displacement_length_bits_raw⚠ |
@ingroup OPERANDS Return the raw memory displacement width in BITS(ignores scaling) |
xed_operand_values_get_memory_operand_length⚠ |
return bytes @ingroup OPERANDS |
xed_operand_values_get_real_mode⚠ |
@ingroup OPERANDS |
xed_operand_values_get_scale⚠ |
@ingroup OPERANDS |
xed_operand_values_get_second_immediate⚠ |
@ingroup OPERANDS |
xed_operand_values_get_seg_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_get_stack_address_width⚠ |
@ingroup OPERANDS |
xed_operand_values_has_66_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_address_size_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_branch_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_has_disp⚠ |
@ingroup OPERANDS |
xed_operand_values_has_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_has_immediate⚠ |
@ingroup OPERANDS |
xed_operand_values_has_lock_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_memory_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_has_modrm_byte⚠ |
@ingroup OPERANDS Returns true if the instruction has a MODRM byte. |
xed_operand_values_has_operand_size_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_real_rep⚠ |
@ingroup OPERANDS |
xed_operand_values_has_rep_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_repne_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_rexw_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_segment_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_has_sib_byte⚠ |
@ingroup OPERANDS Returns true if the instruction has a SIB byte. |
xed_operand_values_init⚠ |
@ingroup OPERANDS Initializes operand structure |
xed_operand_values_init_keep_mode⚠ |
@ingroup OPERANDS Initializes dst operand structure but preserves the existing MODE/SMODE values from the src operand structure. |
xed_operand_values_init_set_mode⚠ |
@ingroup OPERANDS Initializes the operand storage and sets mode values. |
xed_operand_values_is_nop⚠ |
@ingroup OPERANDS |
xed_operand_values_is_prefetch⚠ |
@ingroup OPERANDS |
xed_operand_values_lockable⚠ |
@ingroup OPERANDS Returns true if the instruction could be re-encoded to have a lock prefix but does not have one currently. |
xed_operand_values_memop_without_modrm⚠ |
@ingroup OPERANDS |
xed_operand_values_number_of_memory_operands⚠ |
@ingroup OPERANDS |
xed_operand_values_print_short⚠ |
@ingroup OPERANDS More tersely dump all the information about the operands to buf. |
xed_operand_values_segment_prefix⚠ |
@ingroup OPERANDS |
xed_operand_values_set_base_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_set_branch_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_set_branch_displacement_bits⚠ |
@ingroup OPERANDS |
xed_operand_values_set_effective_address_width⚠ |
@ingroup OPERANDS width is bits 16, 32, 64 |
xed_operand_values_set_effective_operand_width⚠ |
@ingroup OPERANDS width is bits 8, 16, 32, 64 |
xed_operand_values_set_iclass⚠ |
@ingroup OPERANDS |
xed_operand_values_set_immediate_signed⚠ |
@ingroup OPERANDS |
xed_operand_values_set_immediate_signed_bits⚠ |
@ingroup OPERANDS |
xed_operand_values_set_immediate_unsigned⚠ |
@ingroup OPERANDS |
xed_operand_values_set_immediate_unsigned_bits⚠ |
@ingroup OPERANDS |
xed_operand_values_set_index_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_set_lock⚠ |
@ingroup OPERANDS |
xed_operand_values_set_memory_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_set_memory_displacement_bits⚠ |
@ingroup OPERANDS |
xed_operand_values_set_memory_operand_length⚠ |
takes bytes, not bits, as an argument @ingroup OPERANDS |
xed_operand_values_set_mode⚠ |
@ingroup OPERANDS Set the mode values |
xed_operand_values_set_operand_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_set_relbr⚠ |
@ingroup OPERANDS |
xed_operand_values_set_scale⚠ |
@ingroup OPERANDS |
xed_operand_values_set_seg_reg⚠ |
@ingroup OPERANDS |
xed_operand_values_using_default_segment⚠ |
@ingroup OPERANDS |
xed_operand_values_zero_branch_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_zero_immediate⚠ |
@ingroup OPERANDS |
xed_operand_values_zero_memory_displacement⚠ |
@ingroup OPERANDS |
xed_operand_values_zero_segment_override⚠ |
@ingroup OPERANDS |
xed_operand_visibility_enum_t2str⚠ | |
xed_operand_visibility_enum_t_last⚠ | |
xed_operand_width_bits⚠ |
@ingroup DEC @param p an operand template, #xed_operand_t. @param eosz effective operand size of the instruction, 1 | 2 | 3 for 16 | 32 | 64 bits respectively. 0 is invalid. @return the actual width of operand in bits. See xed_decoded_inst_operand_length_bits() for a more general solution. |
xed_operand_width_enum_t2str⚠ | |
xed_operand_width_enum_t_last⚠ | |
xed_operand_written⚠ |
@ingroup DEC If the operand is written, including conditional writes |
xed_operand_written_only⚠ |
@ingroup DEC If the operand is written-only, including conditional writes |
xed_reg_class⚠ |
Returns the register class of the given input register. @ingroup REGINTFC |
xed_reg_class_enum_t2str⚠ | |
xed_reg_class_enum_t_last⚠ | |
xed_reg_enum_t2str⚠ | |
xed_reg_enum_t_last⚠ | |
xed_register_abort_function⚠ |
@ingroup INIT This is for registering a function to be called during XED's assert processing. If you do not register an abort function, then the system's abort function will be called. If your supplied function returns, then abort() will still be called. |
xed_rep_map⚠ |
@ingroup DEC Take an #xed_iclass_enum_t value without a REP prefix and return the corresponding #xed_iclass_enum_t with a REP prefix. If the input instruction cannot have a REP prefix, this function returns XED_ICLASS_INVALID. |
xed_rep_remove⚠ |
@ingroup DEC Take an instruction with a REP/REPE/REPNE prefix and return the corresponding xed_iclass_enum_t without that prefix. The return value differs from the other functions in this group: If the input iclass does not have REP/REPNE/REPE prefix, the function returns the original instruction. |
xed_repe_map⚠ |
@ingroup DEC Take an #xed_iclass_enum_t value without a REPE prefix and return the corresponding #xed_iclass_enum_t with a REPE prefix. If the input instruction cannot have have a REPE prefix, this function returns XED_ICLASS_INVALID. |
xed_repne_map⚠ |
@ingroup DEC Take an #xed_iclass_enum_t value without a REPNE prefix and return the corresponding #xed_iclass_enum_t with a REPNE prefix. If the input instruction cannot have a REPNE prefix, this function returns XED_ICLASS_INVALID. |
xed_set_log_file⚠ |
Set the FILE* for XED's log msgs. This takes a FILE* as a void* because some software defines their own FILE* types creating conflicts. |
xed_set_verbosity⚠ |
Set the verbosity level for XED |
xed_shortest_width_signed⚠ |
returns the number of bytes required to store the SIGNED number x given a mask of legal lengths. For the legal_widths argument, bit 0 implies 1 byte is a legal return width, bit 1 implies that 2 bytes is a legal return width, bit 2 implies that 4 bytes is a legal return width. This returns 8 (indicating 8B) if none of the provided legal widths applies. |
xed_shortest_width_unsigned⚠ |
returns the number of bytes required to store the UNSIGNED number x given a mask of legal lengths. For the legal_widths argument, bit 0 implies 1 byte is a legal return width, bit 1 implies that 2 bytes is a legal return width, bit 2 implies that 4 bytes is a legal return width. This returns 8 (indicating 8B) if none of the provided legal widths applies. |
xed_sign_extend16_32⚠ | |
xed_sign_extend16_64⚠ | |
xed_sign_extend32_64⚠ | |
xed_sign_extend8_16⚠ | |
xed_sign_extend8_32⚠ | |
xed_sign_extend8_64⚠ | |
xed_sign_extend_arbitrary_to_32⚠ |
arbitrary sign extension from a qty of "bits" length to 32b |
xed_sign_extend_arbitrary_to_64⚠ |
arbitrary sign extension from a qty of "bits" length to 64b |
xed_simple_flag_get_flag_action⚠ |
@ingroup FLAGS return the specific flag-action. Very detailed low level information |
xed_simple_flag_get_may_write⚠ |
@ingroup FLAGS Indicates the flags are only conditionally written. Usually MAY-writes of the flags instructions that are dependent on a REP count. |
xed_simple_flag_get_must_write⚠ |
@ingroup FLAGS the flags always written |
xed_simple_flag_get_nflags⚠ |
@ingroup FLAGS returns the number of flag-actions |
xed_simple_flag_get_read_flag_set⚠ |
@ingroup FLAGS return union of bits for read flags |
xed_simple_flag_get_undefined_flag_set⚠ |
@ingroup FLAGS |
xed_simple_flag_get_written_flag_set⚠ |
@ingroup FLAGS |
xed_simple_flag_print⚠ |
@ingroup FLAGS |
xed_simple_flag_reads_flags⚠ |
@ingroup FLAGS |
xed_simple_flag_writes_flags⚠ |
@ingroup FLAGS |
xed_state_print⚠ |
@ingroup INIT |
xed_strcat⚠ | |
xed_strcpy⚠ | |
xed_strlen⚠ | |
xed_strncat⚠ |
returns the number of bytes remaining for the next use of |
xed_strncpy⚠ |
returns the number of bytes remaining for the next use of |
xed_syntax_enum_t2str⚠ | |
xed_syntax_enum_t_last⚠ | |
xed_tables_init⚠ |
@ingroup INIT This is the call to initialize the XED encode and decode tables. It must be called once before using XED. |
xed_zero_extend16_32⚠ | |
xed_zero_extend16_64⚠ | |
xed_zero_extend32_64⚠ | |
xed_zero_extend8_16⚠ | |
xed_zero_extend8_32⚠ | |
xed_zero_extend8_64⚠ |
Type Definitions
int_fast16_t | |
int_fast32_t | |
int_fast64_t | |
int_fast8_t | |
int_least16_t | |
int_least32_t | |
int_least64_t | |
int_least8_t | |
intmax_t | |
uint_fast16_t | |
uint_fast32_t | |
uint_fast64_t | |
uint_fast8_t | |
uint_least16_t | |
uint_least32_t | |
uint_least64_t | |
uint_least8_t | |
uintmax_t | |
xed_addr_t | |
xed_bits_t | |
xed_bool_t | |
xed_decoded_inst_t | |
xed_disassembly_callback_fn_t |
@param address The input address for which we want symbolic name and offset @param symbol_buffer A buffer to hold the symbol name. The callback function should fill this in and terminate with a null byte. @param buffer_length The maximum length of the symbol_buffer including then null @param offset A pointer to a xed_uint64_t to hold the offset from the provided symbol. @param context This void* pointer passed to the disassembler's new interface so that the caller can identify the proper context against which to resolve the symbols. The disassembler passes this value to the callback. The legacy formatters that do not have context will pass zero for this parameter. @return 0 on failure, 1 on success. |
xed_encoder_iforms_t | |
xed_encoder_request_s |
@ingroup ENC |
xed_encoder_request_t |
@ingroup ENC |
xed_flag_action_t | |
xed_flag_set_t | |
xed_iform_info_t | |
xed_inst_t | |
xed_int_t | |
xed_operand_extractor_fn_t | |
xed_operand_storage_t | |
xed_operand_t | |
xed_operand_values_t | |
xed_register_callback_fn_t |
A function for obtaining register values. 32b return values should be zero extended to 64b. The error value is set to nonzero if the callback experiences some sort of problem. @ingroup AGEN |
xed_segment_base_callback_fn_t |
A function for obtaining the segment base values. 32b return values should be zero extended zero extended to 64b. The error value is set to nonzero if the callback experiences some sort of problem. @ingroup AGEN |
xed_simple_flag_t | |
xed_state_t | |
xed_uint_t | |
xed_user_abort_function_t |