Intel® X86 Encoder Decoder: Intel® XED initialization

Intel® X86 Encoder Decoder

Loading...
Searching...
No Matches
Intel® XED initialization

## Data Structures
struct | xed_state_s
| Encapsulates machine modes for decoder/encoder requests. More...

## Typedefs
typedef struct xed_state_s | xed_state_t
| Encapsulates machine modes for decoder/encoder requests.

## Functions
XED_DLL_EXPORT char const * | xed_get_copyright (void)
| Returns a copyright string.
XED_DLL_EXPORT char const * | xed_get_version (void)
| Returns a string representing XED svn commit revision and time stamp.
XED_DLL_EXPORT void | xed_register_abort_function (xed_user_abort_function_t fn, void *other)
| This is for registering a function to be called during XED's assert processing.
XED_DLL_EXPORT void | xed_tables_init (void)
| This is the call to initialize the XED encode and decode tables.

## Initialization
static XED_INLINE void | xed_state_init (xed_state_t *p, xed_machine_mode_enum_t arg_mmode, xed_address_width_enum_t arg_ignored, xed_address_width_enum_t arg_stack_addr_width)
| Constructor.
static XED_INLINE void | xed_state_init2 (xed_state_t *p, xed_machine_mode_enum_t arg_mmode, xed_address_width_enum_t arg_stack_addr_width)
| Constructor.
static XED_INLINE void | xed_state_zero (xed_state_t *p)
| clear the xed_state_t

## Machine mode
static XED_INLINE xed_machine_mode_enum_t | xed_state_get_machine_mode (const xed_state_t *p)
| return the machine mode
static XED_INLINE xed_bool_t | xed_state_long64_mode (const xed_state_t *p)
| true iff the machine is in LONG_64 mode
static XED_INLINE xed_bool_t | xed_state_real_mode (const xed_state_t *p)
static XED_INLINE xed_bool_t | xed_state_mode_width_16 (const xed_state_t *p)
static XED_INLINE xed_bool_t | xed_state_mode_width_32 (const xed_state_t *p)
static XED_INLINE void | xed_state_set_machine_mode (xed_state_t *p, xed_machine_mode_enum_t arg_mode)
| Set the machine mode which corresponds to the default data operand size.

## Address width
static XED_INLINE xed_address_width_enum_t | xed_state_get_address_width (const xed_state_t *p)
| return the address width

## Stack address width
static XED_INLINE void | xed_state_set_stack_address_width (xed_state_t *p, xed_address_width_enum_t arg_addr_width)
| set the STACK address width
static XED_INLINE xed_address_width_enum_t | xed_state_get_stack_address_width (const xed_state_t *p)
| Return the STACK address width.
XED_DLL_EXPORT int | xed_state_print (const xed_state_t *p, char *buf, int buflen)

## Detailed Description

This section describes the base class used for initializing the encoder / decoder requests and the Intel® XED library initialization function.

To use Intel® XED, you must include "xed-interface.h"

#include "xed-interface.h"
xed-interface.h

If you are calling Intel® XED from C++, you must wrap this include:

extern "C" {
#include "xed-interface.h"
}

Once, before using Intel® XED, you must call xed_tables_init() to initialize the tables Intel® XED uses for encoding and decoding:

xed_tables_init();
xed_tables_init
XED_DLL_EXPORT void xed_tables_init(void)
This is the call to initialize the XED encode and decode tables.

Once initialized, Intel® XED is reentrant (multithread safe). All values used for encoding and decoding live on the caller's stack or in the passed-in parameters.

If your program is multithreaded, initialize Intel® XED once (and only once) using the above call before you attempt to decode or encode from any thread. Each thread does NOT need to initialize Intel® XED. The idea is to initialize Intel® XED before creating your threads.

## Typedef Documentation

## ◆ xed_state_t

typedef struct xed_state_s xed_state_t

Encapsulates machine modes for decoder/encoder requests.

It specifies the machine operating mode as a xed_machine_mode_enum_t for decoding and encoding. The machine mode corresponds to the default data operand width for that mode. For all modes other than the 64b long mode (XED_MACHINE_MODE_LONG_64), a default addressing width, and a stack addressing width must be supplied of type xed_address_width_enum_t .

## Function Documentation

## ◆ xed_get_copyright()

XED_DLL_EXPORT char const * xed_get_copyright | ( | void |  | ) |

Returns a copyright string.

## ◆ xed_get_version()

XED_DLL_EXPORT char const * xed_get_version | ( | void |  | ) |

Returns a string representing XED svn commit revision and time stamp.

## ◆ xed_register_abort_function()

