HISTORY.txt -- libdasm release history (c) 2004 - 2006 jt / nologin.org ====================================== 1.4 01/06/2006 - Fixed jecxz/jcxz bug - Fixed push/pop operand size issues - Typo: punockldq -> punpckldq 1.3.1 10/03/2005 - Fixed a bug with word displacement addressing. (thanks Arnaud Pilon) 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 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