This is the final release of Zydis 2.
Detailed changelog (since v2.0.0-beta1)
-
Improved instruction decoding
- Fixed decoding of
XOPinstructions - Fixed handling of illegal
LOCKprefixes forXOP/VEX/EVEX/MVEXinstructions - Significantly improved detection of bad register values
- Added check for invalid
GATHERregisters - 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_OPERANDandZYDIS_FORMATTER_HOOK_POST_OPERANDcan now be used to omit a specific operand- Added
ZydisFormatterFormatOperandandZydisFormatterFormatOperandEx(this won't print AVX-512/KNC decorators) - User defined callbacks should return
ZYDIS_STATUS_SKIP_OPERANDto omit an operand (returningZYDIS_STATUS_SUCCESSwithout writing to the buffer is now deprecated)
-
Added new instructions
PCONFIGEXTRQ,INSERTQ,MOVNTSD,MOVNTSS(SSE4a)MONITORX,MWAITXENCLVVPOPCNTD/VPOPCNTQinstructions with 128- and 256-bit vector-length- Added missing
VEX-encodedGFNIinstructions
-
Fixed some instruction definitions
- Changed
XSAVE/XSAVEOPTmemory operand from W to RW - Changed amount of bytes popped from stack by the
IRETinstruction - Fixed
LWPINSandLWPVALinstructions - Fixed exception-class of some
GFNIinstructions - Fixed
RDRANDandRDSEEDinstructions - Fixed
SYSRETinstruction - Fixed
XCHG R8, RAXfalsely beeing decoded asNOP - Fixed operand size of some conditional jump instructions
- Changed destination operand action of
PEXT,PDEPandANDNfrom read/write to write-only
- Changed
-
Misc bugfixes
- Fixed formatting of memory operands with explicit segment register
- Fixed a bug in
ZydisRegisterGetClassthat caused the function to report invalid register-classes forIPandFLAGSregisters - Changed type of implicit memory operands to
ZYDIS_MEMOP_TYPE_MEMinstead ofZYDIS_MEMOP_TYPE_INVALID