holdec
loads ELF, PE, MZ and Amiga binaries
has support for i386 and m68k
has a GUI
contains over 20 different passes which are executed for a total of about 50 times to produce correct and compact source code
uses SSA (single static assignment) as its internal main data structure
cope with functions which use a framepointer as well as functions without one
supports a variety of user input to specify for example extra non-code areas in the binary, volatile memory locations or function signatures
the function signatures go beyond the classical signatures of C by allowing for example to specify multiple result values in multiple registers, passing flag registers or stack changes
requires Java 6 to run
Limitations
A decompiler usually assumes a static non-changing program: self-modifying code is also not not supported by holdec.
The implemented type system is currently in a non-working condition and only basic type information (operand size in bytes and signedness).
Future
As there are always ways to improve the holdec decompiler is not finished. Currently planned are FPU and SIMD support, improved naming of functions and variables.
]]>