Zydis v4.1.1

Loading...
Searching...
No Matches
Formatter.h File Reference

Functions for formatting instructions to human-readable text. More...

`#include <Zycore/Defines.h>`
`#include <Zycore/String.h>`
`#include <Zycore/Types.h>`
`#include <Zydis/DecoderTypes.h>`
`#include <Zydis/FormatterBuffer.h>`

Go to the source code of this file.

## Data Structures
struct | ZydisFormatterContext_
| Context structure that that is passed to all formatter. More...
struct | ZydisFormatter_
| Context structure keeping track of internal state of the formatter. More...

## Macros
#define | ZYDIS_RUNTIME_ADDRESS_NONE (ZyanU64)(-1)
| Use this constant as value for runtime_address in ZydisFormatterFormatInstruction(Ex) or ZydisFormatterFormatOperand(Ex) to print relative values for all addresses.

## Typedefs
typedef enum ZydisFormatterStyle_ | ZydisFormatterStyle
| Enum selecting the syntax to format the disassembly in.
typedef enum ZydisFormatterProperty_ | ZydisFormatterProperty
| Enum selecting a property of the formatter.
typedef enum ZydisNumericBase_ | ZydisNumericBase
| Enum defining different mantissae to be used during formatting.
typedef enum ZydisSignedness_ | ZydisSignedness
| Enum defining the signeness of integers to be used during formatting.
typedef enum ZydisPadding_ | ZydisPadding
| Enum definining magic values that receive special treatment when used as padding properties of the formatter.
typedef enum ZydisFormatterFunction_ | ZydisFormatterFunction
| Enum selecting a formatter function to be replaced with hooks.
typedef enum ZydisDecorator_ | ZydisDecorator
| Enum of all decorator types.
typedef struct ZydisFormatter_ | ZydisFormatter
typedef struct ZydisFormatterContext_ | ZydisFormatterContext
| Context structure that that is passed to all formatter.
typedef ZyanStatus(* | ZydisFormatterFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context)
| Defines the ZydisFormatterFunc function prototype.
typedef ZyanStatus(* | ZydisFormatterRegisterFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisRegister reg)
| Defines the ZydisFormatterRegisterFunc function prototype.
typedef ZyanStatus(* | ZydisFormatterDecoratorFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisDecorator decorator)
| Defines the ZydisFormatterDecoratorFunc function prototype.

