
HISTORY.txt -- libdasm release history
Copyright (c) 2004-2007  Jarkko Turkulainen <jt / nologin.org> <turkja / github.com>)
Copyright (c) 2005       Ero Carrera Ventura <ero / dkbza.org> (Python binding)
Copyright (c) 2006       Matt Miller skape <mmiller / hick.org> (Ruby binding)
Copyright (c) 2009-2010  Ange Albertini <angea / github.com>
Copyright (c) 2015-2018  Joshua Pereyda <jtpereyda / github.com>
======================================


1.6
- pydasm/setup.py Switching to setuptools
- re-license to 2-clause BSD
- add DESTDIR to the makefiles to make packagig easier
- available from:
  https://github.com/jtpereyda/libdasm

1.6 r15
1.6 r14 - 2009-2010

- eflags are now accessible from python [nnp]
- added group 2 (c0-c1) SAL (xx110xxx) [Silvio Cesare]
- added 0xf6-0xf7 (group 3) test xx001xxx
- added 0d9 d0-ff fpu [Georg 'oxff' Wicherski]
- fixed operand types for mov segment register (8c) and movzx (0fb6 and 0fb7) [Silvio Cesare]
- partially re-licensed to BSD 3-clause style license. New BSD license was advertised on project site,
  but was not progressed to the code.
- available from:
  https://code.google.com/archive/p/libdasm/
  https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libdasm/libdasm-beta.zip

1.5 12/27/2006

- Fixed typo "loopn" -> "loopne" (thanks Otto!)
- Added implied operand masks in instruction struct
- New instructions types
- Added "rbdasm", ruby interface for libdasm (thanks skape)
- New attributes in instructions structure:
  eflags_affected and eflags_used. Defines if instruction affects
  cpu eflags (thanks skape!).
- available from:
  http://www.klake.org/~jt/misc/libdasm-1.5.tar.gz
  https://web.archive.org/web/20120119123445/http://www.klake.org/~jt/misc/libdasm-1.5.tar.gz
  https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libdasm/libdasm-1.5.tar.gz

1.4 01/06/2006

- Fixed jecxz/jcxz bug
- Fixed push/pop operand size issues
- Typo: punockldq -> punpckldq
- available from:
  http://www.klake.org/~jt/misc/libdasm-1.4.tar.gz
  https://web.archive.org/web/20060718012748/http://www.klake.org/~jt/misc/libdasm-1.4.tar.gz

1.3.1 10/03/2005

- Fixed a bug with word displacement addressing.
  (thanks Arnaud Pilon)
- available from:
  http://www.klake.org/~jt/misc/libdasm-1.3.1.tar.gz
  https://web.archive.org/web/20060105052847/http://www.klake.org/~jt/misc/libdasm-1.3.1.tar.gz

1.3 10/01/2005

- Added additional flags in instruction type for
  catching prefixed 2-byte instructions like 16-bit MOVZX
  Thanks to Arnaud Pilon for finding out the bug.
  (very nasty bug introduced with 1.2)
- Changed Jcc names to simpler ones (jnle -> jg etc.)
- Added branch hint prefixes for Jcc instructions
- Created Makefiles for gcc/msvc, updated LIB.txt
- Moved address/operand size override checks as separate
  (inline) functions for better readability
- Removed useless mode check when printing immediate operand
- Added some stuff in README.txt
- ATT printing now looks prettier: no empty addressing
  brackets and asterisk in front of operand if needed
- Made some room for additional operand flags 
- Added new operand attribute: permission
  (read/write/execute) Thanks thief!
- Moved opcode extensions to separate tables
- Added missing instructions monitor and mwait
- Renamed tables.h -> opcode_tables.h
- Some cosmetic changes (hex numbers lower case)
- Minor modifications in das.c

