C un-compiler ?

chaplin chaplin at keinstr.uucp
Thu Jun 27 23:49:43 AEST 1991


In article <22069105.30.00WAB1 at lehigh.bitnet> WAB1 at NS.CC.LEHIGH.EDU (William Anthony Barry) writes:
>Hello,
>   Is it possible to disassemble an executable file back into its C
>language source? If not completely possible, there must be certain
>constructs that could be recognized, then the rest could be left in
>assembly language. Are there any existing programs that do this?
>                 Thanks for any comments,
>                        Bill Barry
>                             wab1 at ns.cc.lehigh.edu

I don't know what's available, so I can't answer that part.  However, based
on my experience with various C compilers, it seems that an un-compiler
would have to have quite a bit of knowledge of the compiler which was used
to produce the executable.

For instance, the 68K assembly code produced for a switch statement by
a Greenhills cross compiler looks vastly different from the code
produced by a Microtec cross compiler.

Also, one of the optimizations which the Microtec compiler can perform
is the removal of duplicate code (I don't know the formal name for
this).  I discovered this feature when I was tracing execution using an
in-circuit emulator, and I noticed that large amounts of code seemed to
be "missing."  Obviously, an un-compiler would not be able to accurately
reconstruct the source code from an executable which has been so optimized.
-- 
Roger Chaplin / Instruments Division Engineering / "Though I'd been lost now I
chaplin at keinstr.uucp / CI$: 76307,3506          / felt I was found when He
#include <disclaimer.h>                        / looked at me with His
#include "disclaimer.h" /* cover all bases */ / forgiving eyes." - Michael Card



More information about the Comp.lang.c mailing list