## Enumerations
enum | ZydisFormatterStyle_ { ZYDIS_FORMATTER_STYLE_ATT , ZYDIS_FORMATTER_STYLE_INTEL , ZYDIS_FORMATTER_STYLE_INTEL_MASM , ZYDIS_FORMATTER_STYLE_MAX_VALUE = ZYDIS_FORMATTER_STYLE_INTEL_MASM , ZYDIS_FORMATTER_STYLE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_STYLE_MAX_VALUE) }
| Enum selecting the syntax to format the disassembly in. More...
enum | ZydisFormatterProperty_ { ZYDIS_FORMATTER_PROP_FORCE_SIZE , ZYDIS_FORMATTER_PROP_FORCE_SEGMENT , ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE , ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES , ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL , ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE , ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES , ZYDIS_FORMATTER_PROP_ADDR_BASE , ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS , ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE , ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE , ZYDIS_FORMATTER_PROP_DISP_BASE , ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS , ZYDIS_FORMATTER_PROP_DISP_PADDING , ZYDIS_FORMATTER_PROP_IMM_BASE , ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS , ZYDIS_FORMATTER_PROP_IMM_PADDING , ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES , ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC , ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS , ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS , ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS , ZYDIS_FORMATTER_PROP_DEC_PREFIX , ZYDIS_FORMATTER_PROP_DEC_SUFFIX , ZYDIS_FORMATTER_PROP_HEX_UPPERCASE , ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER , ZYDIS_FORMATTER_PROP_HEX_PREFIX , ZYDIS_FORMATTER_PROP_HEX_SUFFIX , ZYDIS_FORMATTER_PROP_MAX_VALUE = ZYDIS_FORMATTER_PROP_HEX_SUFFIX , ZYDIS_FORMATTER_PROP_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_PROP_MAX_VALUE) }
| Enum selecting a property of the formatter. More...
enum | ZydisNumericBase_ { ZYDIS_NUMERIC_BASE_DEC , ZYDIS_NUMERIC_BASE_HEX , ZYDIS_NUMERIC_BASE_MAX_VALUE = ZYDIS_NUMERIC_BASE_HEX , ZYDIS_NUMERIC_BASE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_NUMERIC_BASE_MAX_VALUE) }
| Enum defining different mantissae to be used during formatting. More...
enum | ZydisSignedness_ { ZYDIS_SIGNEDNESS_AUTO , ZYDIS_SIGNEDNESS_SIGNED , ZYDIS_SIGNEDNESS_UNSIGNED , ZYDIS_SIGNEDNESS_MAX_VALUE = ZYDIS_SIGNEDNESS_UNSIGNED , ZYDIS_SIGNEDNESS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SIGNEDNESS_MAX_VALUE) }
| Enum defining the signeness of integers to be used during formatting. More...
enum | ZydisPadding_ { ZYDIS_PADDING_DISABLED = 0 , ZYDIS_PADDING_AUTO = (-1) , ZYDIS_PADDING_MAX_VALUE = ZYDIS_PADDING_AUTO , ZYDIS_PADDING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_PADDING_MAX_VALUE) }
| Enum definining magic values that receive special treatment when used as padding properties of the formatter. More...
enum | ZydisFormatterFunction_ { ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION , ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION , ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION , ZYDIS_FORMATTER_FUNC_PRE_OPERAND , ZYDIS_FORMATTER_FUNC_POST_OPERAND , ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG , ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM , ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR , ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM , ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC , ZYDIS_FORMATTER_FUNC_PRINT_REGISTER , ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS , ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL , ZYDIS_FORMATTER_FUNC_PRINT_DISP , ZYDIS_FORMATTER_FUNC_PRINT_IMM , ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST , ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT , ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES , ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR , ZYDIS_FORMATTER_FUNC_MAX_VALUE = ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR , ZYDIS_FORMATTER_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_FUNC_MAX_VALUE) }
| Enum selecting a formatter function to be replaced with hooks. More...
enum | ZydisDecorator_ { ZYDIS_DECORATOR_INVALID , ZYDIS_DECORATOR_MASK , ZYDIS_DECORATOR_BC , ZYDIS_DECORATOR_RC , ZYDIS_DECORATOR_SAE , ZYDIS_DECORATOR_SWIZZLE , ZYDIS_DECORATOR_CONVERSION , ZYDIS_DECORATOR_EH , ZYDIS_DECORATOR_MAX_VALUE = ZYDIS_DECORATOR_EH , ZYDIS_DECORATOR_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_DECORATOR_MAX_VALUE) }
| Enum of all decorator types. More...

## Functions
ZYDIS_EXPORT ZyanStatus | ZydisFormatterInit (ZydisFormatter *formatter, ZydisFormatterStyle style)
| Initializes the given ZydisFormatter instance.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterSetProperty (ZydisFormatter *formatter, ZydisFormatterProperty property, ZyanUPointer value)
| Changes the value of the specified formatter property.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterSetHook (ZydisFormatter *formatter, ZydisFormatterFunction type, const void **callback)
| Replaces a formatter function with a custom callback and/or retrieves the currently used function.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterFormatInstruction (const ZydisFormatter *formatter, const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand *operands, ZyanU8 operand_count, char *buffer, ZyanUSize length, ZyanU64 runtime_address, void *user_data)
| Formats the given instruction and writes it into the output buffer.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterFormatOperand (const ZydisFormatter *formatter, const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand *operand, char *buffer, ZyanUSize length, ZyanU64 runtime_address, void *user_data)
| Formats the given operand and writes it into the output buffer.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterTokenizeInstruction (const ZydisFormatter *formatter, const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand *operands, ZyanU8 operand_count, void *buffer, ZyanUSize length, ZyanU64 runtime_address, ZydisFormatterTokenConst **token, void *user_data)
| Tokenizes the given instruction and writes it into the output buffer.
ZYDIS_EXPORT ZyanStatus | ZydisFormatterTokenizeOperand (const ZydisFormatter *formatter, const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand *operand, void *buffer, ZyanUSize length, ZyanU64 runtime_address, ZydisFormatterTokenConst **token, void *user_data)
| Tokenizes the given operand and writes it into the output buffer.

