Releases: zyantific/zydis
Releases · zyantific/zydis
v2.0.0 Final
This is the final release of Zydis 2.
Detailed changelog (since v2.0.0-beta1)
-
Improved instruction decoding
- Fixed decoding of
XOP
instructions - Fixed handling of illegal
LOCK
prefixes forXOP/VEX/EVEX/MVEX
instructions - Significantly improved detection of bad register values
- Added check for invalid
GATHER
registers - Fixed
EVEX/MVEX.R'
not beeing ignored in 16- and 32-bit mode
- Fixed decoding of
-
Improved formatter
- Omitting an operand by using formatter hooks will now correctly omit the semicolon as well
ZYDIS_FORMATTER_HOOK_PRE_OPERAND
andZYDIS_FORMATTER_HOOK_POST_OPERAND
can now be used to omit a specific operand- Added
ZydisFormatterFormatOperand
andZydisFormatterFormatOperandEx
(this won't print AVX-512/KNC decorators) - User defined callbacks should return
ZYDIS_STATUS_SKIP_OPERAND
to omit an operand (returningZYDIS_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-length- Added missing
VEX
-encodedGFNI
instructions
-
Fixed some instruction definitions
- Changed
XSAVE
/XSAVEOPT
memory operand from W to RW - Changed amount of bytes popped from stack by the
IRET
instruction - Fixed
LWPINS
andLWPVAL
instructions - Fixed exception-class of some
GFNI
instructions - Fixed
RDRAND
andRDSEED
instructions - Fixed
SYSRET
instruction - Fixed
XCHG R8, RAX
falsely beeing decoded asNOP
- Fixed operand size of some conditional jump instructions
- Changed destination operand action of
PEXT
,PDEP
andANDN
from read/write to write-only
- Changed
-
Misc bugfixes
- Fixed formatting of memory operands with explicit segment register
- Fixed a bug in
ZydisRegisterGetClass
that caused the function to report invalid register-classes forIP
andFLAGS
registers - Changed type of implicit memory operands to
ZYDIS_MEMOP_TYPE_MEM
instead ofZYDIS_MEMOP_TYPE_INVALID
v2.0.0-beta1
This is the first beta release, the public interface is now expected to be stable.
Detailed changelog (since v2.0.0-alpha2)
-
Added new ISA-extensions
BITALG
GFNI
RDPID
VAES
VBMI2
VNNI
VPCLMULQDQ
-
Added implicit operands for instructions with stack-operations
- Implicit
SP/ESP/RSP
register-operand - Implicit
[SP/ESP/RSP]
memory-operand
- Implicit
-
Implemented decoder-modes to support ISA-extensions that conflict with existing instructions
- Added decoder-modes
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
- Removed
ZydisDecoderInitEx
and the possibility to pass a decoder-granularity (useZYDIS_DECODER_MODE_MINIMAL
instead)
- Added decoder-modes
-
Decoder improvements
- Instructions which are only valid in protected-mode are now rejected, if
ZYDIS_MACHINE_MODE_REAL_16
is used - The
scale
of memory-operands is now correctly set to1
in 16-bit mode, if an index register was specified
- Instructions which are only valid in protected-mode are now rejected, if
-
Major formatter changes
- Switched to custom length-aware
ZydisString
"class" to improve performance and usability - Added
ZydisFormatterSetAttribute
function for simple formatter customizationZYDIS_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
- Hook refactorings
- Added
ZYDIS_FORMATTER_HOOK_PRE_OPERAND
,ZYDIS_FORMATTER_HOOK_POST_OPERAND
andZYDIS_FORMATTER_HOOK_PRINT_REGISTER
- Renamed
ZYDIS_FORMATTER_HOOK_PRINT_DISPLACEMENT
toZYDIS_FORMATTER_HOOK_PRINT_DISP
- Renamed
ZYDIS_FORMATTER_HOOK_PRINT_IMMEDIATE
toZYDIS_FORMATTER_HOOK_PRINT_IMM
- Renamed
ZYDIS_FORMATTER_HOOK_PRINT_OPERANDSIZE
toZYDIS_FORMATTER_HOOK_PRINT_MEMSIZE
- Removed
ZYDIS_FORMATTER_HOOK_PRINT_SEGMENT
- Added
- Switched to custom length-aware
-
Improved no-libc support
- Added
ZYDIS_NO_LIBC
CMake switch - When enabled, removes dependency on
memset
,memcpy
andstrlen
- Added custom integer types
- Added own
NULL
- Added
-
Added project logo
- Contributed by LekoArts
-
Added Visual Studio project files
- Static-, shared- and kernel-mode configuration
- Contributed by Mattiwatti