For homework assignments and term projects in 15-745, you will use the SUIF research compiler. SUIF stands for Stanford University Intermediate Format. You can look into the background of SUIF on the Stanford SUIF home page. Prof. Michael Smith's research group at Harvard has extended SUIF to support work on machine-specific optimizations. The resulting system, called Machine SUIF (machsuif for short), includes all the capabilities of Stanford SUIF (aka base SUIF), but adds facilities to generate and refine machine code for a number of target architectures.
An overview of Machine SUIF, describing its goals and how to begin using it.
The core of the machsuif documentation, including interfaces for the key data structures for the machine-level IR and the utilities that manipulate it.
Describes machsuif's support for representating and manipulating Machine SUIF programs via control flow graphs.
Describes dominator- and loop-analysis facilities.
Describes a framework for bit-vector based iterative data flow analysis
The preferred machines to for 745 course work are the ``Bone Alphas''. However, there it is also possible to run the environment undex Linux, version 2.2 or higher. If you use Linux for your development you will have to convert your .c files to suif on an Alpha. To setup your environment to run on these machines you should use the script /afs/cs/academic/class/15745-s03/public/bin/setup-suif-env. You invoke the script as follows:
eval `/afs/cs/academic/class/15745-s03/public/bin/setup-suif-env`If you like, you can put this command in your shell setup file, e.g.,
.bashrc
. (Note, the script will make its best guess about
the shell you are using. You can force it to use the proper type with
the optional arguments -sh or -csh.)
Finally, on the Alphas the C to suif conversion is performed with
c2sby1 and on Linux it uses c2s.
Your Machine SUIF passes should be in subdirectories of ${HOME}/localnci (e.g. ${HOME}/localnci/assignment1).${HOME}/localnci ${HOME}/localnci/bin ${HOME}/localnci/solib ${HOME}/localnci/include
Back to CS745 home page.