## Detailed Description

Functions for formatting instructions to human-readable text.

## Macro Definition Documentation

## ◆ ZYDIS_RUNTIME_ADDRESS_NONE

#define ZYDIS_RUNTIME_ADDRESS_NONE (ZyanU64)(-1)

Use this constant as value for runtime_address in ZydisFormatterFormatInstruction(Ex) or ZydisFormatterFormatOperand(Ex) to print relative values for all addresses.

## Typedef Documentation

## ◆ ZydisDecorator

typedef enum ZydisDecorator_ ZydisDecorator

Enum of all decorator types.

## ◆ ZydisFormatter

typedef struct ZydisFormatter_ ZydisFormatter

## ◆ ZydisFormatterContext

typedef struct ZydisFormatterContext_ ZydisFormatterContext

Context structure that that is passed to all formatter.

## ◆ ZydisFormatterDecoratorFunc

typedef ZyanStatus(* ZydisFormatterDecoratorFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisDecorator decorator)

Defines the ZydisFormatterDecoratorFunc function prototype.

Parameters

  formatter | A pointer to the ZydisFormatter instance.
  buffer | A pointer to the ZydisFormatterBuffer struct.
  context | A pointer to the ZydisFormatterContext struct.
  decorator | The decorator type.

Returns
  Returning a status code other than ZYAN_STATUS_SUCCESS will immediately cause the formatting process to fail.

This function type is used for:

- ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR

## ◆ ZydisFormatterFunc

typedef ZyanStatus(* ZydisFormatterFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context)

Defines the ZydisFormatterFunc function prototype.

Parameters

  formatter | A pointer to the ZydisFormatter instance.
  buffer | A pointer to the ZydisFormatterBuffer struct.
  context | A pointer to the ZydisFormatterContext struct.

Returns
  A zyan status code.

Returning a status code other than ZYAN_STATUS_SUCCESS will immediately cause the formatting process to fail (see exceptions below).

Returning ZYDIS_STATUS_SKIP_TOKEN is valid for functions of the following types and will instruct the formatter to omit the whole operand:

- ZYDIS_FORMATTER_FUNC_PRE_OPERAND
- ZYDIS_FORMATTER_FUNC_POST_OPERAND
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM

This function prototype is used by functions of the following types:

- ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION
- ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION
- ZYDIS_FORMATTER_FUNC_PRE_OPERAND
- ZYDIS_FORMATTER_FUNC_POST_OPERAND
- ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION
- ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC
- ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR
- ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM
- ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS
- ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL
- ZYDIS_FORMATTER_FUNC_PRINT_DISP
- ZYDIS_FORMATTER_FUNC_PRINT_IMM
- ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST
- ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT

## ◆ ZydisFormatterFunction

typedef enum ZydisFormatterFunction_ ZydisFormatterFunction

Enum selecting a formatter function to be replaced with hooks.

Do NOT change the order of the values this enum or the function fields inside the ZydisFormatter struct.

## ◆ ZydisFormatterProperty

typedef enum ZydisFormatterProperty_ ZydisFormatterProperty

Enum selecting a property of the formatter.

## ◆ ZydisFormatterRegisterFunc

typedef ZyanStatus(* ZydisFormatterRegisterFunc) (const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisRegister reg)

Defines the ZydisFormatterRegisterFunc function prototype.

Parameters

  formatter | A pointer to the ZydisFormatter instance.
  buffer | A pointer to the ZydisFormatterBuffer struct.
  context | A pointer to the ZydisFormatterContext struct.
  reg | The register.

Returns
  Returning a status code other than ZYAN_STATUS_SUCCESS will immediately cause the formatting process to fail.

This function prototype is used by functions of the following types:

- ZYDIS_FORMATTER_FUNC_PRINT_REGISTER.

## ◆ ZydisFormatterStyle

typedef enum ZydisFormatterStyle_ ZydisFormatterStyle

Enum selecting the syntax to format the disassembly in.

## ◆ ZydisNumericBase