1.2 05/11/2005

 - Fixed the mess with SSE instruction operand types
 - Added new opcode tables for 3-byte opcodes
 - Made major organization changes in libdasm.c/libdasm.h and
   moved opcode tables in new file "tables.h"
 - Added "pydasm", python interface for libdasm (thanks Ero)
 - Fixed big endianess issues (thanks Ero)
 - Replaced some casts with memcpy for better 64-bit support
   (hope they don't affect performance too much..)
 - Example "das" now prints libdasm version
 - Added some macros for determining libdasm version
 - Removed VERSION.txt file
 - Updated examples/README.txt

1.1 04/13/2005

 - Fixed some stupidness in AM_R & AM_M modrm checking
   (debug/test register movs now work...)
 - Added OT_d in print_operand_string,
   case OPERAND_TYPE_REGISTER
 - Removed example "emu" (too screwed up code...)
 - Added generic MMX/SSE instruction types
 - Fixed extension groups 10-15
 - Print XMM reg instead of MMX if operand size is overridden
 - Renamed mmx -> mm1
 - Renamed fxstor -> fxrstor
 - Added lot of general purpose instuction types
   (type member in INSTRUCTION structure something else than
   INSTRUCTION_TYPE_OTHER)
 - Cleared some terminology, SIMD -> XMM
 - Added fpuindex member in INSTRUCTION
 - Added FPU instruction types and corrected addressing
   modes of memory FPU instructions
 - Negative displacements also in 32 -and 16 bit displacements 
 - Added displacement and immediate offset members
   in OPERAND structure
 - Added libdasm.def and precompiled dll
 - Fixed bug in 2-byte opcode 0x7f (wrong addressing mode)

1.0 02/10/2005

 - Major changes in API:
   * get_instrument arguments simplified
   * removed printf_instruction, use new function
     get_instruction_string instead
   * lots of new helper functions
   * renamed parse_operand -> get_operand
 - Do not use '$' in relative immediate when printing ATT
 - Fixed MMX register name mmx -> mm7
 - Fixed register in opcode 0x0e (es -> cs)
 - Fixed operand size of opcode 0xe5 (w -> v)
 - Fixed operand size of opcode 0xe7 (w -> v)
 - Added segment overrides also for instructions
   containing non-memory operands
 - Fixed bugs in 2-byte opcodes 0x12 and 0x013
 - Removed opcode member from struct INST
 - Added example EMU
 - Moved examples to "examples" dir
 - Moved some of the stuff from .c to .h
 - Initialize operand basereg as REGISTER_NOP
 - Added instruction type member for most common instructions
 - Fill op->reg correctly when op->type is register and
   addressing mode E.
 - Added extension table offset to instruction struct
 - Renamed movsw -> movsd, cmpsw -> cmpsd

0.9 12/17/2004

 - Initialize operand registers to REGISTER_NONE before
   parsing
 - Fixed opcodes 0x48-0x4f (single reg dec) opcode number
 - Fixed operand flags of opcode 0x82
 - New helper function get_register_type
 - Removed new line printing from printf_instruction()
 - Added some general information README.txt
 - Fill operand.type with some sane values
 - Added operand.flags
 - Simplified code for non-general purpose reg decoding
 - Rewrote addressing override code
 - Fixed addressing mode of opcode 0x8d (E -> M)
 - Changed das.c to do some buffer sanity checking
 - Created simple.c
 - available from:
   http://www.klake.org/~jt/misc/libdasm-0.9.tar.gz

0.6  12/06/2004

 - Updated instruction set to IA-32 2004
 - Finally fixed operand addressing override (hopefully)
 - Fixed bug with addressing mode S

0.5  12/05/2004

 - Clarified licensing issues
 - Fixed addressing mode M
 - Support for SIMD instructions
 - Changed SIMD/MMX register naming -> xmmN/mmN
 - Added missing 2-byte opcodes
 - Fixed opcodes 0xbe and 0xbf (esi <-> edi)
 - Added couple of undocumented opcodes


0.2  12/01/2004

 - Fixed address size override (opcode 0x67)
 - Fixed operands for instructions "aam" and "aad"
 - Added missing opcode "sysenter"
 - Fill opcode byte in struct INSTRUCTION
 - Fixed couple of typos in opcode names


0.1  10/06/2004

 - First public release


