@CONFERENCE{Collberg97b,
   AUTHOR    = "Christian S. Collberg",
   TITLE     = "Reverse Interpretation + Mutation Analysis = Automatic Retargeting",
   BOOKTITLE = "Conference on Programming Language Design and Implementation",
   ORGANIZATION = "SIGPLAN",
   PUBLISHER = "ACM",
   ADDRESS   = "Las Vegas, Nevada",
   MONTH     = jun,
   YEAR      = 1997,
   NOTE      = "http://www.cs.auckland.ac.nz/$\sim$collberg/Research/Publications/Collberg97b/index.html",
   URL       = {<a href="http://www.cs.auckland.ac.nz/collberg/Research/Publications/Collberg97b/index.html"> Collberg97b </a>},
   ABSTRACT  = "
There are three popular methods for constructing 
highly retargetable compilers: (1) the compiler 
emits abstract machine code which is interpreted
at run-time, (2) the compiler emits C code which
is subsequently compiled to machine code by the native C
compiler, or (3) the compiler's code-generator is generated 
by a back-end generator from a formal machine description 
produced by the compiler writer.
\par
These methods incur high costs at run-time,
compile-time, or compiler-construction time,
respectively.
\par
In this paper we will describe a novel method
which promises to significantly reduce the
effort required to retarget a compiler to
a new architecture, while at the same time
producing fast and effective compilers.
The basic idea is to use the native C compiler
at {\em compiler construction time} to
discover architectural features of the new
architecture. From this information a
formal machine description is produced.
Given this machine description, a native
code-generator can be generated by a 
back-end generator such as BEG or {\tt burg}.
\par
A prototype {\em Automatic Architecture Discovery Unit}
has been implemented. The current version is general 
enough to produce machine descriptions
for the integer instruction sets of common 
RISC and CISC architectures such as the Sun SPARC, 
Digital Alpha, MIPS, DEC VAX, and Intel x86. The tool
is completely automatic and requires minimal input
from the user: principally, the user needs to provide
the internet address of the target machine and the 
command-lines by which the C compiler,
assembler, and linker are invoked."
      }