typedef enum ZydisNumericBase_ ZydisNumericBase

Enum defining different mantissae to be used during formatting.

## ◆ ZydisPadding

typedef enum ZydisPadding_ ZydisPadding

Enum definining magic values that receive special treatment when used as padding properties of the formatter.

## ◆ ZydisSignedness

typedef enum ZydisSignedness_ ZydisSignedness

Enum defining the signeness of integers to be used during formatting.

## Enumeration Type Documentation

## ◆ ZydisDecorator_

enum ZydisDecorator_

Enum of all decorator types.

Enumerator
ZYDIS_DECORATOR_INVALID |
ZYDIS_DECORATOR_MASK | The embedded-mask decorator.
ZYDIS_DECORATOR_BC | The broadcast decorator.
ZYDIS_DECORATOR_RC | The rounding-control decorator.
ZYDIS_DECORATOR_SAE | The suppress-all-exceptions decorator.
ZYDIS_DECORATOR_SWIZZLE | The register-swizzle decorator.
ZYDIS_DECORATOR_CONVERSION | The conversion decorator.
ZYDIS_DECORATOR_EH | The eviction-hint decorator.
ZYDIS_DECORATOR_MAX_VALUE | Maximum value of this enum.
ZYDIS_DECORATOR_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisFormatterFunction_

enum ZydisFormatterFunction_

Enum selecting a formatter function to be replaced with hooks.

Do NOT change the order of the values this enum or the function fields inside the ZydisFormatter struct.

Enumerator
ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION | This function is invoked before the formatter formats an instruction.
ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION | This function is invoked after the formatter formatted an instruction.
ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION | This function refers to the main formatting function. Replacing this function allows for complete custom formatting, but indirectly disables all other hooks except for ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION and ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION.
ZYDIS_FORMATTER_FUNC_PRE_OPERAND | This function is invoked before the formatter formats an operand.
ZYDIS_FORMATTER_FUNC_POST_OPERAND | This function is invoked after the formatter formatted an operand.
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG | This function is invoked to format a register operand.
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM | This function is invoked to format a memory operand. Replacing this function might indirectly disable some specific calls to the ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST, ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT, ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS and ZYDIS_FORMATTER_FUNC_PRINT_DISP functions.
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR | This function is invoked to format a pointer operand.
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM | This function is invoked to format an immediate operand. Replacing this function might indirectly disable some specific calls to the ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS, ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL and ZYDIS_FORMATTER_FUNC_PRINT_IMM functions.
ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC | This function is invoked to print the instruction mnemonic.
ZYDIS_FORMATTER_FUNC_PRINT_REGISTER | This function is invoked to print a register.
ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS | This function is invoked to print absolute addresses. Conditionally invoked, if a runtime-address different to ZYDIS_RUNTIME_ADDRESS_NONE was passed: IMM operands with relative address (e.g. JMP, CALL, ...) MEM operands with EIP/RIP-relative address (e.g. MOV RAX, [RIP+0x12345678]) Always invoked for: MEM operands with absolute address (e.g. MOV RAX, [0x12345678])
ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL | This function is invoked to print relative addresses. Conditionally invoked, if ZYDIS_RUNTIME_ADDRESS_NONE was passed as runtime-address: IMM operands with relative address (e.g. JMP, CALL, ...)
ZYDIS_FORMATTER_FUNC_PRINT_DISP | This function is invoked to print a memory displacement value. If the memory displacement contains an address and a runtime-address different to ZYDIS_RUNTIME_ADDRESS_NONE was passed, ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS is called instead.
ZYDIS_FORMATTER_FUNC_PRINT_IMM | This function is invoked to print an immediate value. If the immediate contains an address and a runtime-address different to ZYDIS_RUNTIME_ADDRESS_NONE was passed, ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS is called instead. If the immediate contains an address and ZYDIS_RUNTIME_ADDRESS_NONE was passed as runtime-address, ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL is called instead.
ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST | This function is invoked to print the size of a memory operand (INTEL only).
ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT | This function is invoked to print the segment-register of a memory operand.
ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES | This function is invoked to print the instruction prefixes.
ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR | This function is invoked after formatting an operand to print a EVEX/MVEX decorator.
ZYDIS_FORMATTER_FUNC_MAX_VALUE | Maximum value of this enum.
ZYDIS_FORMATTER_FUNC_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisFormatterProperty_

