Differences between current version and previous revision of DeCompiler.
Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 4 | Last edited on Saturday, August 23, 2003 9:32:12 am | by AristotlePagaltzis | |
Older page: | version 3 | Last edited on Sunday, August 17, 2003 3:20:17 am | by AristotlePagaltzis | Revert |
@@ -1,3 +1,5 @@
-A [DeCompiler] transforms
a program from low level language
to the high level language
it was originally written in. In languages such as [Java], where the generated low level code is relatively close to the source language code and compilers do relatively little in the way optimisation, decompilation is viable
.
+A [DeCompiler] tries to transform
a program available in MachineCode
to the ProgrammingLanguage
it was originally written in.
-Decompiling
MachineCode to [C
] is theoretically possible
, but since
the source and
target languages are
far apart and [C
] compilers often
optimise, it is usually
impossible to infer the originally
used [C]
code from
looking at the [Compiler] generated MachineCode.
+When the
MachineCode is that of a VirtualMachine, as is the case with [Java] class files, it is usually relatively close
to the source language.
[Compiler
]s for such languages also usually do relatively little in the way optimisation. In such cases, decompilation
is quite viable
, often outright trivial.
+
+Contrast with cases when
the MachineCode is that of a real silicon [CPU], as is usually the case with [C] code. Such a
target language is usually
far apart from the source language,
and most
[Compiler
]s
optimise quite aggressively. Therefor
, it is at least very hard, if not
impossible,
to infer the language constructs
used in the original source
code by just
looking at the [Compiler] generated MachineCode.