1*9a0e4156SSadaf EbrahimiThis file details the changelog of Capstone. 2*9a0e4156SSadaf Ebrahimi 3*9a0e4156SSadaf Ebrahimi--------------------------------- 4*9a0e4156SSadaf EbrahimiVersion 4.0.1: January 10th, 2019 5*9a0e4156SSadaf Ebrahimi 6*9a0e4156SSadaf Ebrahimi 7*9a0e4156SSadaf Ebrahimi[ Core ] 8*9a0e4156SSadaf Ebrahimi 9*9a0e4156SSadaf Ebrahimi- Fix some issues for packaging (Debian, Gentoo). 10*9a0e4156SSadaf Ebrahimi- Better support for building with Mingw. 11*9a0e4156SSadaf Ebrahimi- cstool has new option -s to turn on skipdata mode. 12*9a0e4156SSadaf Ebrahimi- cstool -v now report build settings of the core. 13*9a0e4156SSadaf Ebrahimi- Add suite/capstone_get_setup.c so users can integrate with their own code 14*9a0e4156SSadaf Ebrahimi to retrieve Capstone settings at build time. 15*9a0e4156SSadaf Ebrahimi 16*9a0e4156SSadaf Ebrahimi 17*9a0e4156SSadaf Ebrahimi[ Arm ] 18*9a0e4156SSadaf Ebrahimi 19*9a0e4156SSadaf Ebrahimi- Fix 4.0 regression: the `tbh [r0, r1, lsl #1]` instruction sets the operand.shift.value back again (see #1317) 20*9a0e4156SSadaf Ebrahimi- Remove ARM_REG_PC group for BX instruction. 21*9a0e4156SSadaf Ebrahimi 22*9a0e4156SSadaf Ebrahimi 23*9a0e4156SSadaf Ebrahimi[ X86 ] 24*9a0e4156SSadaf Ebrahimi 25*9a0e4156SSadaf Ebrahimi- Fix: endbr32 and endbr64 instructions are now properly decoded in both CS_MODE_32 and CS_MODE_64 (#1129) 26*9a0e4156SSadaf Ebrahimi 27*9a0e4156SSadaf Ebrahimi 28*9a0e4156SSadaf Ebrahimi[ M680X ] 29*9a0e4156SSadaf Ebrahimi 30*9a0e4156SSadaf Ebrahimi- Fix some issues reported by clang-analyzer (#1329). 31*9a0e4156SSadaf Ebrahimi 32*9a0e4156SSadaf Ebrahimi 33*9a0e4156SSadaf Ebrahimi[ Python ] 34*9a0e4156SSadaf Ebrahimi 35*9a0e4156SSadaf Ebrahimi- Fix skipdata setup. 36*9a0e4156SSadaf Ebrahimi- Add getter/setter for skipdata_mnem, skipdata_callback. 37*9a0e4156SSadaf Ebrahimi 38*9a0e4156SSadaf Ebrahimi 39*9a0e4156SSadaf Ebrahimi--------------------------------- 40*9a0e4156SSadaf EbrahimiVersion 4.0: December 18th, 2018 41*9a0e4156SSadaf Ebrahimi 42*9a0e4156SSadaf Ebrahimi 43*9a0e4156SSadaf Ebrahimi[ Core ] 44*9a0e4156SSadaf Ebrahimi 45*9a0e4156SSadaf Ebrahimi- New APIs: cs_regs_access() 46*9a0e4156SSadaf Ebrahimi- Add new options for cs_option(): CS_OPT_MNEMONIC & CS_OPT_UNSIGNED & CS_OPT_SYNTAX_MASM. 47*9a0e4156SSadaf Ebrahimi- Various updates & bugfixes for all architectures. 48*9a0e4156SSadaf Ebrahimi- Add 4 new architectures: EVM, M68K, M680X & TMS320C64x. 49*9a0e4156SSadaf Ebrahimi- Add new group types: CS_GRP_PRIVILEGE & CS_GRP_BRANCH_RELATIVE. 50*9a0e4156SSadaf Ebrahimi- Add new error types: CS_ERR_X86_MASM. 51*9a0e4156SSadaf Ebrahimi 52*9a0e4156SSadaf Ebrahimi 53*9a0e4156SSadaf Ebrahimi[ X86 ] 54*9a0e4156SSadaf Ebrahimi 55*9a0e4156SSadaf Ebrahimi- Add XOP code condition type in x86_xop_cc. 56*9a0e4156SSadaf Ebrahimi- Add some info on encoding to cs_x86 in cs_x86_encoding. 57*9a0e4156SSadaf Ebrahimi- Add register flags update in cs_x86.{eflags, fpu_flags} 58*9a0e4156SSadaf Ebrahimi- Change cs_x86.disp type from int32_t to int64_t. 59*9a0e4156SSadaf Ebrahimi- Add new groups: X86_GRP_VM & X86_GRP_FPU. 60*9a0e4156SSadaf Ebrahimi- Lots of new instructions (AVX) 61*9a0e4156SSadaf Ebrahimi 62*9a0e4156SSadaf Ebrahimi 63*9a0e4156SSadaf Ebrahimi[ ARM64 ] 64*9a0e4156SSadaf Ebrahimi 65*9a0e4156SSadaf Ebrahimi- Add instruction ARM64_INS_NEGS & ARM64_INS_NGCS. 66*9a0e4156SSadaf Ebrahimi 67*9a0e4156SSadaf Ebrahimi 68*9a0e4156SSadaf Ebrahimi[ Mips ] 69*9a0e4156SSadaf Ebrahimi 70*9a0e4156SSadaf Ebrahimi- Add mode CS_MODE_MIPS2. 71*9a0e4156SSadaf Ebrahimi 72*9a0e4156SSadaf Ebrahimi 73*9a0e4156SSadaf Ebrahimi[ PPC ] 74*9a0e4156SSadaf Ebrahimi 75*9a0e4156SSadaf Ebrahimi- Change cs_ppc_op.imm type from int32_t to int64_t. 76*9a0e4156SSadaf Ebrahimi- Add new groups: PPC_GRP_ICBT, PPC_GRP_P8ALTIVEC, PPC_GRP_P8VECTOR & PPC_GRP_QPX. 77*9a0e4156SSadaf Ebrahimi- Lots of new instructions (QPX among them) 78*9a0e4156SSadaf Ebrahimi 79*9a0e4156SSadaf Ebrahimi 80*9a0e4156SSadaf Ebrahimi[ Sparc ] 81*9a0e4156SSadaf Ebrahimi 82*9a0e4156SSadaf Ebrahimi- Change cs_sparc_op.imm type from int32_t to int64_t. 83*9a0e4156SSadaf Ebrahimi 84*9a0e4156SSadaf Ebrahimi 85*9a0e4156SSadaf Ebrahimi[ Binding ] 86*9a0e4156SSadaf Ebrahimi 87*9a0e4156SSadaf Ebrahimi- New bindings: PowerShell & VB6 88*9a0e4156SSadaf Ebrahimi 89*9a0e4156SSadaf Ebrahimi 90*9a0e4156SSadaf Ebrahimi--------------------------------- 91*9a0e4156SSadaf EbrahimiVersion 3.0.5: July 18th, 2018 92*9a0e4156SSadaf Ebrahimi 93*9a0e4156SSadaf Ebrahimi 94*9a0e4156SSadaf Ebrahimi[ Core ] 95*9a0e4156SSadaf Ebrahimi 96*9a0e4156SSadaf Ebrahimi- Fix the include path for Android builds when building cstool. 97*9a0e4156SSadaf Ebrahimi- Add posibility to disable universal build for Mac OS. 98*9a0e4156SSadaf Ebrahimi- cstool: Separate instruction bytes by spaces. 99*9a0e4156SSadaf Ebrahimi- Fix code path of pkg-config in Cmake. 100*9a0e4156SSadaf Ebrahimi- Update XCode project for XCode 9.1. 101*9a0e4156SSadaf Ebrahimi- Add Cortex-M support to cstool. 102*9a0e4156SSadaf Ebrahimi- Cmake forces to be build using MT with MSVC. 103*9a0e4156SSadaf Ebrahimi- Better support for Mac OS kernel. 104*9a0e4156SSadaf Ebrahimi 105*9a0e4156SSadaf Ebrahimi 106*9a0e4156SSadaf Ebrahimi[ X86 ] 107*9a0e4156SSadaf Ebrahimi 108*9a0e4156SSadaf Ebrahimi- Fix some issues in handling EVEX & VEX3 instructions. 109*9a0e4156SSadaf Ebrahimi- Fix immediate operand for AND instruction in ATT mode. 110*9a0e4156SSadaf Ebrahimi- Fix ATT syntax when imm operand is 0. 111*9a0e4156SSadaf Ebrahimi- Better handle XACQUIRE/XRELEASE. 112*9a0e4156SSadaf Ebrahimi- Fix imm operand of RETF. 113*9a0e4156SSadaf Ebrahimi 114*9a0e4156SSadaf Ebrahimi 115*9a0e4156SSadaf Ebrahimi[ ARM ] 116*9a0e4156SSadaf Ebrahimi 117*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug. 118*9a0e4156SSadaf Ebrahimi 119*9a0e4156SSadaf Ebrahimi 120*9a0e4156SSadaf Ebrahimi[ ARM64 ] 121*9a0e4156SSadaf Ebrahimi 122*9a0e4156SSadaf Ebrahimi- Bug fix for incorrect operand type in certain load/store instructions. 123*9a0e4156SSadaf Ebrahimi 124*9a0e4156SSadaf Ebrahimi 125*9a0e4156SSadaf Ebrahimi[ Mips ] 126*9a0e4156SSadaf Ebrahimi 127*9a0e4156SSadaf Ebrahimi- Mode CS_MODE_MIPS32R6 automatically sets CS_MODE_32 128*9a0e4156SSadaf Ebrahimi 129*9a0e4156SSadaf Ebrahimi 130*9a0e4156SSadaf Ebrahimi[ PPC ] 131*9a0e4156SSadaf Ebrahimi 132*9a0e4156SSadaf Ebrahimi- Fix endian check. 133*9a0e4156SSadaf Ebrahimi 134*9a0e4156SSadaf Ebrahimi 135*9a0e4156SSadaf Ebrahimi[ Sparc ] 136*9a0e4156SSadaf Ebrahimi 137*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug. 138*9a0e4156SSadaf Ebrahimi 139*9a0e4156SSadaf Ebrahimi 140*9a0e4156SSadaf Ebrahimi[ SystemZ ] 141*9a0e4156SSadaf Ebrahimi 142*9a0e4156SSadaf Ebrahimi- Fix an integer overlow bug. 143*9a0e4156SSadaf Ebrahimi 144*9a0e4156SSadaf Ebrahimi 145*9a0e4156SSadaf Ebrahimi[ Python binding ] 146*9a0e4156SSadaf Ebrahimi 147*9a0e4156SSadaf Ebrahimi- Raise error on accessing irrelevant data fields if skipdata & detail modes are enable. 148*9a0e4156SSadaf Ebrahimi 149*9a0e4156SSadaf Ebrahimi 150*9a0e4156SSadaf Ebrahimi--------------------------------- 151*9a0e4156SSadaf EbrahimiVersion 3.0.5-rc3: July 31st, 2017 152*9a0e4156SSadaf Ebrahimi 153*9a0e4156SSadaf Ebrahimi 154*9a0e4156SSadaf Ebrahimi[ Core ] 155*9a0e4156SSadaf Ebrahimi 156*9a0e4156SSadaf Ebrahimi- Fix compilation for MacOS kernel extension 157*9a0e4156SSadaf Ebrahimi- cstool to support armbe and arm64be modes 158*9a0e4156SSadaf Ebrahimi- Add nmake.bat for Windows build 159*9a0e4156SSadaf Ebrahimi- Fix an integer overflow for Windows kernel driver 160*9a0e4156SSadaf Ebrahimi- Support to embedded Capstone into MacOS kernel 161*9a0e4156SSadaf Ebrahimi- cstool: fix mips64 mode 162*9a0e4156SSadaf Ebrahimi- Fix a compiling error in MS Visual Studio 2015 163*9a0e4156SSadaf Ebrahimi- Install pkgconfig file with CMake build 164*9a0e4156SSadaf Ebrahimi- Fix SOVERSION property of CMake build 165*9a0e4156SSadaf Ebrahimi- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc 166*9a0e4156SSadaf Ebrahimi- Fix MingW build 167*9a0e4156SSadaf Ebrahimi- Better handle CMake installation for Linux 64bit 168*9a0e4156SSadaf Ebrahimi 169*9a0e4156SSadaf Ebrahimi 170*9a0e4156SSadaf Ebrahimi[ X86 ] 171*9a0e4156SSadaf Ebrahimi 172*9a0e4156SSadaf Ebrahimi- Support BND prefix of Intel MPX extension 173*9a0e4156SSadaf Ebrahimi- Correct operand size for CALL/JMP in 64bit mode with prefix 0x66 174*9a0e4156SSadaf Ebrahimi- LOCK NOP is a valid instruction 175*9a0e4156SSadaf Ebrahimi- Fix ATT syntax for instruction with zero offset segment register 176*9a0e4156SSadaf Ebrahimi- LES/LDS are invalid in 64bit mode 177*9a0e4156SSadaf Ebrahimi- Fix number of operands for some MOV instructions 178*9a0e4156SSadaf Ebrahimi 179*9a0e4156SSadaf Ebrahimi 180*9a0e4156SSadaf Ebrahimi[ ARM ] 181*9a0e4156SSadaf Ebrahimi 182*9a0e4156SSadaf Ebrahimi- Fix POP reg to update SP register 183*9a0e4156SSadaf Ebrahimi- Update flags for UADD8 instruction 184*9a0e4156SSadaf Ebrahimi 185*9a0e4156SSadaf Ebrahimi 186*9a0e4156SSadaf Ebrahimi[ ARM64 ] 187*9a0e4156SSadaf Ebrahimi 188*9a0e4156SSadaf Ebrahimi- Better performance with new lookup table 189*9a0e4156SSadaf Ebrahimi- Handle system registers added in ARMv8.1/2 190*9a0e4156SSadaf Ebrahimi 191*9a0e4156SSadaf Ebrahimi 192*9a0e4156SSadaf Ebrahimi[ Java binding ] 193*9a0e4156SSadaf Ebrahimi 194*9a0e4156SSadaf Ebrahimi- Better handle input with invalid code 195*9a0e4156SSadaf Ebrahimi 196*9a0e4156SSadaf Ebrahimi 197*9a0e4156SSadaf Ebrahimi[ Visual Basic binding ] 198*9a0e4156SSadaf Ebrahimi 199*9a0e4156SSadaf Ebrahimi- New binding 200*9a0e4156SSadaf Ebrahimi 201*9a0e4156SSadaf Ebrahimi--------------------------------- 202*9a0e4156SSadaf EbrahimiVersion 3.0.5-rc2: March 2nd, 2017 203*9a0e4156SSadaf Ebrahimi 204*9a0e4156SSadaf Ebrahimi 205*9a0e4156SSadaf Ebrahimi[ Core ] 206*9a0e4156SSadaf Ebrahimi 207*9a0e4156SSadaf Ebrahimi- Fix build for Visual Studio 2012 208*9a0e4156SSadaf Ebrahimi- Fix X86_REL_ADDR macro 209*9a0e4156SSadaf Ebrahimi- Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA 210*9a0e4156SSadaf Ebrahimi- Better support for embedding Capstone into Windows kernel drivers 211*9a0e4156SSadaf Ebrahimi- Support to embedded Capstone into MacOS kernel 212*9a0e4156SSadaf Ebrahimi- Support MacOS 10.11 and up 213*9a0e4156SSadaf Ebrahimi- Better support for Cygwin 214*9a0e4156SSadaf Ebrahimi- Support build packages for FreeBSD & DragonflyBSD 215*9a0e4156SSadaf Ebrahimi- Add a command-line tool "cstool" 216*9a0e4156SSadaf Ebrahimi- Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc 217*9a0e4156SSadaf Ebrahimi 218*9a0e4156SSadaf Ebrahimi 219*9a0e4156SSadaf Ebrahimi[ X86 ] 220*9a0e4156SSadaf Ebrahimi 221*9a0e4156SSadaf Ebrahimi- Some random 16-bit code can be handled wrongly. 222*9a0e4156SSadaf Ebrahimi- Remove abundant operand type X86_OP_FP 223*9a0e4156SSadaf Ebrahimi- Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL 224*9a0e4156SSadaf Ebrahimi- Add X86_REG_EFLAGS for STC and STD 225*9a0e4156SSadaf Ebrahimi- Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT 226*9a0e4156SSadaf Ebrahimi- Rename registers ST0-ST7 to be consistent with asm output 227*9a0e4156SSadaf Ebrahimi 228*9a0e4156SSadaf Ebrahimi 229*9a0e4156SSadaf Ebrahimi[ ARM ] 230*9a0e4156SSadaf Ebrahimi 231*9a0e4156SSadaf Ebrahimi- Properly handle IT instruction 232*9a0e4156SSadaf Ebrahimi- Fix LDRSB 233*9a0e4156SSadaf Ebrahimi- Fix writeback for LDR 234*9a0e4156SSadaf Ebrahimi- Fix Thumb BigEndian setup 235*9a0e4156SSadaf Ebrahimi 236*9a0e4156SSadaf Ebrahimi 237*9a0e4156SSadaf Ebrahimi[ ARM64 ] 238*9a0e4156SSadaf Ebrahimi 239*9a0e4156SSadaf Ebrahimi- Fix arith extender 240*9a0e4156SSadaf Ebrahimi- Fix writeback for LDR 241*9a0e4156SSadaf Ebrahimi- Rename enum arm64_mrs_reg to arm64_sysreg 242*9a0e4156SSadaf Ebrahimi 243*9a0e4156SSadaf Ebrahimi 244*9a0e4156SSadaf Ebrahimi[ PowerPC ] 245*9a0e4156SSadaf Ebrahimi 246*9a0e4156SSadaf Ebrahimi- Print 0 offset for memory operand 247*9a0e4156SSadaf Ebrahimi 248*9a0e4156SSadaf Ebrahimi 249*9a0e4156SSadaf Ebrahimi[ Sparc ] 250*9a0e4156SSadaf Ebrahimi 251*9a0e4156SSadaf Ebrahimi- Fix POPC instruction 252*9a0e4156SSadaf Ebrahimi 253*9a0e4156SSadaf Ebrahimi 254*9a0e4156SSadaf Ebrahimi[ Python binding ] 255*9a0e4156SSadaf Ebrahimi 256*9a0e4156SSadaf Ebrahimi- Better PyPy support 257*9a0e4156SSadaf Ebrahimi- Add __version__ 258*9a0e4156SSadaf Ebrahimi- Better support for Python 3 259*9a0e4156SSadaf Ebrahimi- Fix CS_SKIPDATA_CALLBACK prototype 260*9a0e4156SSadaf Ebrahimi- Cast skipdata function inside binding to simplify the API 261*9a0e4156SSadaf Ebrahimi 262*9a0e4156SSadaf Ebrahimi 263*9a0e4156SSadaf Ebrahimi[ Java binding ] 264*9a0e4156SSadaf Ebrahimi 265*9a0e4156SSadaf Ebrahimi- Better handle input with invalid code 266*9a0e4156SSadaf Ebrahimi 267*9a0e4156SSadaf Ebrahimi 268*9a0e4156SSadaf Ebrahimi[ PowerShell ] 269*9a0e4156SSadaf Ebrahimi 270*9a0e4156SSadaf Ebrahimi- New binding 271*9a0e4156SSadaf Ebrahimi 272*9a0e4156SSadaf Ebrahimi--------------------------------- 273*9a0e4156SSadaf EbrahimiVersion 3.0.4: July 15th, 2015 274*9a0e4156SSadaf Ebrahimi 275*9a0e4156SSadaf Ebrahimi 276*9a0e4156SSadaf Ebrahimi[ Library ] 277*9a0e4156SSadaf Ebrahimi 278*9a0e4156SSadaf Ebrahimi- Improve cross-compile for Android using Android NDK. 279*9a0e4156SSadaf Ebrahimi- Support cross-compile for AArch64 Android (with Linux GCC). 280*9a0e4156SSadaf Ebrahimi- Removed osxkernel_inttypes.h that is incompatible with BSD license. 281*9a0e4156SSadaf Ebrahimi- Make it possible to compile with CC having a space inside (like "ccache gcc"). 282*9a0e4156SSadaf Ebrahimi 283*9a0e4156SSadaf Ebrahimi 284*9a0e4156SSadaf Ebrahimi[ X86 ] 285*9a0e4156SSadaf Ebrahimi 286*9a0e4156SSadaf Ebrahimi- Fix a null pointer dereference bug on handling code with special prefixes. 287*9a0e4156SSadaf Ebrahimi- Properly handle AL/AX/EAX operand for OUT instruction in AT&T syntax. 288*9a0e4156SSadaf Ebrahimi- Print immediate operand in positive form in some algorithm instructions. 289*9a0e4156SSadaf Ebrahimi- Properly decode some SSE instructions. 290*9a0e4156SSadaf Ebrahimi 291*9a0e4156SSadaf Ebrahimi 292*9a0e4156SSadaf Ebrahimi[ PowerPC ] 293*9a0e4156SSadaf Ebrahimi 294*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug. 295*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug for the engine built in DIET mode. 296*9a0e4156SSadaf Ebrahimi 297*9a0e4156SSadaf Ebrahimi 298*9a0e4156SSadaf Ebrahimi[ Mips ] 299*9a0e4156SSadaf Ebrahimi 300*9a0e4156SSadaf Ebrahimi- Fixed instruction ID of SUBU instruction. 301*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug. 302*9a0e4156SSadaf Ebrahimi 303*9a0e4156SSadaf Ebrahimi 304*9a0e4156SSadaf Ebrahimi[ Arm ] 305*9a0e4156SSadaf Ebrahimi 306*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug on IT instruction. 307*9a0e4156SSadaf Ebrahimi 308*9a0e4156SSadaf Ebrahimi 309*9a0e4156SSadaf Ebrahimi[ XCore ] 310*9a0e4156SSadaf Ebrahimi 311*9a0e4156SSadaf Ebrahimi- Fixed a memory corruption bug when instruction has a memory operand. 312*9a0e4156SSadaf Ebrahimi 313*9a0e4156SSadaf Ebrahimi 314*9a0e4156SSadaf Ebrahimi[ Python ] 315*9a0e4156SSadaf Ebrahimi 316*9a0e4156SSadaf Ebrahimi- Support Virtualenv. 317*9a0e4156SSadaf Ebrahimi- setup.py supports option --user if not in a virtualenv to allow for local usage. 318*9a0e4156SSadaf Ebrahimi- Properly handle the destruction of Cs object in the case the shared library 319*9a0e4156SSadaf Ebrahimi was already unloaded. 320*9a0e4156SSadaf Ebrahimi 321*9a0e4156SSadaf Ebrahimi--------------------------------- 322*9a0e4156SSadaf EbrahimiVersion 3.0.3: May 08th, 2015 323*9a0e4156SSadaf Ebrahimi 324*9a0e4156SSadaf Ebrahimi 325*9a0e4156SSadaf Ebrahimi[ Library ] 326*9a0e4156SSadaf Ebrahimi 327*9a0e4156SSadaf Ebrahimi- Support to embed into Mac OS X kernel extensions. 328*9a0e4156SSadaf Ebrahimi- Now it is possible to compile Capstone with older C compilers, such as 329*9a0e4156SSadaf Ebrahimi GCC 4.8 on Ubuntu 12.04. 330*9a0e4156SSadaf Ebrahimi- Add "test_iter" to MSVC project. 331*9a0e4156SSadaf Ebrahimi 332*9a0e4156SSadaf Ebrahimi 333*9a0e4156SSadaf Ebrahimi[ X86 ] 334*9a0e4156SSadaf Ebrahimi 335*9a0e4156SSadaf Ebrahimi- All shifted instructions SHL, SHR, SAL, SAR, RCL, RCR, ROL & ROR now support 336*9a0e4156SSadaf Ebrahimi $1 as first operand in *AT&T* syntax (so we have "rcll $1, %edx" instead of 337*9a0e4156SSadaf Ebrahimi "rcll %edx"). 338*9a0e4156SSadaf Ebrahimi- CMPXCHG16B is a valid instruction with LOCK prefix. 339*9a0e4156SSadaf Ebrahimi- Fixed a segfault on the input of 0xF3. 340*9a0e4156SSadaf Ebrahimi 341*9a0e4156SSadaf Ebrahimi 342*9a0e4156SSadaf Ebrahimi[ Arm ] 343*9a0e4156SSadaf Ebrahimi 344*9a0e4156SSadaf Ebrahimi- BLX instruction modifies PC & LR registers. 345*9a0e4156SSadaf Ebrahimi 346*9a0e4156SSadaf Ebrahimi 347*9a0e4156SSadaf Ebrahimi[ Sparc ] 348*9a0e4156SSadaf Ebrahimi 349*9a0e4156SSadaf Ebrahimi- Improved displacement decoding for sparc banching instructions. 350*9a0e4156SSadaf Ebrahimi 351*9a0e4156SSadaf Ebrahimi 352*9a0e4156SSadaf Ebrahimi[ Python binding ] 353*9a0e4156SSadaf Ebrahimi 354*9a0e4156SSadaf Ebrahimi- Fix for Cython so it can properly initialize. 355*9a0e4156SSadaf Ebrahimi- X86Op.avx_zero_mask now has c_bool type, but not c_uint8 type. 356*9a0e4156SSadaf Ebrahimi- Properly support compile with Cygwin & install binding (setup.py). 357*9a0e4156SSadaf Ebrahimi 358*9a0e4156SSadaf Ebrahimi--------------------------------- 359*9a0e4156SSadaf EbrahimiVersion 3.0.2: March 11th, 2015 360*9a0e4156SSadaf Ebrahimi 361*9a0e4156SSadaf Ebrahimi 362*9a0e4156SSadaf Ebrahimi[ Library ] 363*9a0e4156SSadaf Ebrahimi 364*9a0e4156SSadaf Ebrahimi- On *nix, only export symbols that are part of the API (instead of all 365*9a0e4156SSadaf Ebrahimi the internal symbols). 366*9a0e4156SSadaf Ebrahimi 367*9a0e4156SSadaf Ebrahimi 368*9a0e4156SSadaf Ebrahimi[ X86 ] 369*9a0e4156SSadaf Ebrahimi 370*9a0e4156SSadaf Ebrahimi- Do not consider 0xF2 as REPNE prefix if it is a part of instruction encoding. 371*9a0e4156SSadaf Ebrahimi- Fix implicit registers read/written & instruction groups of some instructions. 372*9a0e4156SSadaf Ebrahimi- More flexible on the order of prefixes, so better handle some tricky 373*9a0e4156SSadaf Ebrahimi instructions. 374*9a0e4156SSadaf Ebrahimi- REPNE prefix can go with STOS & MOVS instructions. 375*9a0e4156SSadaf Ebrahimi- Fix a compilation bug for X86_REDUCE mode. 376*9a0e4156SSadaf Ebrahimi- Fix operand size of instructions with operand PTR [] 377*9a0e4156SSadaf Ebrahimi 378*9a0e4156SSadaf Ebrahimi 379*9a0e4156SSadaf Ebrahimi[ Arm ] 380*9a0e4156SSadaf Ebrahimi 381*9a0e4156SSadaf Ebrahimi- Fix a bug where arm_op_mem.disp is wrongly calculated (in DETAIL mode). 382*9a0e4156SSadaf Ebrahimi- Fix a bug on handling the If-Then block. 383*9a0e4156SSadaf Ebrahimi 384*9a0e4156SSadaf Ebrahimi 385*9a0e4156SSadaf Ebrahimi[ Mips ] 386*9a0e4156SSadaf Ebrahimi 387*9a0e4156SSadaf Ebrahimi- Sanity check for the input size for MIPS64 mode. 388*9a0e4156SSadaf Ebrahimi 389*9a0e4156SSadaf Ebrahimi 390*9a0e4156SSadaf Ebrahimi[ MSVC ] 391*9a0e4156SSadaf Ebrahimi 392*9a0e4156SSadaf Ebrahimi- Compile capstone.dll with static runtime MSVCR built in. 393*9a0e4156SSadaf Ebrahimi 394*9a0e4156SSadaf Ebrahimi 395*9a0e4156SSadaf Ebrahimi[ Python binding ] 396*9a0e4156SSadaf Ebrahimi 397*9a0e4156SSadaf Ebrahimi- Fix a compiling issue of Cython binding with gcc 4.9. 398*9a0e4156SSadaf Ebrahimi 399*9a0e4156SSadaf Ebrahimi--------------------------------- 400*9a0e4156SSadaf EbrahimiVersion 3.0.1: February 03rd, 2015 401*9a0e4156SSadaf Ebrahimi 402*9a0e4156SSadaf Ebrahimi[ X86 ] 403*9a0e4156SSadaf Ebrahimi 404*9a0e4156SSadaf Ebrahimi- Properly handle LOCK, REP, REPE & REPNE prefixes. 405*9a0e4156SSadaf Ebrahimi- Handle undocumented immediates for SSE's (V)CMPPS/PD/SS/SD instructions. 406*9a0e4156SSadaf Ebrahimi- Print LJUMP/LCALL without * as prefix for Intel syntax. 407*9a0e4156SSadaf Ebrahimi- Handle REX prefix properly for segment/MMX related instructions (x86_64). 408*9a0e4156SSadaf Ebrahimi- Instruction with length > 15 is consider invalid. 409*9a0e4156SSadaf Ebrahimi- Handle some tricky encodings for instructions MOVSXD, FXCH, FCOM, FCOMP, 410*9a0e4156SSadaf Ebrahimi FSTP, FSTPNCE, NOP. 411*9a0e4156SSadaf Ebrahimi- Handle some tricky code for some X86_64 instructions with REX prefix. 412*9a0e4156SSadaf Ebrahimi- Add missing operands in detail mode for PUSH , POP , IN/OUT reg, reg 413*9a0e4156SSadaf Ebrahimi- MOV32ms & MOV32sm should reference word rather than dword. 414*9a0e4156SSadaf Ebrahimi 415*9a0e4156SSadaf Ebrahimi 416*9a0e4156SSadaf Ebrahimi[ Arm64 ] 417*9a0e4156SSadaf Ebrahimi 418*9a0e4156SSadaf Ebrahimi- BL & BLR instructions do not read SP register. 419*9a0e4156SSadaf Ebrahimi- Print absolute (rather than relative) address for instructions B, BL, 420*9a0e4156SSadaf Ebrahimi CBNZ, ADR. 421*9a0e4156SSadaf Ebrahimi 422*9a0e4156SSadaf Ebrahimi 423*9a0e4156SSadaf Ebrahimi[ Arm ] 424*9a0e4156SSadaf Ebrahimi 425*9a0e4156SSadaf Ebrahimi- Instructions ADC & SBC do not update flags. 426*9a0e4156SSadaf Ebrahimi- BL & BLX do not read SP, but PC register. 427*9a0e4156SSadaf Ebrahimi- Alias LDR instruction with operands [sp], 4 to POP. 428*9a0e4156SSadaf Ebrahimi- Print immediate operand of MVN instruction in positive hexadecimal form. 429*9a0e4156SSadaf Ebrahimi 430*9a0e4156SSadaf Ebrahimi 431*9a0e4156SSadaf Ebrahimi[ PowerPC ] 432*9a0e4156SSadaf Ebrahimi 433*9a0e4156SSadaf Ebrahimi- Fix some compilation bugs when DIET mode is enable. 434*9a0e4156SSadaf Ebrahimi- Populate SLWI/SRWI instruction details with SH operand. 435*9a0e4156SSadaf Ebrahimi 436*9a0e4156SSadaf Ebrahimi 437*9a0e4156SSadaf Ebrahimi[ Python binding ] 438*9a0e4156SSadaf Ebrahimi 439*9a0e4156SSadaf Ebrahimi- Fix a Cython bug when CsInsn.bytes returns a shorten array of bytes. 440*9a0e4156SSadaf Ebrahimi- Fixed a memory leak for Cython disasm functions when we immaturely quit 441*9a0e4156SSadaf Ebrahimi the enumeration of disassembled instructions. 442*9a0e4156SSadaf Ebrahimi- Fix a NULL memory access issue when SKIPDATA & Detail modes are enable 443*9a0e4156SSadaf Ebrahimi at the same time. 444*9a0e4156SSadaf Ebrahimi- Fix a memory leaking bug when when we stop enumeration over the disassembled 445*9a0e4156SSadaf Ebrahimi instructions prematurely. 446*9a0e4156SSadaf Ebrahimi- Export generic operand types & groups (CS_OP_xxx & CS_GRP_xxx). 447*9a0e4156SSadaf Ebrahimi 448*9a0e4156SSadaf Ebrahimi--------------------------------- 449*9a0e4156SSadaf EbrahimiVersion 3.0: November 19th, 2014 450*9a0e4156SSadaf Ebrahimi 451*9a0e4156SSadaf Ebrahimi[ API ] 452*9a0e4156SSadaf Ebrahimi 453*9a0e4156SSadaf Ebrahimi- New API: cs_disasm_iter & cs_malloc. See docs/README for tutorials. 454*9a0e4156SSadaf Ebrahimi- Renamed cs_disasm_ex to cs_disasm (cs_disasm_ex is still supported, but 455*9a0e4156SSadaf Ebrahimi marked obsolete to be removed in future) 456*9a0e4156SSadaf Ebrahimi- Support SKIPDATA mode, so Capstone can jump over unknown data and keep going 457*9a0e4156SSadaf Ebrahimi from the next legitimate instruction. See docs/README for tutorials. 458*9a0e4156SSadaf Ebrahimi- More details provided in cs_detail struct for all architectures. 459*9a0e4156SSadaf Ebrahimi- API version was bumped to 3.0. 460*9a0e4156SSadaf Ebrahimi 461*9a0e4156SSadaf Ebrahimi 462*9a0e4156SSadaf Ebrahimi[ Bindings ] 463*9a0e4156SSadaf Ebrahimi 464*9a0e4156SSadaf Ebrahimi- Python binding supports Python3 (besides Python2). 465*9a0e4156SSadaf Ebrahimi- Support Ocaml binding. 466*9a0e4156SSadaf Ebrahimi- Java: add close() method to be used to deinitialize a Capstone object when 467*9a0e4156SSadaf Ebrahimi no longer use it. 468*9a0e4156SSadaf Ebrahimi 469*9a0e4156SSadaf Ebrahimi 470*9a0e4156SSadaf Ebrahimi[ Architectures ] 471*9a0e4156SSadaf Ebrahimi 472*9a0e4156SSadaf Ebrahimi- New architectures: Sparc, SystemZ & XCore. 473*9a0e4156SSadaf Ebrahimi- Important bugfixes for Arm, Arm64, Mips, PowerPC & X86. 474*9a0e4156SSadaf Ebrahimi- Support more instructions for Arm, Arm64, Mips, PowerPC & X86. 475*9a0e4156SSadaf Ebrahimi- Always expose absolute addresses rather than relative addresses (Arm, Arm64, 476*9a0e4156SSadaf Ebrahimi Mips, PPC, Sparc, X86). 477*9a0e4156SSadaf Ebrahimi- Use common instruction operand types REG, IMM, MEM & FP across all 478*9a0e4156SSadaf Ebrahimi architectures (to enable cross-architecture analysis). 479*9a0e4156SSadaf Ebrahimi- Use common instruction group types across all architectures (to enable 480*9a0e4156SSadaf Ebrahimi cross-architecture analysis). 481*9a0e4156SSadaf Ebrahimi 482*9a0e4156SSadaf Ebrahimi 483*9a0e4156SSadaf Ebrahimi[ X86 ] 484*9a0e4156SSadaf Ebrahimi 485*9a0e4156SSadaf Ebrahimi- X86 engine is mature & handles all the malware tricks (that we are aware of). 486*9a0e4156SSadaf Ebrahimi- Added a lot of new instructions (such as AVX512, 3DNow, etc). 487*9a0e4156SSadaf Ebrahimi- Add prefix symbols X86_PREFIX_REP/REPNE/LOCK/CS/DS/SS/FS/GS/ES/OPSIZE/ADDRSIZE. 488*9a0e4156SSadaf Ebrahimi- Print immediate in positive form & hexadecimal for AND/OR/XOR instructions. 489*9a0e4156SSadaf Ebrahimi- More friendly disassembly for JMP16i (in the form segment:offset) 490*9a0e4156SSadaf Ebrahimi 491*9a0e4156SSadaf Ebrahimi 492*9a0e4156SSadaf Ebrahimi[ Mips ] 493*9a0e4156SSadaf Ebrahimi 494*9a0e4156SSadaf Ebrahimi- Engine added supports for new hardware modes: Mips32R6 (CS_MODE_MIPS32R6) & 495*9a0e4156SSadaf Ebrahimi MipsGP64 (CS_MODE_MIPSGP64). 496*9a0e4156SSadaf Ebrahimi- Removed the ABI-only mode CS_MODE_N64. 497*9a0e4156SSadaf Ebrahimi- New modes CS_MODE_MIPS32 & CS_MODE_MIPS64 (to use instead of CS_MODE_32 & 498*9a0e4156SSadaf Ebrahimi CS_MODE_64). 499*9a0e4156SSadaf Ebrahimi 500*9a0e4156SSadaf Ebrahimi 501*9a0e4156SSadaf Ebrahimi[ ARM ] 502*9a0e4156SSadaf Ebrahimi 503*9a0e4156SSadaf Ebrahimi- Support new mode CS_MODE_V8 for Armv8 A32 encodings. 504*9a0e4156SSadaf Ebrahimi- Print immediate in positive form & hexadecimal for AND/ORR/EOR/BIC instructions 505*9a0e4156SSadaf Ebrahimi 506*9a0e4156SSadaf Ebrahimi 507*9a0e4156SSadaf Ebrahimi[ ARM64 ] 508*9a0e4156SSadaf Ebrahimi 509*9a0e4156SSadaf Ebrahimi- Print immediate in hexadecimal for AND/ORR/EOR/TST instructions. 510*9a0e4156SSadaf Ebrahimi 511*9a0e4156SSadaf Ebrahimi 512*9a0e4156SSadaf Ebrahimi[ PowerPC ] 513*9a0e4156SSadaf Ebrahimi 514*9a0e4156SSadaf Ebrahimi- Do not print a dot in front of absolute address. 515*9a0e4156SSadaf Ebrahimi 516*9a0e4156SSadaf Ebrahimi 517*9a0e4156SSadaf Ebrahimi[ Other features ] 518*9a0e4156SSadaf Ebrahimi 519*9a0e4156SSadaf Ebrahimi- Support for Microsoft Visual Studio (so enable Windows native compilation). 520*9a0e4156SSadaf Ebrahimi- Support CMake compilation. 521*9a0e4156SSadaf Ebrahimi- Cross-compile for Android. 522*9a0e4156SSadaf Ebrahimi- Build libraries/tests using XCode project 523*9a0e4156SSadaf Ebrahimi- Much faster, while consuming less memory for all architectures. 524*9a0e4156SSadaf Ebrahimi 525*9a0e4156SSadaf Ebrahimi--------------------------------- 526*9a0e4156SSadaf EbrahimiVersion 2.1.2: April 3rd, 2014 527*9a0e4156SSadaf Ebrahimi 528*9a0e4156SSadaf EbrahimiThis is a stable release to fix some bugs deep in the core. There is no update 529*9a0e4156SSadaf Ebrahimito any architectures or bindings, so bindings version 2.1 can be used with this 530*9a0e4156SSadaf Ebrahimiversion 2.1.2 just fine. 531*9a0e4156SSadaf Ebrahimi 532*9a0e4156SSadaf Ebrahimi[ Core changes] 533*9a0e4156SSadaf Ebrahimi 534*9a0e4156SSadaf Ebrahimi- Support cross-compilation for all iDevices (iPhone/iPad/iPod). 535*9a0e4156SSadaf Ebrahimi- X86: do not print memory offset in negative form. 536*9a0e4156SSadaf Ebrahimi- Fix a bug in X86 when Capstone cannot handle short instruction. 537*9a0e4156SSadaf Ebrahimi- Print negative number above -9 without prefix 0x (arm64, mips, arm). 538*9a0e4156SSadaf Ebrahimi- Correct the SONAME setup for library versioning (Linux, *BSD, Solaris). 539*9a0e4156SSadaf Ebrahimi- Set library versioning for dylib of OSX. 540*9a0e4156SSadaf Ebrahimi 541*9a0e4156SSadaf Ebrahimi--------------------------------- 542*9a0e4156SSadaf EbrahimiVersion 2.1.1: March 13th, 2014 543*9a0e4156SSadaf Ebrahimi 544*9a0e4156SSadaf EbrahimiThis is a stable release to fix some bugs deep in the core. There is no update 545*9a0e4156SSadaf Ebrahimito any architectures or bindings, so bindings version 2.1 can be used with this 546*9a0e4156SSadaf Ebrahimiversion 2.1.1 just fine. 547*9a0e4156SSadaf Ebrahimi 548*9a0e4156SSadaf Ebrahimi[ Core changes] 549*9a0e4156SSadaf Ebrahimi 550*9a0e4156SSadaf Ebrahimi- Fix a buffer overflow bug in Thumb mode (ARM). Some special input can 551*9a0e4156SSadaf Ebrahimi trigger this flaw. 552*9a0e4156SSadaf Ebrahimi- Fix a crash issue when embedding Capstone into OSX kernel. This should 553*9a0e4156SSadaf Ebrahimi also enable Capstone to be embedded into other systems with limited stack 554*9a0e4156SSadaf Ebrahimi memory size such as Linux kernel or some firmwares. 555*9a0e4156SSadaf Ebrahimi- Use a proper SONAME for library versioning (Linux). 556*9a0e4156SSadaf Ebrahimi 557*9a0e4156SSadaf Ebrahimi--------------------------------- 558*9a0e4156SSadaf EbrahimiVersion 2.1: March 5th, 2014 559*9a0e4156SSadaf Ebrahimi 560*9a0e4156SSadaf Ebrahimi[ API changes ] 561*9a0e4156SSadaf Ebrahimi 562*9a0e4156SSadaf Ebrahimi- API version has been bumped to 2.1. 563*9a0e4156SSadaf Ebrahimi- Change prototype of cs_close() to be able to invalidate closed handle. 564*9a0e4156SSadaf Ebrahimi See http://capstone-engine.org/version_2.1_API.html for more information. 565*9a0e4156SSadaf Ebrahimi- Extend cs_support() to handle more query types, not only about supported 566*9a0e4156SSadaf Ebrahimi architectures. This change is backward compatible, however, so existent code 567*9a0e4156SSadaf Ebrahimi do not need to be modified to support this. 568*9a0e4156SSadaf Ebrahimi- New query type CS_SUPPORT_DIET for cs_support() to ask about diet status of 569*9a0e4156SSadaf Ebrahimi the engine. 570*9a0e4156SSadaf Ebrahimi- New error code CS_ERR_DIET to report errors about newly added diet mode. 571*9a0e4156SSadaf Ebrahimi- New error code CS_ERR_VERSION to report issue of incompatible versions between 572*9a0e4156SSadaf Ebrahimi bindings & core engine. 573*9a0e4156SSadaf Ebrahimi 574*9a0e4156SSadaf Ebrahimi 575*9a0e4156SSadaf Ebrahimi[ Core changes ] 576*9a0e4156SSadaf Ebrahimi 577*9a0e4156SSadaf Ebrahimi- On memory usage, Capstone uses about 40% less memory, while still faster 578*9a0e4156SSadaf Ebrahimi than version 2.0. 579*9a0e4156SSadaf Ebrahimi- All architectures are much smaller: binaries size reduce at least 30%. 580*9a0e4156SSadaf Ebrahimi Especially, X86-only binary reduces from 1.9MB to just 720KB. 581*9a0e4156SSadaf Ebrahimi- Support "diet" mode, in which engine size is further reduced (by around 40%) 582*9a0e4156SSadaf Ebrahimi for embedding purpose. The price to pay is that we have to sacrifice some 583*9a0e4156SSadaf Ebrahimi non-critical data fields. See http://capstone-engine.org/diet.html for more 584*9a0e4156SSadaf Ebrahimi details. 585*9a0e4156SSadaf Ebrahimi 586*9a0e4156SSadaf Ebrahimi 587*9a0e4156SSadaf Ebrahimi[ Architectures ] 588*9a0e4156SSadaf Ebrahimi 589*9a0e4156SSadaf Ebrahimi- Update all 5 architectures to fix bugs. 590*9a0e4156SSadaf Ebrahimi- PowerPC: 591*9a0e4156SSadaf Ebrahimi - New instructions: FMR & MSYNC. 592*9a0e4156SSadaf Ebrahimi- Mips: 593*9a0e4156SSadaf Ebrahimi - New instruction: DLSA 594*9a0e4156SSadaf Ebrahimi- X86: 595*9a0e4156SSadaf Ebrahimi - Properly handle AVX-512 instructions. 596*9a0e4156SSadaf Ebrahimi - New instructions: PSETPM, SALC, INT1, GETSEC. 597*9a0e4156SSadaf Ebrahimi - Fix some memory leaking issues in case of prefixed instructions such 598*9a0e4156SSadaf Ebrahimi as LOCK, REP, REPNE. 599*9a0e4156SSadaf Ebrahimi 600*9a0e4156SSadaf Ebrahimi 601*9a0e4156SSadaf Ebrahimi[ Python binding ] 602*9a0e4156SSadaf Ebrahimi 603*9a0e4156SSadaf Ebrahimi- Verify the core version at initialization time. Refuse to run if its version 604*9a0e4156SSadaf Ebrahimi is different from the core's version. 605*9a0e4156SSadaf Ebrahimi- New API disasm_lite() added to Cs class. This light API only returns tuples of 606*9a0e4156SSadaf Ebrahimi (address, size, mnemonic, op_str), rather than list of CsInsn objects. This 607*9a0e4156SSadaf Ebrahimi improves performance by around 30% in some benchmarks. 608*9a0e4156SSadaf Ebrahimi- New API version_bind() returns binding's version, which might differ from 609*9a0e4156SSadaf Ebrahimi the core's API version if the binding is out-of-date. 610*9a0e4156SSadaf Ebrahimi- New API debug() returns information on Cython support, diet status & archs 611*9a0e4156SSadaf Ebrahimi compiled in. 612*9a0e4156SSadaf Ebrahimi- Fixed some memory leaking bugs for Cython binding. 613*9a0e4156SSadaf Ebrahimi- Fix a bug crashing Cython code when accessing @regs_read/regs_write/groups. 614*9a0e4156SSadaf Ebrahimi- Support diet mode. 615*9a0e4156SSadaf Ebrahimi 616*9a0e4156SSadaf Ebrahimi 617*9a0e4156SSadaf Ebrahimi[ Java binding ] 618*9a0e4156SSadaf Ebrahimi 619*9a0e4156SSadaf Ebrahimi- Fix some memory leaking bugs. 620*9a0e4156SSadaf Ebrahimi- New API version() returns combined version. 621*9a0e4156SSadaf Ebrahimi- Support diet mode. 622*9a0e4156SSadaf Ebrahimi- Better support for detail option. 623*9a0e4156SSadaf Ebrahimi 624*9a0e4156SSadaf Ebrahimi 625*9a0e4156SSadaf Ebrahimi[ Miscellaneous ] 626*9a0e4156SSadaf Ebrahimi 627*9a0e4156SSadaf Ebrahimi- make.sh now can uninstall the core engine. This is done with: 628*9a0e4156SSadaf Ebrahimi 629*9a0e4156SSadaf Ebrahimi $ sudo ./make.sh uninstall 630*9a0e4156SSadaf Ebrahimi 631*9a0e4156SSadaf Ebrahimi---------------------------------- 632*9a0e4156SSadaf EbrahimiVersion 2.0: January 22nd, 2014 633*9a0e4156SSadaf Ebrahimi 634*9a0e4156SSadaf EbrahimiRelease 2.0 deprecates verison 1.0 and brings a lot of crucial changes. 635*9a0e4156SSadaf Ebrahimi 636*9a0e4156SSadaf Ebrahimi[ API changes ] 637*9a0e4156SSadaf Ebrahimi 638*9a0e4156SSadaf Ebrahimi- API version has been bumped to 2.0 (see cs_version() API) 639*9a0e4156SSadaf Ebrahimi- New API cs_strerror(errno) returns a string describing error code given 640*9a0e4156SSadaf Ebrahimi in its only argument. 641*9a0e4156SSadaf Ebrahimi- cs_version() now returns combined version encoding both major & minor versions. 642*9a0e4156SSadaf Ebrahimi- New option CS_OPT_MODE allows to change engine’s mode at run-time with 643*9a0e4156SSadaf Ebrahimi cs_option(). 644*9a0e4156SSadaf Ebrahimi- New option CS_OPT_MEM allows to specify user-defined functions for dynamically 645*9a0e4156SSadaf Ebrahimi memory management used internally by Capstone. This is useful to embed Capstone 646*9a0e4156SSadaf Ebrahimi into special environments such as kernel or firware. 647*9a0e4156SSadaf Ebrahimi- New API cs_support() can be used to check if this lib supports a particular 648*9a0e4156SSadaf Ebrahimi architecture (this is necessary since we now allow to choose which architectures 649*9a0e4156SSadaf Ebrahimi to compile in). 650*9a0e4156SSadaf Ebrahimi- The detail option is OFF by default now. To get detail information, it should be 651*9a0e4156SSadaf Ebrahimi explicitly turned ON. The details then can be accessed using cs_insn.detail 652*9a0e4156SSadaf Ebrahimi pointer (to newly added structure cs_detail) 653*9a0e4156SSadaf Ebrahimi 654*9a0e4156SSadaf Ebrahimi 655*9a0e4156SSadaf Ebrahimi[ Core changes ] 656*9a0e4156SSadaf Ebrahimi 657*9a0e4156SSadaf Ebrahimi- On memory usage, Capstone uses much less memory, but a lot faster now. 658*9a0e4156SSadaf Ebrahimi- User now can choose which architectures to be supported by modifying config.mk 659*9a0e4156SSadaf Ebrahimi before compiling/installing. 660*9a0e4156SSadaf Ebrahimi 661*9a0e4156SSadaf Ebrahimi 662*9a0e4156SSadaf Ebrahimi[ Architectures ] 663*9a0e4156SSadaf Ebrahimi 664*9a0e4156SSadaf Ebrahimi- Arm 665*9a0e4156SSadaf Ebrahimi - Support Big-Endian mode (besides Little-Endian mode). 666*9a0e4156SSadaf Ebrahimi - Support friendly register, so instead of output sub "r12,r11,0x14", 667*9a0e4156SSadaf Ebrahimi we have "sub ip,fp,0x14". 668*9a0e4156SSadaf Ebrahimi- Arm64: support Big-Endian mode (besides Little-Endian mode). 669*9a0e4156SSadaf Ebrahimi- PowerPC: newly added. 670*9a0e4156SSadaf Ebrahimi- Mips: support friendly register, so instead of output "srl $2,$1,0x1f", 671*9a0e4156SSadaf Ebrahimi we have "srl $v0,$at,0x1f". 672*9a0e4156SSadaf Ebrahimi- X86: bug fixes. 673*9a0e4156SSadaf Ebrahimi 674*9a0e4156SSadaf Ebrahimi 675*9a0e4156SSadaf Ebrahimi[ Python binding ] 676*9a0e4156SSadaf Ebrahimi 677*9a0e4156SSadaf Ebrahimi- Python binding is vastly improved in performance: around 3 ~ 4 times faster 678*9a0e4156SSadaf Ebrahimi than in 1.0. 679*9a0e4156SSadaf Ebrahimi- Cython support has been added, which can further speed up over the default 680*9a0e4156SSadaf Ebrahimi pure Python binding (up to 30% in some cases) 681*9a0e4156SSadaf Ebrahimi- Function cs_disasm_quick() & Cs.disasm() now use generator (rather than a list) 682*9a0e4156SSadaf Ebrahimi to return succesfully disassembled instructions. This improves the performance 683*9a0e4156SSadaf Ebrahimi and reduces memory usage. 684*9a0e4156SSadaf Ebrahimi 685*9a0e4156SSadaf Ebrahimi 686*9a0e4156SSadaf Ebrahimi[ Java binding ] 687*9a0e4156SSadaf Ebrahimi 688*9a0e4156SSadaf Ebrahimi- Better performance & bug fixes. 689*9a0e4156SSadaf Ebrahimi 690*9a0e4156SSadaf Ebrahimi 691*9a0e4156SSadaf Ebrahimi[ Miscellaneous ] 692*9a0e4156SSadaf Ebrahimi 693*9a0e4156SSadaf Ebrahimi- Fixed some installation issues with Gentoo Linux. 694*9a0e4156SSadaf Ebrahimi- Capstone now can easily compile/install on all *nix, including Linux, OSX, 695*9a0e4156SSadaf Ebrahimi {Net, Free, Open}BSD & Solaris. 696*9a0e4156SSadaf Ebrahimi 697*9a0e4156SSadaf Ebrahimi---------------------------------- 698*9a0e4156SSadaf Ebrahimi[Version 1.0]: December 18th, 2013 699*9a0e4156SSadaf Ebrahimi 700*9a0e4156SSadaf Ebrahimi- Initial public release. 701*9a0e4156SSadaf Ebrahimi 702