adc, add, and, bsf, bsr, bt, btc, btr, bts, call, cbw, clc, cld, cli, cmc, cmovcc, cmp, cmps, cmpxchg, cwd, dec, div, enter, idiv, imul, inc, iret, jcc, jcxz/jecxz, jmp, lahf, lea, leave, lods, loop, mov, movs, movsx, movzx, mul, neg, nop, not, or, pop, popa, popf, push, pusha, pushf, rol, ror, rcl, rcr, shl, shr, sar, ret, sahf, sbb, scas, setcc, shld, shrd, stc, std, sti, stos, sub, test, xadd, xchg, xlat, xor, xadd
- input/output supported: the decompiles knows what the inputs and outputs are and uses a builtin function in the decompiled source code
aaa, aad, aam, aas, bound, bswap, cmpxchg8b, cpuid, daa, das, in, ins, int, out, outs, rdtsc, rep
- unsupported: nothing is known about these opcodes and they are modeled as inline assembler
arpl, clts, enter, hlt, lar, lgdt, lidt, lds/les/lfs/lgs/lss, lldt, lmsw, lsl, ltr, sgdt, sidt, sldt, smsw, str, verr, verw, wait, invd, invlpg, wbinvd, rdmsr, wrmsrThe complete list of changes:
- feature: support (in various levels) hopefully all x86 opcodes excluding FPU, x64, MMX, SSE
- feature: add –help command line option
- feature: add –hide-addresses command line option
- feature: -c
supports now multiple functions which are matched on function name with a regexp - feature: differ between three different types of undefined values: cpu opcode results in undefined value, not modeled by the decompiler and trashed by a function call
- feature: add new type ‘bit’ to the external type system
- feature: simplify cond?0:1 to BIT_TO_INT(!cond) and cond?1:0 to BIT_TO_INT(cond)
- feature: simplify x-y>42 to x>y+42
- feature: a new file ‘symbol_table.txt’ is written in current directory after each run
- feature: support ‘pc’ in the m68k code
- change: use register names with two letters if required e.g. ‘reg_da’
- change: replace builtin functions prefix from ‘intern_’ to ‘holdec‘
- change: create names according their definition place; this should make generated names more repeatable
- change: rework how concrete numbers are treated internally
- change: treat signed and unsigned comparisons different internally
- change: format numbers depending on the context (bit context -> unsigned hex, signed context -> signed decimal, unsigned and unknown context -> unsigned decimal)
- change: rework the SSA generation to use an algorithm based on Aycock and Horspool
- change: do not convert tail controlled loops with a fixed number of iterations to a for(…) loop
- fix: only issue a warning and do not die if a jump with a constant false condition is removed
- fix: add dummy values for local->register converted variables without an initial assignment