Converting Intermediate Code to Assembly Code Using Declarative
Machine Descriptions
Writing an optimizing back end is expensive, in part because it
requires
mastery of both a target machine and a compiler's internals.
We separate these concerns by isolating target-machine
knowledge in declarative machine descriptions.
We then analyze these descriptions to automatically
generate machine-specific
components of the back end.
In this work, we
generate a recognizer;
this component, which identifies register transfers
that correspond to target-machine instructions, plays a key role
in instruction selection
in such compilers as vpo, gcc and Quick C--.
We present analyses and transformations that address the major challenge in generating
a recognizer:
accounting for compile-time abstractions not present in a machine
description, including variables, pseudo-registers, stack
slots, and labels.
Full paper
The paper is available as
US Letter PostScript (205K),
US Letter PDF (117K),
and
US Letter TeX DVI (70K).