eCite Digital Repository

Interprocedural data flow decompilation


Cifuentes, CN, Interprocedural data flow decompilation, Journal of Programming Languages, 4, (2) pp. 77-99. ISSN 0963-9306 (1996) [Refereed Article]


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 have been implemented in dcc, a prototype decompiler for the Intel i80286 architecture. Experimental results have proved to reduce the number of intermediate instructions by over 75% on average for this particular CISC machine. © 1996 Chapman & Hall.

Item Details

Item Type:Refereed Article
Research Division:Information and Computing Sciences
Research Group:Software engineering
Research Field:Software engineering not elsewhere classified
Objective Division:Information and Communication Services
Objective Group:Other information and communication services
Objective Field:Other information and communication services not elsewhere classified
UTAS Author:Cifuentes, CN (Dr Cifuentes)
ID Code:9277
Year Published:1996
Web of Science® Times Cited:12
Deposited By:Computer Science
Deposited On:1996-08-01
Last Modified:2011-08-22

Repository Staff Only: item control page