|
Decompiler Design -
Advanced Topics
|
|
|
Prev: Recovering Types
Advanced Topics
In the Beginner and in the Intermediate sections
we have considered the basic algorithms that make up a standard decompiler.
In this Advanced section we re-examine some of the topics with a focus on
decompiling real-world random programs.
Major problems not yet covered
In the Intermediate section we have considered how to decompile some basic
sequences of isolated code, without considering some of the most difficult
problems. Here we look at some of these problems. They are:
- switch statements
- indirect jumps
- indirect calls
- tail-call optimization
- stack deallocation coalescing
- passing parameters in registers
- inlining
- call-return optimizations
- register uncoloring
- alloca() and setjmp/longjmp
- C++ constructs
- other languages
We'll consider these problems and propose a solution, with the understanding
that there may not be a solution or that some user intervention may be required,
since not all of these can be solved in a purely automatic way.
|
|
|