Department of Computer Science, University of Tasmania; GPO Box 252C, Hobart TAS 7001
SVM HeaderParse 0.2
SVM HeaderParse 0.1
Traditional compiler data flow analysis techniques are used to transform the intermediate representation of a decompiled program to a higher representation that eliminates low-level concepts such as registers and condition codes, and reintroduces the high-level concept of expression. Summary data flow information is collected on condition codes and registers, and is propagated across basic blocks and subroutine boundaries to find boolean and arithmetic expressions, register arguments, function return registers, actual arguments, and propagate data types whenever required. The elimination of condition codes is performed by an extension of a reach algorithm. The elimination of registers and intermediate instructions is performed by an extended copy propagation algorithm that is based on intra and interprocedural analysis of the program's control flow graph. The methods presented in this paper have been implemented in dcc, a prototype decompiler for the Intel i80286 architecture. Experi...