|
Intel® X86 Encoder Decoder
|
#include "xed-common-hdrs.h"#include "xed-types.h"#include "xed-portability.h"#include <stdlib.h>#include <stdio.h>Macros | |
| #define | XED2DIE(x) do { xed_assert(0); } while(0) |
| #define | XED2IMSG(x) |
| #define | XED2TMSG(x) |
| #define | XED2VMSG(x) |
| #define | xed_assert(x) do { } while(0) |
| #define | XED_EMIT_MESSAGES (0) |
| #define | XED_FUNCNAME "" |
| #define | XED_INFO2_VERBOSE (0) |
| #define | XED_INFO_VERBOSE (0) |
| #define | XED_MORE_VERBOSE (0) |
| #define | XED_VERBOSE (0) |
| #define | XED_VERY_VERBOSE (0) |
API Input Validation | |
Macros for validating API inputs at function boundaries These macros provide runtime validation of API inputs with minimal overhead. They are enabled by default and can be disabled with the –no-api-check build flag. When disabled, they compile to no-ops that suppress unused variable warnings. | |
| #define | api_check(cond) do { (void)(cond); } while(0) |
| When API checks are disabled, cast to void to suppress warnings. More... | |
Typedefs | |
| typedef void(* | xed_user_abort_function_t) (const char *msg, const char *file, int line, void *other) |
Variables | |
| int | xed_verbose |
| #define api_check | ( | cond | ) | do { (void)(cond); } while(0) |
When API checks are disabled, cast to void to suppress warnings.
| #define XED2DIE | ( | x | ) | do { xed_assert(0); } while(0) |
| #define XED2IMSG | ( | x | ) |
| #define XED2TMSG | ( | x | ) |
| #define XED2VMSG | ( | x | ) |
| #define xed_assert | ( | x | ) | do { } while(0) |
| #define XED_EMIT_MESSAGES (0) |
| #define XED_FUNCNAME "" |
| #define XED_INFO2_VERBOSE (0) |
| #define XED_INFO_VERBOSE (0) |
| #define XED_MORE_VERBOSE (0) |
| #define XED_VERBOSE (0) |
| #define XED_VERY_VERBOSE (0) |
| typedef void(* xed_user_abort_function_t) (const char *msg, const char *file, int line, void *other) |
| XED_DLL_EXPORT xed_uint8_t xed_get_byte | ( | xed_uint64_t | x, |
| unsigned int | i, | ||
| unsigned int | len | ||
| ) |
| XED_NORETURN XED_NOINLINE XED_DLL_EXPORT void xed_internal_assert | ( | const char * | s, |
| const char * | file, | ||
| int | line | ||
| ) |
| XED_DLL_EXPORT int xed_itoa | ( | char * | buf, |
| xed_uint64_t | f, | ||
| int | buflen | ||
| ) |
| XED_DLL_EXPORT int xed_itoa_bin | ( | char * | buf, |
| xed_uint64_t | f, | ||
| xed_uint_t | bits_to_print, | ||
| xed_uint_t | buflen | ||
| ) |
Convert the input value f into its binary representation as a string and store it in buf.
| buf | Pointer to the character array where the binary representation will be stored. |
| f | Input value to be converted. |
| bits_to_print | Number of bits to print (limited to 64 bits). |
| buflen | Length of the buf array. |
| XED_DLL_EXPORT int xed_itoa_hex | ( | char * | buf, |
| xed_uint64_t | f, | ||
| xed_uint_t | bits_to_print, | ||
| int | buflen | ||
| ) |
defaults to lowercase
| XED_DLL_EXPORT int xed_itoa_hex_ul | ( | char * | buf, |
| xed_uint64_t | f, | ||
| xed_uint_t | bits_to_print, | ||
| xed_bool_t | leading_zeros, | ||
| int | buflen, | ||
| xed_bool_t | lowercase | ||
| ) |
| XED_DLL_EXPORT int xed_itoa_hex_zeros | ( | char * | buf, |
| xed_uint64_t | f, | ||
| xed_uint_t | bits_to_print, | ||
| xed_bool_t | leading_zeros, | ||
| int | buflen | ||
| ) |
defaults to lowercase
|
static |
|
static |
| XED_DLL_EXPORT void xed_set_log_file | ( | void * | o | ) |
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_DLL_EXPORT void xed_set_verbosity | ( | int | v | ) |
Set the verbosity level for XED.
| XED_DLL_EXPORT xed_uint_t xed_shortest_width_signed | ( | xed_int64_t | x, |
| xed_uint8_t | legal_widths | ||
| ) |
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_DLL_EXPORT xed_uint_t xed_shortest_width_unsigned | ( | xed_uint64_t | x, |
| xed_uint8_t | legal_widths | ||
| ) |
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_DLL_EXPORT xed_int32_t xed_sign_extend16_32 | ( | xed_int16_t | x | ) |
| XED_DLL_EXPORT xed_int64_t xed_sign_extend16_64 | ( | xed_int16_t | x | ) |
| XED_DLL_EXPORT xed_int64_t xed_sign_extend32_64 | ( | xed_int32_t | x | ) |
| XED_DLL_EXPORT xed_int16_t xed_sign_extend8_16 | ( | xed_int8_t | x | ) |
| XED_DLL_EXPORT xed_int32_t xed_sign_extend8_32 | ( | xed_int8_t | x | ) |
| XED_DLL_EXPORT xed_int64_t xed_sign_extend8_64 | ( | xed_int8_t | x | ) |
| XED_DLL_EXPORT xed_int32_t xed_sign_extend_arbitrary_to_32 | ( | xed_uint32_t | x, |
| unsigned int | bits | ||
| ) |
arbitrary sign extension from a qty of "bits" length to 32b
| XED_DLL_EXPORT xed_int64_t xed_sign_extend_arbitrary_to_64 | ( | xed_uint64_t | x, |
| unsigned int | bits | ||
| ) |
arbitrary sign extension from a qty of "bits" length to 64b
| XED_DLL_EXPORT xed_uint32_t xed_zero_extend16_32 | ( | xed_uint16_t | x | ) |
| XED_DLL_EXPORT xed_uint64_t xed_zero_extend16_64 | ( | xed_uint16_t | x | ) |
| XED_DLL_EXPORT xed_uint64_t xed_zero_extend32_64 | ( | xed_uint32_t | x | ) |
| XED_DLL_EXPORT xed_uint16_t xed_zero_extend8_16 | ( | xed_uint8_t | x | ) |
| XED_DLL_EXPORT xed_uint32_t xed_zero_extend8_32 | ( | xed_uint8_t | x | ) |
| XED_DLL_EXPORT xed_uint64_t xed_zero_extend8_64 | ( | xed_uint8_t | x | ) |
| int xed_verbose |