Fast and lightweight x86/x86-64 disassembler and code generation library
This is the final release of Zydis 2.
Improved instruction decoding
XOP
instructionsLOCK
prefixes for XOP/VEX/EVEX/MVEX
instructionsGATHER
registersEVEX/MVEX.R'
not beeing ignored in 16- and 32-bit modeImproved formatter
ZYDIS_FORMATTER_HOOK_PRE_OPERAND
and ZYDIS_FORMATTER_HOOK_POST_OPERAND
can now be used to omit a specific operandZydisFormatterFormatOperand
and ZydisFormatterFormatOperandEx
(this won't print AVX-512/KNC decorators)ZYDIS_STATUS_SKIP_OPERAND
to omit an operand (returning ZYDIS_STATUS_SUCCESS
without writing to the buffer is now deprecated)Added new instructions
PCONFIG
EXTRQ
, INSERTQ
, MOVNTSD
, MOVNTSS
(SSE4a)MONITORX
, MWAITX
ENCLV
VPOPCNTD
/VPOPCNTQ
instructions with 128- and 256-bit vector-lengthVEX
-encoded GFNI
instructionsFixed some instruction definitions
XSAVE
/XSAVEOPT
memory operand from W to RWIRET
instructionLWPINS
and LWPVAL
instructionsGFNI
instructionsRDRAND
and RDSEED
instructionsSYSRET
instructionXCHG R8, RAX
falsely beeing decoded as NOP
PEXT
, PDEP
and ANDN
from read/write to write-onlyMisc bugfixes
ZydisRegisterGetClass
that caused the function to report invalid register-classes for IP
and FLAGS
registersZYDIS_MEMOP_TYPE_MEM
instead of ZYDIS_MEMOP_TYPE_INVALID
This is the first beta release, the public interface is now expected to be stable.
Added new ISA-extensions
BITALG
GFNI
RDPID
VAES
VBMI2
VNNI
VPCLMULQDQ
Added implicit operands for instructions with stack-operations
SP/ESP/RSP
register-operand[SP/ESP/RSP]
memory-operandImplemented decoder-modes to support ISA-extensions that conflict with existing instructions
ZYDIS_DECODER_MODE_MINIMAL
ZYDIS_DECODER_MODE_AMD_BRANCHES
ZYDIS_DECODER_MODE_KNC
ZYDIS_DECODER_MODE_MPX
ZYDIS_DECODER_MODE_CET
ZYDIS_DECODER_MODE_LZCNT
ZYDIS_DECODER_MODE_TZCNT
ZydisDecoderInitEx
and the possibility to pass a decoder-granularity (use ZYDIS_DECODER_MODE_MINIMAL
instead)Decoder improvements
ZYDIS_MACHINE_MODE_REAL_16
is usedscale
of memory-operands is now correctly set to 1
in 16-bit mode, if an index register was specifiedMajor formatter changes
ZydisString
"class" to improve performance and usabilityZydisFormatterSetAttribute
function for simple formatter customization
ZYDIS_FORMATTER_PROP_UPPERCASE
ZYDIS_FORMATTER_PROP_FORCE_MEMSEG
ZYDIS_FORMATTER_PROP_FORCE_MEMSIZE
ZYDIS_FORMATTER_PROP_ADDR_FORMAT
ZYDIS_FORMATTER_PROP_DISP_FORMAT
ZYDIS_FORMATTER_PROP_IMM_FORMAT
ZYDIS_FORMATTER_PROP_HEX_UPPERCASE
ZYDIS_FORMATTER_PROP_HEX_PREFIX
ZYDIS_FORMATTER_PROP_HEX_SUFFIX
ZYDIS_FORMATTER_PROP_HEX_PADDING_ADDR
ZYDIS_FORMATTER_PROP_HEX_PADDING_DISP
ZYDIS_FORMATTER_PROP_HEX_PADDING_IMM
ZYDIS_FORMATTER_HOOK_PRE_OPERAND
, ZYDIS_FORMATTER_HOOK_POST_OPERAND
and ZYDIS_FORMATTER_HOOK_PRINT_REGISTER
ZYDIS_FORMATTER_HOOK_PRINT_DISPLACEMENT
to ZYDIS_FORMATTER_HOOK_PRINT_DISP
ZYDIS_FORMATTER_HOOK_PRINT_IMMEDIATE
to ZYDIS_FORMATTER_HOOK_PRINT_IMM
ZYDIS_FORMATTER_HOOK_PRINT_OPERANDSIZE
to ZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE
ZYDIS_FORMATTER_HOOK_PRINT_SEGMENT
Improved no-libc support
ZYDIS_NO_LIBC
CMake switchmemset
, memcpy
and strlen
NULL
Added project logo
Added Visual Studio project files