3.0.1
February 3, 2015
Release 3.0.1 is a stable version with important fixes in the core & Python bindings.
X86
- Properly handle LOCK, REP, REPE & REPNE prefixes.
- Handle undocumented immediates for SSE’s (V)CMPPS/PD/SS/SD instructions.
- Print LJUMP/LCALL without * as prefix for Intel syntax.
- Handle REX prefix properly for segment/MMX related instructions (x86_64).
- Instruction with length > 15 is consider invalid.
- Handle some tricky encodings for instructions MOVSXD, FXCH, FCOM, FCOMP, FSTP, FSTPNCE, NOP.
- Handle some tricky code for some x86_64 instructions with REX prefix.
- Add missing operands in detail mode for PUSH, POP, IN/OUT reg, reg.
- MOV32ms & MOV32sm should reference word rather than dword.
Arm64
- BL & BLR instructions do not read SP register.
- Print absolute (rather than relative) address for instructions B, BL, CBNZ, ADR.
Arm
- Instructions ADC & SBC do not update flags.
- BL & BLX do not read SP, but PC register.
- Alias LDR instruction with operands [sp], 4 to POP.
- Print immediate operand of MVN instruction in positive hexadecimal form.
PowerPC
- Fix some compilation bugs when DIET mode is enable.
- Populate SLWI/SRWI instruction details with SH operand.
Python binding
- Fix a Cython bug when CsInsn.bytes returns a shorten array of bytes.
- Fixed a memory leak for Cython disasm functions when we immaturely quit the enumeration of disassembled instructions.
- Fix a NULL memory access issue when SKIPDATA & Detail modes are enable at the same time.
- Fix a memory leaking bug when when we stop enumeration over the disassembled instructions prematurely.
- Export generic operand types & groups (CS_OP_xxx & CS_GRP_xxx).