XED_DLL_EXPORT void xed_register_abort_function | ( | xed_user_abort_function_t | fn,
|  | void * | other )

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.

Parameters

  fn | This is a function pointer for a function that should handle the assertion reporting. The function pointer points to a function that takes 4 arguments: (1) msg, the assertion message, (2) file, the file name, (3) line, the line number (as an integer), and (4) other, a void pointer that is supplied as thei 2nd argument to this registration.
  other | This is a void* that is passed back to your supplied function fn as its 4th argument. It can be zero if you don't need this feature. You can used this to convey whatever additional context to your assertion handler (like FILE* pointers etc.).

## ◆ xed_state_get_address_width()

XED_INLINE xed_address_width_enum_t xed_state_get_address_width | ( | const xed_state_t * | p | ) |
| static

return the address width

## ◆ xed_state_get_machine_mode()

XED_INLINE xed_machine_mode_enum_t xed_state_get_machine_mode | ( | const xed_state_t * | p | ) |
| static

return the machine mode

## ◆ xed_state_get_stack_address_width()

XED_INLINE xed_address_width_enum_t xed_state_get_stack_address_width | ( | const xed_state_t * | p | ) |
| static

Return the STACK address width.

## ◆ xed_state_init()

XED_INLINE void xed_state_init | ( | xed_state_t * | p,
|  | xed_machine_mode_enum_t | arg_mmode,
|  | xed_address_width_enum_t | arg_ignored,
|  | xed_address_width_enum_t | arg_stack_addr_width )
| static

Constructor.

DEPRECATED: use xed_state_init2(). The mode, and addresses widths are enumerations that specify the number of bits. In 64b mode (XED_MACHINE_MODE_LONG_64) the address width and stack address widths are 64b (XED_ADDRESS_WIDTH_64b). In other machine modes, you must specify valid addressing widths.

Parameters

  p | the pointer to the xed_state_t type
  arg_mmode | the machine mode of type xed_machine_mode_enum_t
  arg_ignored | Ignored. The addressing width is now implied by the machine mode implied by arg_mmmode.
  arg_stack_addr_width | the stack address width of type xed_address_width_enum_t (only required if not the mode is not XED_MACHINE_MODE_LONG_64)

## ◆ xed_state_init2()

XED_INLINE void xed_state_init2 | ( | xed_state_t * | p,
|  | xed_machine_mode_enum_t | arg_mmode,
|  | xed_address_width_enum_t | arg_stack_addr_width )
| static

Constructor.

The mode, and addresses widths are enumerations that specify the number of bits. In 64b mode (XED_MACHINE_MODE_LONG_64) the address width and stack address widths are 64b (XED_ADDRESS_WIDTH_64b). In other machine modes, you must specify valid addressing widths.

Parameters

  p | the pointer to the xed_state_t type
  arg_mmode | the machine mode of type xed_machine_mode_enum_t
  arg_stack_addr_width | the stack address width of type xed_address_width_enum_t (only required if not the mode is not XED_MACHINE_MODE_LONG_64)

## ◆ xed_state_long64_mode()

XED_INLINE xed_bool_t xed_state_long64_mode | ( | const xed_state_t * | p | ) |
| static

true iff the machine is in LONG_64 mode

## ◆ xed_state_mode_width_16()

XED_INLINE xed_bool_t xed_state_mode_width_16 | ( | const xed_state_t * | p | ) |
| static

## ◆ xed_state_mode_width_32()

XED_INLINE xed_bool_t xed_state_mode_width_32 | ( | const xed_state_t * | p | ) |
| static

## ◆ xed_state_print()

XED_DLL_EXPORT int xed_state_print | ( | const xed_state_t * | p,
|  | char * | buf,
|  | int | buflen )

## ◆ xed_state_real_mode()

XED_INLINE xed_bool_t xed_state_real_mode | ( | const xed_state_t * | p | ) |
| static

## ◆ xed_state_set_machine_mode()

XED_INLINE void xed_state_set_machine_mode | ( | xed_state_t * | p,
|  | xed_machine_mode_enum_t | arg_mode )
| static

Set the machine mode which corresponds to the default data operand size.

## ◆ xed_state_set_stack_address_width()

XED_INLINE void xed_state_set_stack_address_width | ( | xed_state_t * | p,
|  | xed_address_width_enum_t | arg_addr_width )
| static

set the STACK address width

## ◆ xed_state_zero()

XED_INLINE void xed_state_zero | ( | xed_state_t * | p | ) |
| static

clear the xed_state_t

## ◆ xed_tables_init()

XED_DLL_EXPORT void xed_tables_init | ( | void |  | ) |

This is the call to initialize the XED encode and decode tables.

It must be called once before using XED.