Skip to content
devdri edited this page Jan 22, 2014 · 2 revisions

Roadmap: (not exactly in order)

  • Port to GUI application (web based version will still be available)
    • interface for opening roms
    • make a proper window with symbol list, disassembly, etc.
    • add support for symbol renaming without leaving the page
    • ui for graph searches, etc.
    • tighter integration with graphviz
    • ... make the user experience better
    • command line options
  • Improve disassembly presentation
    • make call annotations shorter; display full data in procedure header comment
    • fix various ugly things about expressions
  • Change the way procedures are represented
    • create a map of rom code and data 'chunks' - those are the atomic pieces of code, divided by jump sources and targets (nobody jumps in the middle of a code chunk).
    • change calls/references: instead of a reference originating from the procedure beginning, it should originate from the exact responsible instruction. This will make references independent from procedure boundaries.
    • procedures will now be a set of chunks. This will enable us to remove the restriction of procedures being contiguous (which could give much cleaner analysis in some cases).
  • With the new represenation of procedures, make more guarantees about graph correctness
    • more emphasis on removing orphans and artificial procedure splits which clutter the graph
  • Make a set of tools for maintaining the graph: cleanup, deduce-more, discover-more
  • Refactor current hacks: 'idioms' and manual jumptable limits:
    • jumptable limits to database + make UI for it
    • make 'idioms' more generic (idioms: for example 'rst 0 == switch A with jumptable at next PC')
  • Add support for more 'idiomatic' instructions:
    • memcpy dest, src, size
    • memset dest, size, stride, value
    • 16 bit arithmetic, multiplication, etc.
    • (in general: detect stuff with simple loops or ifs)
Clone this wiki locally