enum ZydisFormatterProperty_

Enum selecting a property of the formatter.

Enumerator
ZYDIS_FORMATTER_PROP_FORCE_SIZE | Controls the printing of effective operand-size suffixes (AT&T) or operand-sizes of memory operands (INTEL). Pass ZYAN_TRUE as value to force the formatter to always print the size, or ZYAN_FALSE to only print it if needed.
ZYDIS_FORMATTER_PROP_FORCE_SEGMENT | Controls the printing of segment prefixes. Pass ZYAN_TRUE as value to force the formatter to always print the segment register of memory-operands or ZYAN_FALSE to omit implicit DS/SS segments.
ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE | Controls the printing of the scale-factor component for memory operands. Pass ZYAN_TRUE as value to force the formatter to always print the scale-factor component of memory operands or ZYAN_FALSE to omit the scale factor for values of 1.
ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES | Controls the printing of branch addresses. Pass ZYAN_TRUE as value to force the formatter to always print relative branch addresses or ZYAN_FALSE to use absolute addresses, if a runtime-address different to ZYDIS_RUNTIME_ADDRESS_NONE was passed.
ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL | Controls the printing of EIP/RIP-relative addresses. Pass ZYAN_TRUE as value to force the formatter to always print relative addresses for EIP/RIP-relative operands or ZYAN_FALSE to use absolute addresses, if a runtime- address different to ZYDIS_RUNTIME_ADDRESS_NONE was passed.
ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE | Controls the printing of branch-instructions sizes. Pass ZYAN_TRUE as value to print the size (short, near) of branch instructions or ZYAN_FALSE to hide it. Note that the far/l modifier is always printed.
ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES | Controls the printing of instruction prefixes. Pass ZYAN_TRUE as value to print all instruction-prefixes (even ignored or duplicate ones) or ZYAN_FALSE to only print prefixes that are effectively used by the instruction.
ZYDIS_FORMATTER_PROP_ADDR_BASE | Controls the base of address values.
ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS | Controls the signedness of relative addresses. Absolute addresses are always unsigned.
ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE | Controls the padding of absolute address values. Pass ZYDIS_PADDING_DISABLED to disable padding, ZYDIS_PADDING_AUTO to pad all addresses to the current address width (hexadecimal only), or any other integer value for custom padding.
ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE | Controls the padding of relative address values. Pass ZYDIS_PADDING_DISABLED to disable padding, ZYDIS_PADDING_AUTO to pad all addresses to the current address width (hexadecimal only), or any other integer value for custom padding.
ZYDIS_FORMATTER_PROP_DISP_BASE | Controls the base of displacement values.
ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS | Controls the signedness of displacement values.
ZYDIS_FORMATTER_PROP_DISP_PADDING | Controls the padding of displacement values. Pass ZYDIS_PADDING_DISABLED to disable padding, or any other integer value for custom padding.
ZYDIS_FORMATTER_PROP_IMM_BASE | Controls the base of immediate values.
ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS | Controls the signedness of immediate values. Pass ZYDIS_SIGNEDNESS_AUTO to automatically choose the most suitable mode based on the operands ZydisDecodedOperand.imm.is_signed attribute.
ZYDIS_FORMATTER_PROP_IMM_PADDING | Controls the padding of immediate values. Pass ZYDIS_PADDING_DISABLED to disable padding, ZYDIS_PADDING_AUTO to padd all immediates to the operand-width (hexadecimal only), or any other integer value for custom padding.
ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES | Controls the letter-case for prefixes. Pass ZYAN_TRUE as value to format in uppercase or ZYAN_FALSE to format in lowercase.
ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC | Controls the letter-case for the mnemonic. Pass ZYAN_TRUE as value to format in uppercase or ZYAN_FALSE to format in lowercase.
ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS | Controls the letter-case for registers. Pass ZYAN_TRUE as value to format in uppercase or ZYAN_FALSE to format in lowercase.
ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS | Controls the letter-case for typecasts. Pass ZYAN_TRUE as value to format in uppercase or ZYAN_FALSE to format in lowercase.
ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS | Controls the letter-case for decorators. Pass ZYAN_TRUE as value to format in uppercase or ZYAN_FALSE to format in lowercase. WARNING: this is currently not implemented (ignored).
ZYDIS_FORMATTER_PROP_DEC_PREFIX | Controls the prefix for decimal values. Pass a pointer to a null-terminated C-style string with a maximum length of 10 characters to set a custom prefix, or ZYAN_NULL to disable it. The string is deep-copied into an internal buffer.
ZYDIS_FORMATTER_PROP_DEC_SUFFIX | Controls the suffix for decimal values. Pass a pointer to a null-terminated C-style string with a maximum length of 10 characters to set a custom suffix, or ZYAN_NULL to disable it. The string is deep-copied into an internal buffer.
ZYDIS_FORMATTER_PROP_HEX_UPPERCASE | Controls the letter-case of hexadecimal values. Pass ZYAN_TRUE as value to format in uppercase and ZYAN_FALSE to format in lowercase. The default value is ZYAN_TRUE.
ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER | Controls whether to prepend hexadecimal values with a leading zero if the first character is non-numeric. Pass ZYAN_TRUE to prepend a leading zero if the first character is non-numeric or ZYAN_FALSE to disable this functionality. The default value is ZYAN_FALSE.
ZYDIS_FORMATTER_PROP_HEX_PREFIX | Controls the prefix for hexadecimal values. Pass a pointer to a null-terminated C-style string with a maximum length of 10 characters to set a custom prefix, or ZYAN_NULL to disable it. The string is deep-copied into an internal buffer.
ZYDIS_FORMATTER_PROP_HEX_SUFFIX | Controls the suffix for hexadecimal values. Pass a pointer to a null-terminated C-style string with a maximum length of 10 characters to set a custom suffix, or ZYAN_NULL to disable it. The string is deep-copied into an internal buffer.
ZYDIS_FORMATTER_PROP_MAX_VALUE | Maximum value of this enum.
ZYDIS_FORMATTER_PROP_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisFormatterStyle_

