Hacker News new | ask | show | jobs
by krackers 264 days ago
As far as I can tell (although I"m a novice at RE), in the native world all non-trivial decompilers are "analytical", doing things like control-flow recovery and such. I guess the only reason why the first java decompiler was "non-analytical" is that the bytecode (at least in early days) was simple enough that you could basically pattern-match it back to instructions.

So if I'd have to give a definition I pulled out of my ass:

* non-analytical compiler: "local", works only at the instruction or basic-block level, probably done by just pattern matching templates

* analytical: anything that does non-local transformations, working across basic-blocks to recover logic and control flow