- Main Page
- Modules
- Data Structures
- Files

- Search for |

- File List
- Globals

# xed-encode.h File Reference

`#include "xed-common-hdrs.h"`
`#include "xed-types.h"`
`#include "xed-error-enum.h"`
`#include "xed-operand-values-interface.h"`
`#include "xed-operand-width-enum.h"`
`#include "xed-encoder-iforms.h"`
`#include "xed-encoder-gen-defs.h"`
`#include "xed-decoded-inst.h"`

Go to the source code of this file.

## Encoding

XED_DLL_EXPORT xed_error_enum_t | xed_encode (xed_encoder_request_t *r, xed_uint8_t *array, const unsigned int ilen, unsigned int *olen)
| This is the main interface to the encoder.
XED_DLL_EXPORT xed_error_enum_t | xed_encode_nop (xed_uint8_t *array, const unsigned int ilen)
| This function will attempt to encode a NOP of exactly ilen bytes.

## String Printing

XED_DLL_EXPORT void | xed_encode_request_print (const xed_encoder_request_t *p, char *buf, xed_uint_t buflen)

## Prefixes

XED_DLL_EXPORT void | xed_encoder_request_clear_rep (xed_encoder_request_t *p)
| clear the REP prefix indicator
XED_DLL_EXPORT void | xed_encoder_request_set_lock (xed_encoder_request_t *p)
| For locked (atomic read-modify-write) memops requests.
XED_DLL_EXPORT void | xed_encoder_request_set_rep (xed_encoder_request_t *p)
| for REP(F3) prefix on string ops
XED_DLL_EXPORT void | xed_encoder_request_set_repne (xed_encoder_request_t *p)
| for REPNE(F2) prefix on string ops

## Operand Order

XED_DLL_EXPORT xed_operand_enum_t | xed_encoder_request_get_operand_order (xed_encoder_request_t *p, xed_uint_t operand_index)
static XED_INLINE xed_uint_t | xed_encoder_request_operand_order_entries (xed_encoder_request_t *p)
| Retreive the number of entries in the encoder operand order array.
XED_DLL_EXPORT void | xed_encoder_request_set_operand_order (xed_encoder_request_t *p, xed_uint_t operand_index, xed_operand_enum_t name)

## Memory

XED_DLL_EXPORT void | xed_encoder_request_set_agen (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_set_base0 (xed_encoder_request_t *p, xed_reg_enum_t base_reg)
XED_DLL_EXPORT void | xed_encoder_request_set_base1 (xed_encoder_request_t *p, xed_reg_enum_t base_reg)
XED_DLL_EXPORT void | xed_encoder_request_set_index (xed_encoder_request_t *p, xed_reg_enum_t index_reg)
XED_DLL_EXPORT void | xed_encoder_request_set_mem0 (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_set_mem1 (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_set_memory_displacement (xed_encoder_request_t *p, xed_int64_t memdisp, xed_uint_t nbytes)
XED_DLL_EXPORT void | xed_encoder_request_set_memory_operand_length (xed_encoder_request_t *p, xed_uint_t nbytes)
XED_DLL_EXPORT void | xed_encoder_request_set_scale (xed_encoder_request_t *p, xed_uint_t scale)
XED_DLL_EXPORT void | xed_encoder_request_set_seg0 (xed_encoder_request_t *p, xed_reg_enum_t seg_reg)
XED_DLL_EXPORT void | xed_encoder_request_set_seg1 (xed_encoder_request_t *p, xed_reg_enum_t seg_reg)

## branches and far pointers

XED_DLL_EXPORT void | xed_encoder_request_set_branch_displacement (xed_encoder_request_t *p, xed_int32_t brdisp, xed_uint_t nbytes)
XED_DLL_EXPORT void | xed_encoder_request_set_ptr (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_set_relbr (xed_encoder_request_t *p)

## Primary Encode Functions

XED_DLL_EXPORT void | xed_encoder_request_set_effective_address_size (xed_encoder_request_t *p, xed_uint_t width_bits)
XED_DLL_EXPORT void | xed_encoder_request_set_effective_operand_width (xed_encoder_request_t *p, xed_uint_t width_bits)
XED_DLL_EXPORT void | xed_encoder_request_set_reg (xed_encoder_request_t *p, xed_operand_enum_t operand, xed_reg_enum_t reg)

## Immediates

XED_DLL_EXPORT void | xed_encoder_request_set_simm (xed_encoder_request_t *p, xed_int32_t simm, xed_uint_t nbytes)
| same storage as uimm0
XED_DLL_EXPORT void | xed_encoder_request_set_uimm0 (xed_encoder_request_t *p, xed_uint64_t uimm, xed_uint_t nbytes)
| Set the uimm0 using a BYTE width.
XED_DLL_EXPORT void | xed_encoder_request_set_uimm0_bits (xed_encoder_request_t *p, xed_uint64_t uimm, xed_uint_t nbits)
| Set the uimm0 using a BIT width.
XED_DLL_EXPORT void | xed_encoder_request_set_uimm1 (xed_encoder_request_t *p, xed_uint8_t uimm)

## Initialization

XED_DLL_EXPORT void | xed_encoder_request_zero (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_zero_operand_order (xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_zero_set_mode (xed_encoder_request_t *p, const xed_state_t *dstate)

## Typedefs

typedef xed_decoded_inst_s | xed_encoder_request_s
typedef xed_decoded_inst_t | xed_encoder_request_t

## Functions

XED_DLL_EXPORT xed_iclass_enum_t | xed_encoder_request_get_iclass (const xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_init_from_decode (struct xed_decoded_inst_s *d)
| Converts an decoder request to a valid encoder request.
XED_DLL_EXPORT xed_operand_values_t * | xed_encoder_request_operands (xed_encoder_request_t *p)
XED_DLL_EXPORT const xed_operand_values_t * | xed_encoder_request_operands_const (const xed_encoder_request_t *p)
XED_DLL_EXPORT void | xed_encoder_request_set_iclass (xed_encoder_request_t *p, xed_iclass_enum_t iclass)

## Detailed Description

Definition in file xed-encode.h.