Zydis v4.1.1

Loading...
Searching...
No Matches
Formatter.h
Go to the documentation of this file.
1/***************************************************************************************************
2
3 Zyan Disassembler Library (Zydis)
4
5 Original Author : Florian Bernd
6
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
24
25***************************************************************************************************/
26
31
32#ifndef ZYDIS_FORMATTER_H
33#define ZYDIS_FORMATTER_H
34
35#include <Zycore/Defines.h>
36#include <Zycore/String.h>
37#include <Zycore/Types.h>
38#include <Zydis/DecoderTypes.h>
39#include <Zydis/FormatterBuffer.h>
40
41#ifdef __cplusplus
42 extern "C" {
43#endif
44
45/* ============================================================================================== */
46/* Constants */
47/* ============================================================================================== */
48
53#define ZYDIS_RUNTIME_ADDRESS_NONE (ZyanU64)(-1)
54
55/* ============================================================================================== */
56/* Enums and types */
57/* ============================================================================================== */
58
59/* ---------------------------------------------------------------------------------------------- */
60/* Formatter style */
61/* ---------------------------------------------------------------------------------------------- */
62
66 typedef enum ZydisFormatterStyle_
67{
71 ZYDIS_FORMATTER_STYLE_ATT,
75 ZYDIS_FORMATTER_STYLE_INTEL,
82 ZYDIS_FORMATTER_STYLE_INTEL_MASM,
83
87 ZYDIS_FORMATTER_STYLE_MAX_VALUE = ZYDIS_FORMATTER_STYLE_INTEL_MASM,
91 ZYDIS_FORMATTER_STYLE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_STYLE_MAX_VALUE)
92} ZydisFormatterStyle;
93
94/* ---------------------------------------------------------------------------------------------- */
95/* Properties */
96/* ---------------------------------------------------------------------------------------------- */
97
101 typedef enum ZydisFormatterProperty_
102{
103 /* ---------------------------------------------------------------------------------------- */
104 /* General */
105 /* ---------------------------------------------------------------------------------------- */
106
114 ZYDIS_FORMATTER_PROP_FORCE_SIZE,
121 ZYDIS_FORMATTER_PROP_FORCE_SEGMENT,
128 ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE,
136 ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES,
144 ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL,
153 ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE,
154
161 ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES,
162
163 /* ---------------------------------------------------------------------------------------- */
164 /* Numeric values */
165 /* ---------------------------------------------------------------------------------------- */
166
170 ZYDIS_FORMATTER_PROP_ADDR_BASE,
175 ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS,
183 ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE,
191 ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE,
192
193 /* ---------------------------------------------------------------------------------------- */
194
198 ZYDIS_FORMATTER_PROP_DISP_BASE,
202 ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS,
209 ZYDIS_FORMATTER_PROP_DISP_PADDING,
210
211 /* ---------------------------------------------------------------------------------------- */
212
216 ZYDIS_FORMATTER_PROP_IMM_BASE,
223 ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS,
231 ZYDIS_FORMATTER_PROP_IMM_PADDING,
232
233 /* ---------------------------------------------------------------------------------------- */
234 /* Text formatting */
235 /* ---------------------------------------------------------------------------------------- */
236
242 ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES,
248 ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC,
254 ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS,
260 ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS,
268 ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS,
269
270 /* ---------------------------------------------------------------------------------------- */
271 /* Number formatting */
272 /* ---------------------------------------------------------------------------------------- */
273
282 ZYDIS_FORMATTER_PROP_DEC_PREFIX,
291 ZYDIS_FORMATTER_PROP_DEC_SUFFIX,
292
293 /* ---------------------------------------------------------------------------------------- */
294
302 ZYDIS_FORMATTER_PROP_HEX_UPPERCASE,
312 ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER,
321 ZYDIS_FORMATTER_PROP_HEX_PREFIX,
330 ZYDIS_FORMATTER_PROP_HEX_SUFFIX,
331
332 /* ---------------------------------------------------------------------------------------- */
333
337 ZYDIS_FORMATTER_PROP_MAX_VALUE = ZYDIS_FORMATTER_PROP_HEX_SUFFIX,
341 ZYDIS_FORMATTER_PROP_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_PROP_MAX_VALUE)
342} ZydisFormatterProperty;
343
344/* ---------------------------------------------------------------------------------------------- */
345
349 typedef enum ZydisNumericBase_
350{
354 ZYDIS_NUMERIC_BASE_DEC,
358 ZYDIS_NUMERIC_BASE_HEX,
359
363 ZYDIS_NUMERIC_BASE_MAX_VALUE = ZYDIS_NUMERIC_BASE_HEX,
367 ZYDIS_NUMERIC_BASE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_NUMERIC_BASE_MAX_VALUE)
368} ZydisNumericBase;
369
370/* ---------------------------------------------------------------------------------------------- */
371
375 typedef enum ZydisSignedness_
376{
381 ZYDIS_SIGNEDNESS_AUTO,
385 ZYDIS_SIGNEDNESS_SIGNED,
389 ZYDIS_SIGNEDNESS_UNSIGNED,
390
394 ZYDIS_SIGNEDNESS_MAX_VALUE = ZYDIS_SIGNEDNESS_UNSIGNED,
398 ZYDIS_SIGNEDNESS_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_SIGNEDNESS_MAX_VALUE)
399} ZydisSignedness;
400
401/* ---------------------------------------------------------------------------------------------- */
402
407 typedef enum ZydisPadding_
408{
412 ZYDIS_PADDING_DISABLED = 0,
417 ZYDIS_PADDING_AUTO = (-1),
418
422 ZYDIS_PADDING_MAX_VALUE = ZYDIS_PADDING_AUTO,
426 ZYDIS_PADDING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_PADDING_MAX_VALUE)
427} ZydisPadding;
428
429/* ---------------------------------------------------------------------------------------------- */
430/* Function types */
431/* ---------------------------------------------------------------------------------------------- */
432
439 typedef enum ZydisFormatterFunction_
440{
441 /* ---------------------------------------------------------------------------------------- */
442 /* Instruction */
443 /* ---------------------------------------------------------------------------------------- */
444
448 ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION,
452 ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION,
453
454 /* ---------------------------------------------------------------------------------------- */
455
463 ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION,
464
465 /* ---------------------------------------------------------------------------------------- */
466 /* Operands */
467 /* ---------------------------------------------------------------------------------------- */
468
472 ZYDIS_FORMATTER_FUNC_PRE_OPERAND,
476 ZYDIS_FORMATTER_FUNC_POST_OPERAND,
477
478 /* ---------------------------------------------------------------------------------------- */
479
483 ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG,
491 ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM,
495 ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR,
503 ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM,
504
505 /* ---------------------------------------------------------------------------------------- */
506 /* Elemental tokens */
507 /* ---------------------------------------------------------------------------------------- */
508
512 ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC,
513
514 /* ---------------------------------------------------------------------------------------- */
515
519 ZYDIS_FORMATTER_FUNC_PRINT_REGISTER,
531 ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS,
538 ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL,
546 ZYDIS_FORMATTER_FUNC_PRINT_DISP,
557 ZYDIS_FORMATTER_FUNC_PRINT_IMM,
558
559 /* ---------------------------------------------------------------------------------------- */
560 /* Optional tokens */
561 /* ---------------------------------------------------------------------------------------- */
562
566 ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST,
570 ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT,
574 ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES,
579 ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR,
580
581 /* ---------------------------------------------------------------------------------------- */
582
586 ZYDIS_FORMATTER_FUNC_MAX_VALUE = ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR,
590 ZYDIS_FORMATTER_FUNC_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_FORMATTER_FUNC_MAX_VALUE)
591} ZydisFormatterFunction;
592
593/* ---------------------------------------------------------------------------------------------- */
594/* Decorator types */
595/* ---------------------------------------------------------------------------------------------- */
596
600 typedef enum ZydisDecorator_
601{
602 ZYDIS_DECORATOR_INVALID,
606 ZYDIS_DECORATOR_MASK,
610 ZYDIS_DECORATOR_BC,
614 ZYDIS_DECORATOR_RC,
618 ZYDIS_DECORATOR_SAE,
622 ZYDIS_DECORATOR_SWIZZLE,
626 ZYDIS_DECORATOR_CONVERSION,
630 ZYDIS_DECORATOR_EH,
631
635 ZYDIS_DECORATOR_MAX_VALUE = ZYDIS_DECORATOR_EH,
639 ZYDIS_DECORATOR_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_DECORATOR_MAX_VALUE)
640} ZydisDecorator;
641
642/* ---------------------------------------------------------------------------------------------- */
643/* Formatter context */
644/* ---------------------------------------------------------------------------------------------- */
645
646 typedef struct ZydisFormatter_ ZydisFormatter;
647
651 typedef struct ZydisFormatterContext_
652{
656 const ZydisDecodedInstruction* instruction;
660 const ZydisDecodedOperand* operands;
664 const ZydisDecodedOperand* operand;
668 ZyanU64 runtime_address;
675 void* user_data;
676} ZydisFormatterContext;
677
678/* ---------------------------------------------------------------------------------------------- */
679/* Function prototypes */
680/* ---------------------------------------------------------------------------------------------- */
681
722 typedef ZyanStatus (*ZydisFormatterFunc)(const ZydisFormatter* formatter,
723 ZydisFormatterBuffer* buffer, ZydisFormatterContext* context);
724
739 typedef ZyanStatus (*ZydisFormatterRegisterFunc)(const ZydisFormatter* formatter,
740 ZydisFormatterBuffer* buffer, ZydisFormatterContext* context, ZydisRegister reg);
741
756 typedef ZyanStatus (*ZydisFormatterDecoratorFunc)(const ZydisFormatter* formatter,
757 ZydisFormatterBuffer* buffer, ZydisFormatterContext* context, ZydisDecorator decorator);
758
759/* ---------------------------------------------------------------------------------------------- */
760/* Formatter struct */
761/* ---------------------------------------------------------------------------------------------- */
762
772 struct ZydisFormatter_
773{
777 ZydisFormatterStyle style;
781 ZyanBool force_memory_size;
785 ZyanBool force_memory_segment;
789 ZyanBool force_memory_scale;
793 ZyanBool force_relative_branches;
797 ZyanBool force_relative_riprel;
801 ZyanBool print_branch_size;
805 ZyanBool detailed_prefixes;
809 ZydisNumericBase addr_base;
813 ZydisSignedness addr_signedness;
817 ZydisPadding addr_padding_absolute;
821 ZydisPadding addr_padding_relative;
825 ZydisNumericBase disp_base;
829 ZydisSignedness disp_signedness;
833 ZydisPadding disp_padding;
837 ZydisNumericBase imm_base;
841 ZydisSignedness imm_signedness;
845 ZydisPadding imm_padding;
849 ZyanI32 case_prefixes;
853 ZyanI32 case_mnemonic;
857 ZyanI32 case_registers;
861 ZyanI32 case_typecasts;
865 ZyanI32 case_decorators;
869 ZyanBool hex_uppercase;
873 ZyanBool hex_force_leading_number;
880 struct
881 {
885 const ZyanStringView* string;
889 ZyanStringView string_data;
893 char buffer[11];
894 } number_format[ZYDIS_NUMERIC_BASE_MAX_VALUE + 1][2];
898 ZydisFormatterFunc func_pre_instruction;
902 ZydisFormatterFunc func_post_instruction;
906 ZydisFormatterFunc func_format_instruction;
910 ZydisFormatterFunc func_pre_operand;
914 ZydisFormatterFunc func_post_operand;
918 ZydisFormatterFunc func_format_operand_reg;
922 ZydisFormatterFunc func_format_operand_mem;
926 ZydisFormatterFunc func_format_operand_ptr;
930 ZydisFormatterFunc func_format_operand_imm;
934 ZydisFormatterFunc func_print_mnemonic;
938 ZydisFormatterRegisterFunc func_print_register;
942 ZydisFormatterFunc func_print_address_abs;
946 ZydisFormatterFunc func_print_address_rel;
950 ZydisFormatterFunc func_print_disp;
954 ZydisFormatterFunc func_print_imm;
958 ZydisFormatterFunc func_print_typecast;
962 ZydisFormatterFunc func_print_segment;
966 ZydisFormatterFunc func_print_prefixes;
970 ZydisFormatterDecoratorFunc func_print_decorator;
971};
972
973/* ---------------------------------------------------------------------------------------------- */
974
975/* ============================================================================================== */
976/* Exported functions */
977/* ============================================================================================== */
978
984
985/* ---------------------------------------------------------------------------------------------- */
986/* Initialization */
987/* ---------------------------------------------------------------------------------------------- */
988
997 ZYDIS_EXPORT ZyanStatus ZydisFormatterInit(ZydisFormatter* formatter, ZydisFormatterStyle style);
998
999/* ---------------------------------------------------------------------------------------------- */
1000/* Setter */
1001/* ---------------------------------------------------------------------------------------------- */
1002
1015 ZYDIS_EXPORT ZyanStatus ZydisFormatterSetProperty(ZydisFormatter* formatter,
1016 ZydisFormatterProperty property, ZyanUPointer value);
1017
1035 ZYDIS_EXPORT ZyanStatus ZydisFormatterSetHook(ZydisFormatter* formatter,
1036 ZydisFormatterFunction type, const void** callback);
1037
1038/* ---------------------------------------------------------------------------------------------- */
1039/* Formatting */
1040/* ---------------------------------------------------------------------------------------------- */
1041
1059 ZYDIS_EXPORT ZyanStatus ZydisFormatterFormatInstruction(const ZydisFormatter* formatter,
1060 const ZydisDecodedInstruction* instruction, const ZydisDecodedOperand* operands,
1061 ZyanU8 operand_count, char* buffer, ZyanUSize length, ZyanU64 runtime_address,
1062 void* user_data);
1063
1082 ZYDIS_EXPORT ZyanStatus ZydisFormatterFormatOperand(const ZydisFormatter* formatter,
1083 const ZydisDecodedInstruction* instruction, const ZydisDecodedOperand* operand,
1084 char* buffer, ZyanUSize length, ZyanU64 runtime_address, void* user_data);
1085
1086/* ---------------------------------------------------------------------------------------------- */
1087/* Tokenizing */
1088/* ---------------------------------------------------------------------------------------------- */
1089
1108 ZYDIS_EXPORT ZyanStatus ZydisFormatterTokenizeInstruction(const ZydisFormatter* formatter,
1109 const ZydisDecodedInstruction* instruction, const ZydisDecodedOperand* operands,
1110 ZyanU8 operand_count, void* buffer, ZyanUSize length, ZyanU64 runtime_address,
1111 ZydisFormatterTokenConst** token, void* user_data);
1112
1131 ZYDIS_EXPORT ZyanStatus ZydisFormatterTokenizeOperand(const ZydisFormatter* formatter,
1132 const ZydisDecodedInstruction* instruction, const ZydisDecodedOperand* operand,
1133 void* buffer, ZyanUSize length, ZyanU64 runtime_address, ZydisFormatterTokenConst** token,
1134 void* user_data);
1135
1136/* ---------------------------------------------------------------------------------------------- */
1137
1141
1142/* ============================================================================================== */
1143
1144#ifdef __cplusplus
1145}
1146#endif
1147
1148#endif /* ZYDIS_FORMATTER_H */
DecoderTypes.h
Defines the basic ZydisDecodedInstruction and ZydisDecodedOperand structs.
ZydisDecodedOperand
struct ZydisDecodedOperand_ ZydisDecodedOperand
Defines the ZydisDecodedOperand struct.
ZydisDecodedInstruction
struct ZydisDecodedInstruction_ ZydisDecodedInstruction
Information about a decoded instruction.
ZYDIS_EXPORT
#define ZYDIS_EXPORT
Symbol is exported in shared library builds.
Definition Defines.h:67
ZydisRegister
enum ZydisRegister_ ZydisRegister
Defines the ZydisRegister enum.
FormatterBuffer.h
Implements the ZydisFormatterToken type and provides functions to use it.
ZydisFormatterBuffer
struct ZydisFormatterBuffer_ ZydisFormatterBuffer
Defines the ZydisFormatterBuffer struct.
ZydisFormatterTokenConst
const ZydisFormatterToken ZydisFormatterTokenConst
Defines the ZydisFormatterTokenConst data-type.
Definition FormatterBuffer.h:155
ZydisDecorator
enum ZydisDecorator_ ZydisDecorator
Enum of all decorator types.
ZydisNumericBase
enum ZydisNumericBase_ ZydisNumericBase
Enum defining different mantissae to be used during formatting.
ZydisFormatterStyle_
ZydisFormatterStyle_
Enum selecting the syntax to format the disassembly in.
Definition Formatter.h:67
ZYDIS_FORMATTER_STYLE_ATT
@ ZYDIS_FORMATTER_STYLE_ATT
Generates AT&T-style disassembly.
Definition Formatter.h:71
ZYDIS_FORMATTER_STYLE_INTEL_MASM
@ ZYDIS_FORMATTER_STYLE_INTEL_MASM
Generates MASM-style disassembly that is directly accepted as input for the MASM assembler.
Definition Formatter.h:82
ZYDIS_FORMATTER_STYLE_REQUIRED_BITS
@ ZYDIS_FORMATTER_STYLE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:91
ZYDIS_FORMATTER_STYLE_INTEL
@ ZYDIS_FORMATTER_STYLE_INTEL
Generates Intel-style disassembly.
Definition Formatter.h:75
ZYDIS_FORMATTER_STYLE_MAX_VALUE
@ ZYDIS_FORMATTER_STYLE_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:87
ZydisSignedness_
ZydisSignedness_
Enum defining the signeness of integers to be used during formatting.
Definition Formatter.h:376
ZYDIS_SIGNEDNESS_MAX_VALUE
@ ZYDIS_SIGNEDNESS_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:394
ZYDIS_SIGNEDNESS_REQUIRED_BITS
@ ZYDIS_SIGNEDNESS_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:398
ZYDIS_SIGNEDNESS_AUTO
@ ZYDIS_SIGNEDNESS_AUTO
Automatically choose the most suitable mode based on the operands ZydisDecodedOperand....
Definition Formatter.h:381
ZYDIS_SIGNEDNESS_UNSIGNED
@ ZYDIS_SIGNEDNESS_UNSIGNED
Force unsigned values.
Definition Formatter.h:389
ZYDIS_SIGNEDNESS_SIGNED
@ ZYDIS_SIGNEDNESS_SIGNED
Force signed values.
Definition Formatter.h:385
ZydisFormatterFunction_
ZydisFormatterFunction_
Enum selecting a formatter function to be replaced with hooks.
Definition Formatter.h:440
ZYDIS_FORMATTER_FUNC_PRE_OPERAND
@ ZYDIS_FORMATTER_FUNC_PRE_OPERAND
This function is invoked before the formatter formats an operand.
Definition Formatter.h:472
ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS
@ ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS
This function is invoked to print absolute addresses.
Definition Formatter.h:531
ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST
@ ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST
This function is invoked to print the size of a memory operand (INTEL only).
Definition Formatter.h:566
ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL
@ ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL
This function is invoked to print relative addresses.
Definition Formatter.h:538
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM
@ ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM
This function is invoked to format a memory operand.
Definition Formatter.h:491
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM
@ ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM
This function is invoked to format an immediate operand.
Definition Formatter.h:503
ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC
@ ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC
This function is invoked to print the instruction mnemonic.
Definition Formatter.h:512
ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION
@ ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION
This function is invoked before the formatter formats an instruction.
Definition Formatter.h:448
ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR
@ ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR
This function is invoked after formatting an operand to print a EVEX/MVEX decorator.
Definition Formatter.h:579
ZYDIS_FORMATTER_FUNC_PRINT_REGISTER
@ ZYDIS_FORMATTER_FUNC_PRINT_REGISTER
This function is invoked to print a register.
Definition Formatter.h:519
ZYDIS_FORMATTER_FUNC_PRINT_DISP
@ ZYDIS_FORMATTER_FUNC_PRINT_DISP
This function is invoked to print a memory displacement value.
Definition Formatter.h:546
ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION
@ ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION
This function is invoked after the formatter formatted an instruction.
Definition Formatter.h:452
ZYDIS_FORMATTER_FUNC_POST_OPERAND
@ ZYDIS_FORMATTER_FUNC_POST_OPERAND
This function is invoked after the formatter formatted an operand.
Definition Formatter.h:476
ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT
@ ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT
This function is invoked to print the segment-register of a memory operand.
Definition Formatter.h:570
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR
@ ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR
This function is invoked to format a pointer operand.
Definition Formatter.h:495
ZYDIS_FORMATTER_FUNC_PRINT_IMM
@ ZYDIS_FORMATTER_FUNC_PRINT_IMM
This function is invoked to print an immediate value.
Definition Formatter.h:557
ZYDIS_FORMATTER_FUNC_REQUIRED_BITS
@ ZYDIS_FORMATTER_FUNC_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:590
ZYDIS_FORMATTER_FUNC_MAX_VALUE
@ ZYDIS_FORMATTER_FUNC_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:586
ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES
@ ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES
This function is invoked to print the instruction prefixes.
Definition Formatter.h:574
ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION
@ ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION
This function refers to the main formatting function.
Definition Formatter.h:463
ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG
@ ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG
This function is invoked to format a register operand.
Definition Formatter.h:483
ZydisFormatterRegisterFunc
ZyanStatus(* ZydisFormatterRegisterFunc)(const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisRegister reg)
Defines the ZydisFormatterRegisterFunc function prototype.
Definition Formatter.h:739
ZydisFormatterStyle
enum ZydisFormatterStyle_ ZydisFormatterStyle
Enum selecting the syntax to format the disassembly in.
ZydisFormatter
struct ZydisFormatter_ ZydisFormatter
Definition Formatter.h:646
ZydisPadding_
ZydisPadding_
Enum definining magic values that receive special treatment when used as padding properties of the fo...
Definition Formatter.h:408
ZYDIS_PADDING_REQUIRED_BITS
@ ZYDIS_PADDING_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:426
ZYDIS_PADDING_AUTO
@ ZYDIS_PADDING_AUTO
Padds the value to the current stack-width for addresses, or to the operand-width for immediate value...
Definition Formatter.h:417
ZYDIS_PADDING_MAX_VALUE
@ ZYDIS_PADDING_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:422
ZYDIS_PADDING_DISABLED
@ ZYDIS_PADDING_DISABLED
Disables padding.
Definition Formatter.h:412
ZydisFormatterFunction
enum ZydisFormatterFunction_ ZydisFormatterFunction
Enum selecting a formatter function to be replaced with hooks.
ZydisSignedness
enum ZydisSignedness_ ZydisSignedness
Enum defining the signeness of integers to be used during formatting.
ZydisFormatterProperty
enum ZydisFormatterProperty_ ZydisFormatterProperty
Enum selecting a property of the formatter.
ZydisFormatterContext
struct ZydisFormatterContext_ ZydisFormatterContext
Context structure that that is passed to all formatter.
ZydisNumericBase_
ZydisNumericBase_
Enum defining different mantissae to be used during formatting.
Definition Formatter.h:350
ZYDIS_NUMERIC_BASE_REQUIRED_BITS
@ ZYDIS_NUMERIC_BASE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:367
ZYDIS_NUMERIC_BASE_HEX
@ ZYDIS_NUMERIC_BASE_HEX
Hexadecimal system.
Definition Formatter.h:358
ZYDIS_NUMERIC_BASE_MAX_VALUE
@ ZYDIS_NUMERIC_BASE_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:363
ZYDIS_NUMERIC_BASE_DEC
@ ZYDIS_NUMERIC_BASE_DEC
Decimal system.
Definition Formatter.h:354
ZydisFormatterFunc
ZyanStatus(* ZydisFormatterFunc)(const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context)
Defines the ZydisFormatterFunc function prototype.
Definition Formatter.h:722
ZydisDecorator_
ZydisDecorator_
Enum of all decorator types.
Definition Formatter.h:601
ZYDIS_DECORATOR_REQUIRED_BITS
@ ZYDIS_DECORATOR_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:639
ZYDIS_DECORATOR_INVALID
@ ZYDIS_DECORATOR_INVALID
Definition Formatter.h:602
ZYDIS_DECORATOR_SAE
@ ZYDIS_DECORATOR_SAE
The suppress-all-exceptions decorator.
Definition Formatter.h:618
ZYDIS_DECORATOR_BC
@ ZYDIS_DECORATOR_BC
The broadcast decorator.
Definition Formatter.h:610
ZYDIS_DECORATOR_SWIZZLE
@ ZYDIS_DECORATOR_SWIZZLE
The register-swizzle decorator.
Definition Formatter.h:622
ZYDIS_DECORATOR_MASK
@ ZYDIS_DECORATOR_MASK
The embedded-mask decorator.
Definition Formatter.h:606
ZYDIS_DECORATOR_EH
@ ZYDIS_DECORATOR_EH
The eviction-hint decorator.
Definition Formatter.h:630
ZYDIS_DECORATOR_MAX_VALUE
@ ZYDIS_DECORATOR_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:635
ZYDIS_DECORATOR_CONVERSION
@ ZYDIS_DECORATOR_CONVERSION
The conversion decorator.
Definition Formatter.h:626
ZYDIS_DECORATOR_RC
@ ZYDIS_DECORATOR_RC
The rounding-control decorator.
Definition Formatter.h:614
ZydisFormatterProperty_
ZydisFormatterProperty_
Enum selecting a property of the formatter.
Definition Formatter.h:102
ZYDIS_FORMATTER_PROP_MAX_VALUE
@ ZYDIS_FORMATTER_PROP_MAX_VALUE
Maximum value of this enum.
Definition Formatter.h:337
ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS
@ ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS
Controls the signedness of immediate values.
Definition Formatter.h:223
ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER
@ ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER
Controls whether to prepend hexadecimal values with a leading zero if the first character is non-nume...
Definition Formatter.h:312
ZYDIS_FORMATTER_PROP_REQUIRED_BITS
@ ZYDIS_FORMATTER_PROP_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition Formatter.h:341
ZYDIS_FORMATTER_PROP_HEX_SUFFIX
@ ZYDIS_FORMATTER_PROP_HEX_SUFFIX
Controls the suffix for hexadecimal values.
Definition Formatter.h:330
ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES
@ ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES
Controls the printing of branch addresses.
Definition Formatter.h:136
ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC
@ ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC
Controls the letter-case for the mnemonic.
Definition Formatter.h:248
ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS
@ ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS
Controls the letter-case for typecasts.
Definition Formatter.h:260
ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES
@ ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES
Controls the letter-case for prefixes.
Definition Formatter.h:242
ZYDIS_FORMATTER_PROP_DEC_SUFFIX
@ ZYDIS_FORMATTER_PROP_DEC_SUFFIX
Controls the suffix for decimal values.
Definition Formatter.h:291
ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS
@ ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS
Controls the signedness of displacement values.
Definition Formatter.h:202
ZYDIS_FORMATTER_PROP_DISP_PADDING
@ ZYDIS_FORMATTER_PROP_DISP_PADDING
Controls the padding of displacement values.
Definition Formatter.h:209
ZYDIS_FORMATTER_PROP_HEX_PREFIX
@ ZYDIS_FORMATTER_PROP_HEX_PREFIX
Controls the prefix for hexadecimal values.
Definition Formatter.h:321
ZYDIS_FORMATTER_PROP_FORCE_SEGMENT
@ ZYDIS_FORMATTER_PROP_FORCE_SEGMENT
Controls the printing of segment prefixes.
Definition Formatter.h:121
ZYDIS_FORMATTER_PROP_ADDR_BASE
@ ZYDIS_FORMATTER_PROP_ADDR_BASE
Controls the base of address values.
Definition Formatter.h:170
ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS
@ ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS
Controls the letter-case for registers.
Definition Formatter.h:254
ZYDIS_FORMATTER_PROP_DISP_BASE
@ ZYDIS_FORMATTER_PROP_DISP_BASE
Controls the base of displacement values.
Definition Formatter.h:198
ZYDIS_FORMATTER_PROP_IMM_BASE
@ ZYDIS_FORMATTER_PROP_IMM_BASE
Controls the base of immediate values.
Definition Formatter.h:216
ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL
@ ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL
Controls the printing of EIP/RIP-relative addresses.
Definition Formatter.h:144
ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE
@ ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE
Controls the printing of the scale-factor component for memory operands.
Definition Formatter.h:128
ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE
@ ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE
Controls the printing of branch-instructions sizes.
Definition Formatter.h:153
ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS
@ ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS
Controls the letter-case for decorators.
Definition Formatter.h:268
ZYDIS_FORMATTER_PROP_IMM_PADDING
@ ZYDIS_FORMATTER_PROP_IMM_PADDING
Controls the padding of immediate values.
Definition Formatter.h:231
ZYDIS_FORMATTER_PROP_FORCE_SIZE
@ ZYDIS_FORMATTER_PROP_FORCE_SIZE
Controls the printing of effective operand-size suffixes (AT&T) or operand-sizes of memory operands (...
Definition Formatter.h:114
ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE
@ ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE
Controls the padding of absolute address values.
Definition Formatter.h:183
ZYDIS_FORMATTER_PROP_HEX_UPPERCASE
@ ZYDIS_FORMATTER_PROP_HEX_UPPERCASE
Controls the letter-case of hexadecimal values.
Definition Formatter.h:302
ZYDIS_FORMATTER_PROP_DEC_PREFIX
@ ZYDIS_FORMATTER_PROP_DEC_PREFIX
Controls the prefix for decimal values.
Definition Formatter.h:282
ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES
@ ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES
Controls the printing of instruction prefixes.
Definition Formatter.h:161
ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE
@ ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE
Controls the padding of relative address values.
Definition Formatter.h:191
ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS
@ ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS
Controls the signedness of relative addresses.
Definition Formatter.h:175
ZydisPadding
enum ZydisPadding_ ZydisPadding
Enum definining magic values that receive special treatment when used as padding properties of the fo...
ZydisFormatterDecoratorFunc
ZyanStatus(* ZydisFormatterDecoratorFunc)(const ZydisFormatter *formatter, ZydisFormatterBuffer *buffer, ZydisFormatterContext *context, ZydisDecorator decorator)
Defines the ZydisFormatterDecoratorFunc function prototype.
Definition Formatter.h:756
ZydisFormatterInit
ZYDIS_EXPORT ZyanStatus ZydisFormatterInit(ZydisFormatter *formatter, ZydisFormatterStyle style)
Initializes the given ZydisFormatter instance.
ZydisFormatterTokenizeInstruction
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.
ZydisFormatterFormatInstruction
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.
ZydisFormatterTokenizeOperand
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.
ZydisFormatterFormatOperand
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.
ZydisFormatterSetHook
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.
ZydisFormatterSetProperty
ZYDIS_EXPORT ZyanStatus ZydisFormatterSetProperty(ZydisFormatter *formatter, ZydisFormatterProperty property, ZyanUPointer value)
Changes the value of the specified formatter property.
ZydisFormatterContext_
Context structure that that is passed to all formatter.
Definition Formatter.h:652
ZydisFormatterContext_::instruction
const ZydisDecodedInstruction * instruction
A pointer to the ZydisDecodedInstruction struct.
Definition Formatter.h:656
ZydisFormatterContext_::user_data
void * user_data
A pointer to user-defined data.
Definition Formatter.h:675
ZydisFormatterContext_::runtime_address
ZyanU64 runtime_address
The runtime address of the instruction.
Definition Formatter.h:668
ZydisFormatterContext_::operands
const ZydisDecodedOperand * operands
A pointer to the first ZydisDecodedOperand struct of the instruction.
Definition Formatter.h:660
ZydisFormatterContext_::operand
const ZydisDecodedOperand * operand
A pointer to the ZydisDecodedOperand struct.
Definition Formatter.h:664
ZydisFormatter_
Context structure keeping track of internal state of the formatter.
Definition Formatter.h:773
ZydisFormatter_::func_format_operand_imm
ZydisFormatterFunc func_format_operand_imm
The ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_IMM function.
Definition Formatter.h:930
ZydisFormatter_::func_post_operand
ZydisFormatterFunc func_post_operand
The ZYDIS_FORMATTER_FUNC_POST_OPERAND function.
Definition Formatter.h:914
ZydisFormatter_::detailed_prefixes
ZyanBool detailed_prefixes
The ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES property.
Definition Formatter.h:805
ZydisFormatter_::style
ZydisFormatterStyle style
The formatter style.
Definition Formatter.h:777
ZydisFormatter_::func_print_disp
ZydisFormatterFunc func_print_disp
The ZYDIS_FORMATTER_FUNC_PRINT_DISP function.
Definition Formatter.h:950
ZydisFormatter_::number_format
struct ZydisFormatter_::@314255174365140044006164156323347007115217227330 number_format[ZYDIS_NUMERIC_BASE_MAX_VALUE+1][2]
The number formats for all numeric bases.
ZydisFormatter_::func_format_operand_mem
ZydisFormatterFunc func_format_operand_mem
The ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_MEM function.
Definition Formatter.h:922
ZydisFormatter_::addr_base
ZydisNumericBase addr_base
The ZYDIS_FORMATTER_PROP_ADDR_BASE property.
Definition Formatter.h:809
ZydisFormatter_::imm_padding
ZydisPadding imm_padding
The ZYDIS_FORMATTER_PROP_IMM_PADDING property.
Definition Formatter.h:845
ZydisFormatter_::force_relative_branches
ZyanBool force_relative_branches
The ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_BRANCHES property.
Definition Formatter.h:793
ZydisFormatter_::disp_padding
ZydisPadding disp_padding
The ZYDIS_FORMATTER_PROP_DISP_PADDING property.
Definition Formatter.h:833
ZydisFormatter_::imm_signedness
ZydisSignedness imm_signedness
The ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS property.
Definition Formatter.h:841
ZydisFormatter_::hex_uppercase
ZyanBool hex_uppercase
The ZYDIS_FORMATTER_PROP_HEX_UPPERCASE property.
Definition Formatter.h:869
ZydisFormatter_::func_post_instruction
ZydisFormatterFunc func_post_instruction
The ZYDIS_FORMATTER_FUNC_POST_INSTRUCTION function.
Definition Formatter.h:902
ZydisFormatter_::addr_padding_absolute
ZydisPadding addr_padding_absolute
The ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE property.
Definition Formatter.h:817
ZydisFormatter_::func_print_decorator
ZydisFormatterDecoratorFunc func_print_decorator
The ZYDIS_FORMATTER_FUNC_PRINT_DECORATOR function.
Definition Formatter.h:970
ZydisFormatter_::force_memory_segment
ZyanBool force_memory_segment
The ZYDIS_FORMATTER_PROP_FORCE_SEGMENT property.
Definition Formatter.h:785
ZydisFormatter_::case_decorators
ZyanI32 case_decorators
The ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS property.
Definition Formatter.h:865
ZydisFormatter_::addr_padding_relative
ZydisPadding addr_padding_relative
The ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE property.
Definition Formatter.h:821
ZydisFormatter_::func_print_register
ZydisFormatterRegisterFunc func_print_register
The ZYDIS_FORMATTER_FUNC_PRINT_REGISTER function.
Definition Formatter.h:938
ZydisFormatter_::imm_base
ZydisNumericBase imm_base
The ZYDIS_FORMATTER_PROP_IMM_BASE property.
Definition Formatter.h:837
ZydisFormatter_::disp_base
ZydisNumericBase disp_base
The ZYDIS_FORMATTER_PROP_DISP_BASE property.
Definition Formatter.h:825
ZydisFormatter_::force_memory_scale
ZyanBool force_memory_scale
The ZYDIS_FORMATTER_PROP_FORCE_SCALE_ONE property.
Definition Formatter.h:789
ZydisFormatter_::string
const ZyanStringView * string
A pointer to the ZyanStringView to use as prefix/suffix.
Definition Formatter.h:885
ZydisFormatter_::disp_signedness
ZydisSignedness disp_signedness
The ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS property.
Definition Formatter.h:829
ZydisFormatter_::case_mnemonic
ZyanI32 case_mnemonic
The ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC property.
Definition Formatter.h:853
ZydisFormatter_::case_registers
ZyanI32 case_registers
The ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS property.
Definition Formatter.h:857
ZydisFormatter_::func_format_operand_ptr
ZydisFormatterFunc func_format_operand_ptr
The ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_PTR function.
Definition Formatter.h:926
ZydisFormatter_::force_memory_size
ZyanBool force_memory_size
The ZYDIS_FORMATTER_PROP_FORCE_SIZE property.
Definition Formatter.h:781
ZydisFormatter_::func_format_instruction
ZydisFormatterFunc func_format_instruction
The ZYDIS_FORMATTER_FUNC_FORMAT_INSTRUCTION function.
Definition Formatter.h:906
ZydisFormatter_::func_print_address_abs
ZydisFormatterFunc func_print_address_abs
The ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_ABS function.
Definition Formatter.h:942
ZydisFormatter_::force_relative_riprel
ZyanBool force_relative_riprel
The ZYDIS_FORMATTER_PROP_FORCE_RELATIVE_RIPREL property.
Definition Formatter.h:797
ZydisFormatter_::case_prefixes
ZyanI32 case_prefixes
The ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES property.
Definition Formatter.h:849
ZydisFormatter_::hex_force_leading_number
ZyanBool hex_force_leading_number
The ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER property.
Definition Formatter.h:873
ZydisFormatter_::string_data
ZyanStringView string_data
The ZyanStringView to use as prefix/suffix.
Definition Formatter.h:889
ZydisFormatter_::addr_signedness
ZydisSignedness addr_signedness
The ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS property.
Definition Formatter.h:813
ZydisFormatter_::print_branch_size
ZyanBool print_branch_size
The ZYDIS_FORMATTER_PROP_PRINT_BRANCH_SIZE property.
Definition Formatter.h:801
ZydisFormatter_::func_pre_operand
ZydisFormatterFunc func_pre_operand
The ZYDIS_FORMATTER_FUNC_PRE_OPERAND function.
Definition Formatter.h:910
ZydisFormatter_::buffer
char buffer[11]
The actual string data.
Definition Formatter.h:893
ZydisFormatter_::func_print_typecast
ZydisFormatterFunc func_print_typecast
The ZYDIS_FORMATTER_FUNC_PRINT_TYPECAST function.
Definition Formatter.h:958
ZydisFormatter_::func_format_operand_reg
ZydisFormatterFunc func_format_operand_reg
The ZYDIS_FORMATTER_FUNC_FORMAT_OPERAND_REG function.
Definition Formatter.h:918
ZydisFormatter_::func_print_address_rel
ZydisFormatterFunc func_print_address_rel
The ZYDIS_FORMATTER_FUNC_PRINT_ADDRESS_REL function.
Definition Formatter.h:946
ZydisFormatter_::func_print_imm
ZydisFormatterFunc func_print_imm
The ZYDIS_FORMATTER_FUNC_PRINT_IMM function.
Definition Formatter.h:954
ZydisFormatter_::case_typecasts
ZyanI32 case_typecasts
The ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS property.
Definition Formatter.h:861
ZydisFormatter_::func_print_segment
ZydisFormatterFunc func_print_segment
The ZYDIS_FORMATTER_FUNC_PRINT_SEGMENT function.
Definition Formatter.h:962
ZydisFormatter_::func_print_mnemonic
ZydisFormatterFunc func_print_mnemonic
The `ZYDIS_FORMATTER_FUNC_PRINT_MNEMONIC function.
Definition Formatter.h:934
ZydisFormatter_::func_pre_instruction
ZydisFormatterFunc func_pre_instruction
The ZYDIS_FORMATTER_FUNC_PRE_INSTRUCTION function.
Definition Formatter.h:898
ZydisFormatter_::func_print_prefixes
ZydisFormatterFunc func_print_prefixes
The ZYDIS_FORMATTER_FUNC_PRINT_PREFIXES function.
Definition Formatter.h:966