enum ZydisFormatterStyle_

Enum selecting the syntax to format the disassembly in.

Enumerator
ZYDIS_FORMATTER_STYLE_ATT | Generates AT&T-style disassembly.
ZYDIS_FORMATTER_STYLE_INTEL | Generates Intel-style disassembly.
ZYDIS_FORMATTER_STYLE_INTEL_MASM | Generates MASM-style disassembly that is directly accepted as input for the MASM assembler. The runtime-address is ignored in this mode.
ZYDIS_FORMATTER_STYLE_MAX_VALUE | Maximum value of this enum.
ZYDIS_FORMATTER_STYLE_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisNumericBase_

enum ZydisNumericBase_

Enum defining different mantissae to be used during formatting.

Enumerator
ZYDIS_NUMERIC_BASE_DEC | Decimal system.
ZYDIS_NUMERIC_BASE_HEX | Hexadecimal system.
ZYDIS_NUMERIC_BASE_MAX_VALUE | Maximum value of this enum.
ZYDIS_NUMERIC_BASE_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisPadding_

enum ZydisPadding_

Enum definining magic values that receive special treatment when used as padding properties of the formatter.

Enumerator
ZYDIS_PADDING_DISABLED | Disables padding.
ZYDIS_PADDING_AUTO | Padds the value to the current stack-width for addresses, or to the operand-width for immediate values (hexadecimal only).
ZYDIS_PADDING_MAX_VALUE | Maximum value of this enum.
ZYDIS_PADDING_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.

## ◆ ZydisSignedness_

enum ZydisSignedness_

Enum defining the signeness of integers to be used during formatting.

Enumerator
ZYDIS_SIGNEDNESS_AUTO | Automatically choose the most suitable mode based on the operands ZydisDecodedOperand.imm.is_signed` attribute.
ZYDIS_SIGNEDNESS_SIGNED | Force signed values.
ZYDIS_SIGNEDNESS_UNSIGNED | Force unsigned values.
ZYDIS_SIGNEDNESS_MAX_VALUE | Maximum value of this enum.
ZYDIS_SIGNEDNESS_REQUIRED_BITS | The minimum number of bits required to represent all values of this enum.