Zydis v4.1.1

Loading...
Searching...
No Matches
SharedTypes.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_SHAREDTYPES_H
33#define ZYDIS_SHAREDTYPES_H
34
35#include <Zycore/Types.h>
36
37#ifdef __cplusplus
38 extern "C" {
39#endif
40
41/* ============================================================================================== */
42/* Macros */
43/* ============================================================================================== */
44
45/* ---------------------------------------------------------------------------------------------- */
46/* Constants */
47/* ---------------------------------------------------------------------------------------------- */
48
49#define ZYDIS_MAX_INSTRUCTION_LENGTH 15
50#define ZYDIS_MAX_OPERAND_COUNT 10 // TODO: Auto generate
51#define ZYDIS_MAX_OPERAND_COUNT_VISIBLE 5 // TODO: Auto generate
52
53/* ---------------------------------------------------------------------------------------------- */
54
55/* ============================================================================================== */
56/* Enums and types */
57/* ============================================================================================== */
58
59/* ---------------------------------------------------------------------------------------------- */
60/* Machine mode */
61/* ---------------------------------------------------------------------------------------------- */
62
66 typedef enum ZydisMachineMode_
67{
71 ZYDIS_MACHINE_MODE_LONG_64,
75 ZYDIS_MACHINE_MODE_LONG_COMPAT_32,
79 ZYDIS_MACHINE_MODE_LONG_COMPAT_16,
83 ZYDIS_MACHINE_MODE_LEGACY_32,
87 ZYDIS_MACHINE_MODE_LEGACY_16,
91 ZYDIS_MACHINE_MODE_REAL_16,
92
96 ZYDIS_MACHINE_MODE_MAX_VALUE = ZYDIS_MACHINE_MODE_REAL_16,
100 ZYDIS_MACHINE_MODE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_MACHINE_MODE_MAX_VALUE)
101} ZydisMachineMode;
102
103/* ---------------------------------------------------------------------------------------------- */
104/* Stack width */
105/* ---------------------------------------------------------------------------------------------- */
106
110 typedef enum ZydisStackWidth_
111{
112 ZYDIS_STACK_WIDTH_16,
113 ZYDIS_STACK_WIDTH_32,
114 ZYDIS_STACK_WIDTH_64,
115
119 ZYDIS_STACK_WIDTH_MAX_VALUE = ZYDIS_STACK_WIDTH_64,
123 ZYDIS_STACK_WIDTH_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_STACK_WIDTH_MAX_VALUE)
124} ZydisStackWidth;
125
126/* ---------------------------------------------------------------------------------------------- */
127/* Element type */
128/* ---------------------------------------------------------------------------------------------- */
129
133 typedef enum ZydisElementType_
134{
135 ZYDIS_ELEMENT_TYPE_INVALID,
139 ZYDIS_ELEMENT_TYPE_STRUCT,
143 ZYDIS_ELEMENT_TYPE_UINT,
147 ZYDIS_ELEMENT_TYPE_INT,
151 ZYDIS_ELEMENT_TYPE_FLOAT16,
155 ZYDIS_ELEMENT_TYPE_FLOAT32,
159 ZYDIS_ELEMENT_TYPE_FLOAT64,
163 ZYDIS_ELEMENT_TYPE_FLOAT80,
167 ZYDIS_ELEMENT_TYPE_BFLOAT16,
171 ZYDIS_ELEMENT_TYPE_LONGBCD,
175 ZYDIS_ELEMENT_TYPE_CC,
176
180 ZYDIS_ELEMENT_TYPE_MAX_VALUE = ZYDIS_ELEMENT_TYPE_CC,
184 ZYDIS_ELEMENT_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_ELEMENT_TYPE_MAX_VALUE)
185} ZydisElementType;
186
187/* ---------------------------------------------------------------------------------------------- */
188/* Element size */
189/* ---------------------------------------------------------------------------------------------- */
190
194 typedef ZyanU16 ZydisElementSize;
195
196/* ---------------------------------------------------------------------------------------------- */
197/* Operand type */
198/* ---------------------------------------------------------------------------------------------- */
199
203 typedef enum ZydisOperandType_
204{
208 ZYDIS_OPERAND_TYPE_UNUSED,
212 ZYDIS_OPERAND_TYPE_REGISTER,
216 ZYDIS_OPERAND_TYPE_MEMORY,
220 ZYDIS_OPERAND_TYPE_POINTER,
224 ZYDIS_OPERAND_TYPE_IMMEDIATE,
225
229 ZYDIS_OPERAND_TYPE_MAX_VALUE = ZYDIS_OPERAND_TYPE_IMMEDIATE,
233 ZYDIS_OPERAND_TYPE_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE)
234} ZydisOperandType;
235
236// If asserts are failing here remember to update encoder table generator before fixing asserts
237 ZYAN_STATIC_ASSERT(ZYAN_BITS_TO_REPRESENT(
238 ZYDIS_OPERAND_TYPE_MAX_VALUE - ZYDIS_OPERAND_TYPE_REGISTER) == 2);
239
240/* ---------------------------------------------------------------------------------------------- */
241/* Operand encoding */
242/* ---------------------------------------------------------------------------------------------- */
243
247 typedef enum ZydisOperandEncoding_
248{
249 ZYDIS_OPERAND_ENCODING_NONE,
250 ZYDIS_OPERAND_ENCODING_MODRM_REG,
251 ZYDIS_OPERAND_ENCODING_MODRM_RM,
252 ZYDIS_OPERAND_ENCODING_OPCODE,
253 ZYDIS_OPERAND_ENCODING_NDSNDD,
254 ZYDIS_OPERAND_ENCODING_IS4,
255 ZYDIS_OPERAND_ENCODING_MASK,
256 ZYDIS_OPERAND_ENCODING_DISP8,
257 ZYDIS_OPERAND_ENCODING_DISP16,
258 ZYDIS_OPERAND_ENCODING_DISP32,
259 ZYDIS_OPERAND_ENCODING_DISP64,
260 ZYDIS_OPERAND_ENCODING_DISP16_32_64,
261 ZYDIS_OPERAND_ENCODING_DISP32_32_64,
262 ZYDIS_OPERAND_ENCODING_DISP16_32_32,
263 ZYDIS_OPERAND_ENCODING_UIMM8,
264 ZYDIS_OPERAND_ENCODING_UIMM16,
265 ZYDIS_OPERAND_ENCODING_UIMM32,
266 ZYDIS_OPERAND_ENCODING_UIMM64,
267 ZYDIS_OPERAND_ENCODING_UIMM16_32_64,
268 ZYDIS_OPERAND_ENCODING_UIMM32_32_64,
269 ZYDIS_OPERAND_ENCODING_UIMM16_32_32,
270 ZYDIS_OPERAND_ENCODING_SIMM8,
271 ZYDIS_OPERAND_ENCODING_SIMM16,
272 ZYDIS_OPERAND_ENCODING_SIMM32,
273 ZYDIS_OPERAND_ENCODING_SIMM64,
274 ZYDIS_OPERAND_ENCODING_SIMM16_32_64,
275 ZYDIS_OPERAND_ENCODING_SIMM32_32_64,
276 ZYDIS_OPERAND_ENCODING_SIMM16_32_32,
277 ZYDIS_OPERAND_ENCODING_JIMM8,
278 ZYDIS_OPERAND_ENCODING_JIMM16,
279 ZYDIS_OPERAND_ENCODING_JIMM32,
280 ZYDIS_OPERAND_ENCODING_JIMM64,
281 ZYDIS_OPERAND_ENCODING_JIMM16_32_64,
282 ZYDIS_OPERAND_ENCODING_JIMM32_32_64,
283 ZYDIS_OPERAND_ENCODING_JIMM16_32_32,
284
288 ZYDIS_OPERAND_ENCODING_MAX_VALUE = ZYDIS_OPERAND_ENCODING_JIMM16_32_32,
292 ZYDIS_OPERAND_ENCODING_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ENCODING_MAX_VALUE)
293} ZydisOperandEncoding;
294
295/* ---------------------------------------------------------------------------------------------- */
296/* Operand visibility */
297/* ---------------------------------------------------------------------------------------------- */
298
302 typedef enum ZydisOperandVisibility_
303{
304 ZYDIS_OPERAND_VISIBILITY_INVALID,
308 ZYDIS_OPERAND_VISIBILITY_EXPLICIT,
312 ZYDIS_OPERAND_VISIBILITY_IMPLICIT,
316 ZYDIS_OPERAND_VISIBILITY_HIDDEN,
317
321 ZYDIS_OPERAND_VISIBILITY_MAX_VALUE = ZYDIS_OPERAND_VISIBILITY_HIDDEN,
325 ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS =
326 ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_VISIBILITY_MAX_VALUE)
327} ZydisOperandVisibility;
328
329/* ---------------------------------------------------------------------------------------------- */
330/* Operand action */
331/* ---------------------------------------------------------------------------------------------- */
332
336 typedef enum ZydisOperandAction_
337{
338 /* ------------------------------------------------------------------------------------------ */
339 /* Elemental actions */
340 /* ------------------------------------------------------------------------------------------ */
341
345 ZYDIS_OPERAND_ACTION_READ = 0x01,
349 ZYDIS_OPERAND_ACTION_WRITE = 0x02,
353 ZYDIS_OPERAND_ACTION_CONDREAD = 0x04,
357 ZYDIS_OPERAND_ACTION_CONDWRITE = 0x08,
358
359 /* ------------------------------------------------------------------------------------------ */
360 /* Combined actions */
361 /* ------------------------------------------------------------------------------------------ */
362
366 ZYDIS_OPERAND_ACTION_READWRITE = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_WRITE,
371 ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE =
372 ZYDIS_OPERAND_ACTION_CONDREAD | ZYDIS_OPERAND_ACTION_CONDWRITE,
377 ZYDIS_OPERAND_ACTION_READ_CONDWRITE =
378 ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_CONDWRITE,
383 ZYDIS_OPERAND_ACTION_CONDREAD_WRITE =
384 ZYDIS_OPERAND_ACTION_CONDREAD | ZYDIS_OPERAND_ACTION_WRITE,
385
389 ZYDIS_OPERAND_ACTION_MASK_READ = ZYDIS_OPERAND_ACTION_READ | ZYDIS_OPERAND_ACTION_CONDREAD,
393 ZYDIS_OPERAND_ACTION_MASK_WRITE = ZYDIS_OPERAND_ACTION_WRITE | ZYDIS_OPERAND_ACTION_CONDWRITE,
394
395 /* ------------------------------------------------------------------------------------------ */
396
400 ZYDIS_OPERAND_ACTION_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_ACTION_CONDWRITE)
401} ZydisOperandAction;
402
406 typedef ZyanU8 ZydisOperandActions;
407
408/* ---------------------------------------------------------------------------------------------- */
409/* Instruction encoding */
410/* ---------------------------------------------------------------------------------------------- */
411
415 typedef enum ZydisInstructionEncoding_
416{
420 ZYDIS_INSTRUCTION_ENCODING_LEGACY,
424 ZYDIS_INSTRUCTION_ENCODING_3DNOW,
428 ZYDIS_INSTRUCTION_ENCODING_XOP,
432 ZYDIS_INSTRUCTION_ENCODING_VEX,
436 ZYDIS_INSTRUCTION_ENCODING_EVEX,
440 ZYDIS_INSTRUCTION_ENCODING_MVEX,
441
445 ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE = ZYDIS_INSTRUCTION_ENCODING_MVEX,
449 ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS =
450 ZYAN_BITS_TO_REPRESENT(ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE)
451} ZydisInstructionEncoding;
452
453/* ---------------------------------------------------------------------------------------------- */
454/* Opcode map */
455/* ---------------------------------------------------------------------------------------------- */
456
460 typedef enum ZydisOpcodeMap_
461{
462 ZYDIS_OPCODE_MAP_DEFAULT,
463 ZYDIS_OPCODE_MAP_0F,
464 ZYDIS_OPCODE_MAP_0F38,
465 ZYDIS_OPCODE_MAP_0F3A,
466 ZYDIS_OPCODE_MAP_MAP4, // not used
467 ZYDIS_OPCODE_MAP_MAP5,
468 ZYDIS_OPCODE_MAP_MAP6,
469 ZYDIS_OPCODE_MAP_MAP7, // not used
470 ZYDIS_OPCODE_MAP_0F0F,
471 ZYDIS_OPCODE_MAP_XOP8,
472 ZYDIS_OPCODE_MAP_XOP9,
473 ZYDIS_OPCODE_MAP_XOPA,
474
478 ZYDIS_OPCODE_MAP_MAX_VALUE = ZYDIS_OPCODE_MAP_XOPA,
482 ZYDIS_OPCODE_MAP_REQUIRED_BITS = ZYAN_BITS_TO_REPRESENT(ZYDIS_OPCODE_MAP_MAX_VALUE)
483} ZydisOpcodeMap;
484
485/* ---------------------------------------------------------------------------------------------- */
486/* Instruction attributes */
487/* ---------------------------------------------------------------------------------------------- */
488
497
501 typedef ZyanU64 ZydisInstructionAttributes;
502
506#define ZYDIS_ATTRIB_HAS_MODRM (1ULL << 0)
510#define ZYDIS_ATTRIB_HAS_SIB (1ULL << 1)
514#define ZYDIS_ATTRIB_HAS_REX (1ULL << 2)
518#define ZYDIS_ATTRIB_HAS_XOP (1ULL << 3)
522#define ZYDIS_ATTRIB_HAS_VEX (1ULL << 4)
526#define ZYDIS_ATTRIB_HAS_EVEX (1ULL << 5)
530#define ZYDIS_ATTRIB_HAS_MVEX (1ULL << 6)
534#define ZYDIS_ATTRIB_IS_RELATIVE (1ULL << 7)
540#define ZYDIS_ATTRIB_IS_PRIVILEGED (1ULL << 8)
544#define ZYDIS_ATTRIB_CPUFLAG_ACCESS (1ULL << 9)
548#define ZYDIS_ATTRIB_CPU_STATE_CR (1ULL << 10)
552#define ZYDIS_ATTRIB_CPU_STATE_CW (1ULL << 11)
556#define ZYDIS_ATTRIB_FPU_STATE_CR (1ULL << 12)
560#define ZYDIS_ATTRIB_FPU_STATE_CW (1ULL << 13)
564#define ZYDIS_ATTRIB_XMM_STATE_CR (1ULL << 14)
568#define ZYDIS_ATTRIB_XMM_STATE_CW (1ULL << 15)
572#define ZYDIS_ATTRIB_ACCEPTS_LOCK (1ULL << 16)
576#define ZYDIS_ATTRIB_ACCEPTS_REP (1ULL << 17)
580#define ZYDIS_ATTRIB_ACCEPTS_REPE (1ULL << 18)
584#define ZYDIS_ATTRIB_ACCEPTS_REPZ ZYDIS_ATTRIB_ACCEPTS_REPE
588#define ZYDIS_ATTRIB_ACCEPTS_REPNE (1ULL << 19)
592#define ZYDIS_ATTRIB_ACCEPTS_REPNZ ZYDIS_ATTRIB_ACCEPTS_REPNE
596#define ZYDIS_ATTRIB_ACCEPTS_BND (1ULL << 20)
600#define ZYDIS_ATTRIB_ACCEPTS_XACQUIRE (1ULL << 21)
604#define ZYDIS_ATTRIB_ACCEPTS_XRELEASE (1ULL << 22)
609#define ZYDIS_ATTRIB_ACCEPTS_HLE_WITHOUT_LOCK (1ULL << 23)
613#define ZYDIS_ATTRIB_ACCEPTS_BRANCH_HINTS (1ULL << 24)
617#define ZYDIS_ATTRIB_ACCEPTS_NOTRACK (1ULL << 25)
622#define ZYDIS_ATTRIB_ACCEPTS_SEGMENT (1ULL << 26)
626#define ZYDIS_ATTRIB_HAS_LOCK (1ULL << 27)
630#define ZYDIS_ATTRIB_HAS_REP (1ULL << 28)
634#define ZYDIS_ATTRIB_HAS_REPE (1ULL << 29)
638#define ZYDIS_ATTRIB_HAS_REPZ ZYDIS_ATTRIB_HAS_REPE
642#define ZYDIS_ATTRIB_HAS_REPNE (1ULL << 30)
646#define ZYDIS_ATTRIB_HAS_REPNZ ZYDIS_ATTRIB_HAS_REPNE
650#define ZYDIS_ATTRIB_HAS_BND (1ULL << 31)
654#define ZYDIS_ATTRIB_HAS_XACQUIRE (1ULL << 32)
658#define ZYDIS_ATTRIB_HAS_XRELEASE (1ULL << 33)
662#define ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN (1ULL << 34)
666#define ZYDIS_ATTRIB_HAS_BRANCH_TAKEN (1ULL << 35)
670#define ZYDIS_ATTRIB_HAS_NOTRACK (1ULL << 36)
674#define ZYDIS_ATTRIB_HAS_SEGMENT_CS (1ULL << 37)
678#define ZYDIS_ATTRIB_HAS_SEGMENT_SS (1ULL << 38)
682#define ZYDIS_ATTRIB_HAS_SEGMENT_DS (1ULL << 39)
686#define ZYDIS_ATTRIB_HAS_SEGMENT_ES (1ULL << 40)
690#define ZYDIS_ATTRIB_HAS_SEGMENT_FS (1ULL << 41)
694#define ZYDIS_ATTRIB_HAS_SEGMENT_GS (1ULL << 42)
698#define ZYDIS_ATTRIB_HAS_SEGMENT (ZYDIS_ATTRIB_HAS_SEGMENT_CS | \
699 ZYDIS_ATTRIB_HAS_SEGMENT_SS | \
700 ZYDIS_ATTRIB_HAS_SEGMENT_DS | \
701 ZYDIS_ATTRIB_HAS_SEGMENT_ES | \
702 ZYDIS_ATTRIB_HAS_SEGMENT_FS | \
703 ZYDIS_ATTRIB_HAS_SEGMENT_GS)
704
707#define ZYDIS_ATTRIB_HAS_OPERANDSIZE (1ULL << 43) // TODO: rename
711#define ZYDIS_ATTRIB_HAS_ADDRESSSIZE (1ULL << 44) // TODO: rename
717#define ZYDIS_ATTRIB_HAS_EVEX_B (1ULL << 45) // TODO: rename
718
722
723/* ---------------------------------------------------------------------------------------------- */
724
725/* ============================================================================================== */
726
727#ifdef __cplusplus
728}
729#endif
730
731#endif /* ZYDIS_SHAREDTYPES_H */
ZydisElementType_
ZydisElementType_
Defines the ZydisElementType enum.
Definition SharedTypes.h:134
ZYDIS_ELEMENT_TYPE_LONGBCD
@ ZYDIS_ELEMENT_TYPE_LONGBCD
Binary coded decimal value.
Definition SharedTypes.h:171
ZYDIS_ELEMENT_TYPE_REQUIRED_BITS
@ ZYDIS_ELEMENT_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:184
ZYDIS_ELEMENT_TYPE_UINT
@ ZYDIS_ELEMENT_TYPE_UINT
Unsigned integer value.
Definition SharedTypes.h:143
ZYDIS_ELEMENT_TYPE_FLOAT64
@ ZYDIS_ELEMENT_TYPE_FLOAT64
64-bit floating point value (double).
Definition SharedTypes.h:159
ZYDIS_ELEMENT_TYPE_INT
@ ZYDIS_ELEMENT_TYPE_INT
Signed integer value.
Definition SharedTypes.h:147
ZYDIS_ELEMENT_TYPE_INVALID
@ ZYDIS_ELEMENT_TYPE_INVALID
Definition SharedTypes.h:135
ZYDIS_ELEMENT_TYPE_STRUCT
@ ZYDIS_ELEMENT_TYPE_STRUCT
A struct type.
Definition SharedTypes.h:139
ZYDIS_ELEMENT_TYPE_FLOAT16
@ ZYDIS_ELEMENT_TYPE_FLOAT16
16-bit floating point value (half).
Definition SharedTypes.h:151
ZYDIS_ELEMENT_TYPE_BFLOAT16
@ ZYDIS_ELEMENT_TYPE_BFLOAT16
16-bit brain floating point value.
Definition SharedTypes.h:167
ZYDIS_ELEMENT_TYPE_MAX_VALUE
@ ZYDIS_ELEMENT_TYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:180
ZYDIS_ELEMENT_TYPE_FLOAT32
@ ZYDIS_ELEMENT_TYPE_FLOAT32
32-bit floating point value (single).
Definition SharedTypes.h:155
ZYDIS_ELEMENT_TYPE_FLOAT80
@ ZYDIS_ELEMENT_TYPE_FLOAT80
80-bit floating point value (extended).
Definition SharedTypes.h:163
ZYDIS_ELEMENT_TYPE_CC
@ ZYDIS_ELEMENT_TYPE_CC
A condition code (e.g.
Definition SharedTypes.h:175
ZydisOperandEncoding
enum ZydisOperandEncoding_ ZydisOperandEncoding
Defines the ZydisOperandEncoding enum.
ZydisOperandVisibility_
ZydisOperandVisibility_
Defines the ZydisOperandVisibility enum.
Definition SharedTypes.h:303
ZYDIS_OPERAND_VISIBILITY_IMPLICIT
@ ZYDIS_OPERAND_VISIBILITY_IMPLICIT
The operand is part of the opcode, but listed as an operand.
Definition SharedTypes.h:312
ZYDIS_OPERAND_VISIBILITY_EXPLICIT
@ ZYDIS_OPERAND_VISIBILITY_EXPLICIT
The operand is explicitly encoded in the instruction.
Definition SharedTypes.h:308
ZYDIS_OPERAND_VISIBILITY_INVALID
@ ZYDIS_OPERAND_VISIBILITY_INVALID
Definition SharedTypes.h:304
ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS
@ ZYDIS_OPERAND_VISIBILITY_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:325
ZYDIS_OPERAND_VISIBILITY_MAX_VALUE
@ ZYDIS_OPERAND_VISIBILITY_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:321
ZYDIS_OPERAND_VISIBILITY_HIDDEN
@ ZYDIS_OPERAND_VISIBILITY_HIDDEN
The operand is part of the opcode, and not typically listed as an operand.
Definition SharedTypes.h:316
ZydisMachineMode_
ZydisMachineMode_
Defines the ZydisMachineMode enum.
Definition SharedTypes.h:67
ZYDIS_MACHINE_MODE_LONG_COMPAT_16
@ ZYDIS_MACHINE_MODE_LONG_COMPAT_16
16 bit protected mode.
Definition SharedTypes.h:79
ZYDIS_MACHINE_MODE_LONG_COMPAT_32
@ ZYDIS_MACHINE_MODE_LONG_COMPAT_32
32 bit protected mode.
Definition SharedTypes.h:75
ZYDIS_MACHINE_MODE_REAL_16
@ ZYDIS_MACHINE_MODE_REAL_16
16 bit real mode.
Definition SharedTypes.h:91
ZYDIS_MACHINE_MODE_REQUIRED_BITS
@ ZYDIS_MACHINE_MODE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:100
ZYDIS_MACHINE_MODE_LEGACY_16
@ ZYDIS_MACHINE_MODE_LEGACY_16
16 bit protected mode.
Definition SharedTypes.h:87
ZYDIS_MACHINE_MODE_MAX_VALUE
@ ZYDIS_MACHINE_MODE_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:96
ZYDIS_MACHINE_MODE_LEGACY_32
@ ZYDIS_MACHINE_MODE_LEGACY_32
32 bit protected mode.
Definition SharedTypes.h:83
ZYDIS_MACHINE_MODE_LONG_64
@ ZYDIS_MACHINE_MODE_LONG_64
64 bit mode.
Definition SharedTypes.h:71
ZydisOperandAction
enum ZydisOperandAction_ ZydisOperandAction
Defines the ZydisOperandAction enum.
ZydisInstructionEncoding
enum ZydisInstructionEncoding_ ZydisInstructionEncoding
Defines the ZydisInstructionEncoding enum.
ZydisOperandType
enum ZydisOperandType_ ZydisOperandType
Defines the ZydisOperandType enum.
ZydisOperandVisibility
enum ZydisOperandVisibility_ ZydisOperandVisibility
Defines the ZydisOperandVisibility enum.
ZydisOperandActions
ZyanU8 ZydisOperandActions
Defines the ZydisOperandActions data-type.
Definition SharedTypes.h:406
ZydisStackWidth
enum ZydisStackWidth_ ZydisStackWidth
Defines the ZydisStackWidth enum.
ZydisOpcodeMap
enum ZydisOpcodeMap_ ZydisOpcodeMap
Defines the ZydisOpcodeMap enum.
ZydisOperandEncoding_
ZydisOperandEncoding_
Defines the ZydisOperandEncoding enum.
Definition SharedTypes.h:248
ZYDIS_OPERAND_ENCODING_MODRM_RM
@ ZYDIS_OPERAND_ENCODING_MODRM_RM
Definition SharedTypes.h:251
ZYDIS_OPERAND_ENCODING_DISP16_32_64
@ ZYDIS_OPERAND_ENCODING_DISP16_32_64
Definition SharedTypes.h:260
ZYDIS_OPERAND_ENCODING_DISP16
@ ZYDIS_OPERAND_ENCODING_DISP16
Definition SharedTypes.h:257
ZYDIS_OPERAND_ENCODING_DISP64
@ ZYDIS_OPERAND_ENCODING_DISP64
Definition SharedTypes.h:259
ZYDIS_OPERAND_ENCODING_JIMM16_32_64
@ ZYDIS_OPERAND_ENCODING_JIMM16_32_64
Definition SharedTypes.h:281
ZYDIS_OPERAND_ENCODING_SIMM16_32_64
@ ZYDIS_OPERAND_ENCODING_SIMM16_32_64
Definition SharedTypes.h:274
ZYDIS_OPERAND_ENCODING_MAX_VALUE
@ ZYDIS_OPERAND_ENCODING_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:288
ZYDIS_OPERAND_ENCODING_DISP16_32_32
@ ZYDIS_OPERAND_ENCODING_DISP16_32_32
Definition SharedTypes.h:262
ZYDIS_OPERAND_ENCODING_REQUIRED_BITS
@ ZYDIS_OPERAND_ENCODING_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:292
ZYDIS_OPERAND_ENCODING_SIMM32
@ ZYDIS_OPERAND_ENCODING_SIMM32
Definition SharedTypes.h:272
ZYDIS_OPERAND_ENCODING_UIMM64
@ ZYDIS_OPERAND_ENCODING_UIMM64
Definition SharedTypes.h:266
ZYDIS_OPERAND_ENCODING_JIMM8
@ ZYDIS_OPERAND_ENCODING_JIMM8
Definition SharedTypes.h:277
ZYDIS_OPERAND_ENCODING_NDSNDD
@ ZYDIS_OPERAND_ENCODING_NDSNDD
Definition SharedTypes.h:253
ZYDIS_OPERAND_ENCODING_DISP32_32_64
@ ZYDIS_OPERAND_ENCODING_DISP32_32_64
Definition SharedTypes.h:261
ZYDIS_OPERAND_ENCODING_JIMM16
@ ZYDIS_OPERAND_ENCODING_JIMM16
Definition SharedTypes.h:278
ZYDIS_OPERAND_ENCODING_JIMM32_32_64
@ ZYDIS_OPERAND_ENCODING_JIMM32_32_64
Definition SharedTypes.h:282
ZYDIS_OPERAND_ENCODING_IS4
@ ZYDIS_OPERAND_ENCODING_IS4
Definition SharedTypes.h:254
ZYDIS_OPERAND_ENCODING_SIMM64
@ ZYDIS_OPERAND_ENCODING_SIMM64
Definition SharedTypes.h:273
ZYDIS_OPERAND_ENCODING_UIMM32
@ ZYDIS_OPERAND_ENCODING_UIMM32
Definition SharedTypes.h:265
ZYDIS_OPERAND_ENCODING_MASK
@ ZYDIS_OPERAND_ENCODING_MASK
Definition SharedTypes.h:255
ZYDIS_OPERAND_ENCODING_SIMM16
@ ZYDIS_OPERAND_ENCODING_SIMM16
Definition SharedTypes.h:271
ZYDIS_OPERAND_ENCODING_UIMM32_32_64
@ ZYDIS_OPERAND_ENCODING_UIMM32_32_64
Definition SharedTypes.h:268
ZYDIS_OPERAND_ENCODING_UIMM16
@ ZYDIS_OPERAND_ENCODING_UIMM16
Definition SharedTypes.h:264
ZYDIS_OPERAND_ENCODING_UIMM8
@ ZYDIS_OPERAND_ENCODING_UIMM8
Definition SharedTypes.h:263
ZYDIS_OPERAND_ENCODING_DISP32
@ ZYDIS_OPERAND_ENCODING_DISP32
Definition SharedTypes.h:258
ZYDIS_OPERAND_ENCODING_MODRM_REG
@ ZYDIS_OPERAND_ENCODING_MODRM_REG
Definition SharedTypes.h:250
ZYDIS_OPERAND_ENCODING_SIMM32_32_64
@ ZYDIS_OPERAND_ENCODING_SIMM32_32_64
Definition SharedTypes.h:275
ZYDIS_OPERAND_ENCODING_JIMM64
@ ZYDIS_OPERAND_ENCODING_JIMM64
Definition SharedTypes.h:280
ZYDIS_OPERAND_ENCODING_JIMM32
@ ZYDIS_OPERAND_ENCODING_JIMM32
Definition SharedTypes.h:279
ZYDIS_OPERAND_ENCODING_UIMM16_32_64
@ ZYDIS_OPERAND_ENCODING_UIMM16_32_64
Definition SharedTypes.h:267
ZYDIS_OPERAND_ENCODING_JIMM16_32_32
@ ZYDIS_OPERAND_ENCODING_JIMM16_32_32
Definition SharedTypes.h:283
ZYDIS_OPERAND_ENCODING_OPCODE
@ ZYDIS_OPERAND_ENCODING_OPCODE
Definition SharedTypes.h:252
ZYDIS_OPERAND_ENCODING_DISP8
@ ZYDIS_OPERAND_ENCODING_DISP8
Definition SharedTypes.h:256
ZYDIS_OPERAND_ENCODING_NONE
@ ZYDIS_OPERAND_ENCODING_NONE
Definition SharedTypes.h:249
ZYDIS_OPERAND_ENCODING_SIMM16_32_32
@ ZYDIS_OPERAND_ENCODING_SIMM16_32_32
Definition SharedTypes.h:276
ZYDIS_OPERAND_ENCODING_SIMM8
@ ZYDIS_OPERAND_ENCODING_SIMM8
Definition SharedTypes.h:270
ZYDIS_OPERAND_ENCODING_UIMM16_32_32
@ ZYDIS_OPERAND_ENCODING_UIMM16_32_32
Definition SharedTypes.h:269
ZydisInstructionEncoding_
ZydisInstructionEncoding_
Defines the ZydisInstructionEncoding enum.
Definition SharedTypes.h:416
ZYDIS_INSTRUCTION_ENCODING_VEX
@ ZYDIS_INSTRUCTION_ENCODING_VEX
The instruction uses the VEX-encoding.
Definition SharedTypes.h:432
ZYDIS_INSTRUCTION_ENCODING_3DNOW
@ ZYDIS_INSTRUCTION_ENCODING_3DNOW
The instruction uses the AMD 3DNow-encoding.
Definition SharedTypes.h:424
ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS
@ ZYDIS_INSTRUCTION_ENCODING_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:449
ZYDIS_INSTRUCTION_ENCODING_MVEX
@ ZYDIS_INSTRUCTION_ENCODING_MVEX
The instruction uses the MVEX-encoding.
Definition SharedTypes.h:440
ZYDIS_INSTRUCTION_ENCODING_LEGACY
@ ZYDIS_INSTRUCTION_ENCODING_LEGACY
The instruction uses the legacy encoding.
Definition SharedTypes.h:420
ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE
@ ZYDIS_INSTRUCTION_ENCODING_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:445
ZYDIS_INSTRUCTION_ENCODING_EVEX
@ ZYDIS_INSTRUCTION_ENCODING_EVEX
The instruction uses the EVEX-encoding.
Definition SharedTypes.h:436
ZYDIS_INSTRUCTION_ENCODING_XOP
@ ZYDIS_INSTRUCTION_ENCODING_XOP
The instruction uses the AMD XOP-encoding.
Definition SharedTypes.h:428
ZydisStackWidth_
ZydisStackWidth_
Defines the ZydisStackWidth enum.
Definition SharedTypes.h:111
ZYDIS_STACK_WIDTH_REQUIRED_BITS
@ ZYDIS_STACK_WIDTH_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:123
ZYDIS_STACK_WIDTH_16
@ ZYDIS_STACK_WIDTH_16
Definition SharedTypes.h:112
ZYDIS_STACK_WIDTH_32
@ ZYDIS_STACK_WIDTH_32
Definition SharedTypes.h:113
ZYDIS_STACK_WIDTH_MAX_VALUE
@ ZYDIS_STACK_WIDTH_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:119
ZYDIS_STACK_WIDTH_64
@ ZYDIS_STACK_WIDTH_64
Definition SharedTypes.h:114
ZYAN_STATIC_ASSERT
ZYAN_STATIC_ASSERT(ZYAN_BITS_TO_REPRESENT(ZYDIS_OPERAND_TYPE_MAX_VALUE - ZYDIS_OPERAND_TYPE_REGISTER)==2)
ZydisOperandAction_
ZydisOperandAction_
Defines the ZydisOperandAction enum.
Definition SharedTypes.h:337
ZYDIS_OPERAND_ACTION_CONDWRITE
@ ZYDIS_OPERAND_ACTION_CONDWRITE
The operand is conditionally written by the instruction (may write).
Definition SharedTypes.h:357
ZYDIS_OPERAND_ACTION_READWRITE
@ ZYDIS_OPERAND_ACTION_READWRITE
The operand is read (must read) and written by the instruction (must write).
Definition SharedTypes.h:366
ZYDIS_OPERAND_ACTION_CONDREAD_WRITE
@ ZYDIS_OPERAND_ACTION_CONDREAD_WRITE
The operand is written (must write) and conditionally read by the instruction (may read).
Definition SharedTypes.h:383
ZYDIS_OPERAND_ACTION_CONDREAD
@ ZYDIS_OPERAND_ACTION_CONDREAD
The operand is conditionally read by the instruction.
Definition SharedTypes.h:353
ZYDIS_OPERAND_ACTION_WRITE
@ ZYDIS_OPERAND_ACTION_WRITE
The operand is written by the instruction (must write).
Definition SharedTypes.h:349
ZYDIS_OPERAND_ACTION_MASK_READ
@ ZYDIS_OPERAND_ACTION_MASK_READ
Mask combining all reading access flags.
Definition SharedTypes.h:389
ZYDIS_OPERAND_ACTION_REQUIRED_BITS
@ ZYDIS_OPERAND_ACTION_REQUIRED_BITS
The minimum number of bits required to represent all values of this bitset.
Definition SharedTypes.h:400
ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE
@ ZYDIS_OPERAND_ACTION_CONDREAD_CONDWRITE
The operand is conditionally read (may read) and conditionally written by the instruction (may write)...
Definition SharedTypes.h:371
ZYDIS_OPERAND_ACTION_READ
@ ZYDIS_OPERAND_ACTION_READ
The operand is read by the instruction.
Definition SharedTypes.h:345
ZYDIS_OPERAND_ACTION_READ_CONDWRITE
@ ZYDIS_OPERAND_ACTION_READ_CONDWRITE
The operand is read (must read) and conditionally written by the instruction (may write).
Definition SharedTypes.h:377
ZYDIS_OPERAND_ACTION_MASK_WRITE
@ ZYDIS_OPERAND_ACTION_MASK_WRITE
Mask combining all writing access flags.
Definition SharedTypes.h:393
ZydisOpcodeMap_
ZydisOpcodeMap_
Defines the ZydisOpcodeMap enum.
Definition SharedTypes.h:461
ZYDIS_OPCODE_MAP_XOP9
@ ZYDIS_OPCODE_MAP_XOP9
Definition SharedTypes.h:472
ZYDIS_OPCODE_MAP_MAP7
@ ZYDIS_OPCODE_MAP_MAP7
Definition SharedTypes.h:469
ZYDIS_OPCODE_MAP_0F38
@ ZYDIS_OPCODE_MAP_0F38
Definition SharedTypes.h:464
ZYDIS_OPCODE_MAP_REQUIRED_BITS
@ ZYDIS_OPCODE_MAP_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:482
ZYDIS_OPCODE_MAP_0F
@ ZYDIS_OPCODE_MAP_0F
Definition SharedTypes.h:463
ZYDIS_OPCODE_MAP_MAP4
@ ZYDIS_OPCODE_MAP_MAP4
Definition SharedTypes.h:466
ZYDIS_OPCODE_MAP_DEFAULT
@ ZYDIS_OPCODE_MAP_DEFAULT
Definition SharedTypes.h:462
ZYDIS_OPCODE_MAP_XOP8
@ ZYDIS_OPCODE_MAP_XOP8
Definition SharedTypes.h:471
ZYDIS_OPCODE_MAP_XOPA
@ ZYDIS_OPCODE_MAP_XOPA
Definition SharedTypes.h:473
ZYDIS_OPCODE_MAP_MAP6
@ ZYDIS_OPCODE_MAP_MAP6
Definition SharedTypes.h:468
ZYDIS_OPCODE_MAP_MAX_VALUE
@ ZYDIS_OPCODE_MAP_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:478
ZYDIS_OPCODE_MAP_MAP5
@ ZYDIS_OPCODE_MAP_MAP5
Definition SharedTypes.h:467
ZYDIS_OPCODE_MAP_0F3A
@ ZYDIS_OPCODE_MAP_0F3A
Definition SharedTypes.h:465
ZYDIS_OPCODE_MAP_0F0F
@ ZYDIS_OPCODE_MAP_0F0F
Definition SharedTypes.h:470
ZydisElementType
enum ZydisElementType_ ZydisElementType
Defines the ZydisElementType enum.
ZydisElementSize
ZyanU16 ZydisElementSize
Defines the ZydisElementSize datatype.
Definition SharedTypes.h:194
ZydisMachineMode
enum ZydisMachineMode_ ZydisMachineMode
Defines the ZydisMachineMode enum.
ZydisOperandType_
ZydisOperandType_
Defines the ZydisOperandType enum.
Definition SharedTypes.h:204
ZYDIS_OPERAND_TYPE_IMMEDIATE
@ ZYDIS_OPERAND_TYPE_IMMEDIATE
The operand is an immediate operand.
Definition SharedTypes.h:224
ZYDIS_OPERAND_TYPE_REQUIRED_BITS
@ ZYDIS_OPERAND_TYPE_REQUIRED_BITS
The minimum number of bits required to represent all values of this enum.
Definition SharedTypes.h:233
ZYDIS_OPERAND_TYPE_UNUSED
@ ZYDIS_OPERAND_TYPE_UNUSED
The operand is not used.
Definition SharedTypes.h:208
ZYDIS_OPERAND_TYPE_MAX_VALUE
@ ZYDIS_OPERAND_TYPE_MAX_VALUE
Maximum value of this enum.
Definition SharedTypes.h:229
ZYDIS_OPERAND_TYPE_REGISTER
@ ZYDIS_OPERAND_TYPE_REGISTER
The operand is a register operand.
Definition SharedTypes.h:212
ZYDIS_OPERAND_TYPE_MEMORY
@ ZYDIS_OPERAND_TYPE_MEMORY
The operand is a memory operand.
Definition SharedTypes.h:216
ZYDIS_OPERAND_TYPE_POINTER
@ ZYDIS_OPERAND_TYPE_POINTER
The operand is a pointer operand with a segment:offset lvalue.
Definition SharedTypes.h:220
ZydisInstructionAttributes
ZyanU64 ZydisInstructionAttributes
Defines the ZydisInstructionAttributes data-type.
Definition SharedTypes.h:501