List of TODO items, by section, in random order

Ia32

realmode

X86_64

decompiler

CPU

Arm
Sparc
Cell

Parser

Allow single-file multiplexer (C code + Asm + asm16bit + ...)
Fix the asm prepro comment issue: '; a /* b\n c ; */' should see 'c'

Assembler

Handle cpu pseudo-instrs (mips 'li' -> lui high + ori low)
SplitReloc? (for pseudo-instrs)
Ia32 GAS syntax
Make the autoimport depend on the target platform and not on the exeformat
Encode FPU constants

Disasm

DecodedData
Exe decoding generate decodeddata ?
Fix thunk detection (thunk: mov ecx, 42  jmp [iat_thiscall] is not a thunk)
Test with ET_REL style exe
Store stuff out of mem (to handle big binaries)
Better :default usage
 good on call eax, but not on <600k instrs> ret
 use binary personality ? (uses call vs uses pushret..)
Improve 'backtrace => patch di.instr.args'
path-specific backtracking ( foo: call a ; a: jmp retloc ; bar: call b ; b: jmp retloc ; retloc: ret ; call foo ; ret : last ret trackback should only reach a:)
Decode pseudo/macro-instrs (mips 'li')
Deoptimizer (instr reordering for readability)
Optimizer (deobfuscating)
Per-instr context (allows to mix cell/ppc, x86 32/16bits, arm/armthumb..)
Better save/load dasm state
Parse symbol.map generated by IDA for ELF files

Compiler

Optimizer
Register allocator
Instr reordering
Asm intrinsics
Asm inline
inline functions
Separate partial compilation + linking (src1.c -> obj1.o, src2.c -> obj2.o, obj1.o+obj2.o -> bin)
Make generic compiler from cpu.instr_binding ?
 create a cpu.what_instr_has_binding(:a => (:a + :b)) => 'add a, b' ?
Shellcode compiler (exit() => mov eax, 1  int 80h inline)

Decompiler

Fix decompiling on loaded savefile
Rewrite cpu-specific to really dumb
 Just translate di.binding to C
  maybe w/ trivial var dependency check for unused regs, but beware :incomplete instrs deps
 Check interdependency ('xadd')
Move frame pointer checks / stack var detection to C code
Update asm listing from info in C (stack vars, stack var names..)
Handle renaming/retyping register vars / aliases
Handle switch() / computed goto
Fix inline asm reg dependencies
Handle direct syscalls (mov eax, 1  int 80h => exit())
Autodecode structs
FPU
Handle/hide compiler-generated stuff (getip, stack cookie setup/check..)
Handle call 1f ; 1: pop eax
More user control (force/forbid register arg, return type, etc)
Preserve C decompiled line association to range of asm decoded addrs

Debugger

OSX
Detour-style functionnality to patch binary code (also static to patch exe files?)
Move constants in a data/ folder (ptrace reg numbers, syscalls, etc)
Generic remote process manip
 create blank state
 linux virtualallocex
Remote debugging (small standalone C client)
Support dbghelp.dll (ms symbol server info)
Support debugee function call (gdb 'call')

ELF

test encoding openbsd binaries
handle symbol versions
LoadedELF.dump
Check relocation encoding (eg samples/dynamic_ruby with cpu.generate_PIC=false)

MachO

PE

resource editor ?
rc compiler ?
add simple accessor for resource stuff (manifest, icon, ...)
parse PDB

GUI

debugger
 specialize widgets
  show breakpoints
  show jump direction from current flag values
have a console frontend
zoom font when zooming graph
text selection
copy/paste
map (part of) the binary & debug it (map a PE on a linux host & run it)
html frontend

Ruby

write a fast ruby-like interpreter