University of Tasmania
Browse

File(s) not publicly available

Interprocedural data flow decompilation

journal contribution
posted on 2023-05-16, 10:24 authored by Cifuentes, CN
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.

History

Publication title

Journal of Programming Languages

Volume

4

Pagination

77-99

ISSN

0963-9306

Department/School

School of Information and Communication Technology

Publisher

Chapman & Hall/C R C

Place of publication

London

Repository Status

  • Restricted

Socio-economic Objectives

Other information and communication services not elsewhere classified

Usage metrics

    University Of Tasmania

    Exports

    RefWorks
    BibTeX
    Ref. manager
    Endnote
    DataCite
    NLM
    DC