Joao Dias
|
Email: first name followed by last name followed by "@gmail.com"
|
As of fall 2010, I am now working on Project Denver at Nvidia.
If you are looking for a job in compilers, run-time systems,
or just about any other low-level systems software (or hardware),
please send me an email -- we're doing some very innovative stuff.
The rest of this page contains information and links that
you may be interested in from my days doing compiler research.
After completing my PhD at Harvard,
I spent two invigorating years as a postdoc at Tufts
working with my advisor
Norman Ramsey.
Here's what I worked on:
Research
I work on the C-- project.
My research focuses on the automatic generation
of compiler back ends from declarative machine descriptions.
The state-of-the-art in retargeting a compiler is to write
code that maps the compiler's intermediate representation onto machine instructions.
Our goal is to simplify the task of retargeting a compiler by
decoupling the knowledge of the machine from the knowledge of compiler internals.
We isolate the knowledge of the target machine in a reusable, declarative
machine description.
The declarative machine description permits analysis, allowing us to
automatically generate the machine-specific components of the compiler.
The main components are the code expander, the recognizer, and the register allocator.
We have demonstrated that we can automatically generate a recognizer and the
machine-dependent parts of the register allocator from a declarative machine
description.
For more details, see my dissertation, the 2006 CC paper,
and the 2004 technical report below.
Papers
Automatically Generating Instruction Selectors Using Declarative Machine Descriptions.
Joao Dias and Norman Ramsey.
37th Symposium on Principles of Programming Languages (POPL 2010).
The main results from my dissertation: In general, the problem of generating
an instruction selector from a machine description is undecidable,
but for real machines, a heuristic search using algebraic laws
can generate a code generator in minutes. The algorithm uses unification
and Hoare logic to find sequences of machine instructions that implement
the compiler's intermediate code.
Automatically Generating the Back End of a Compiler Using Declarative Machine
Descriptions.
Joao Dias.
PhD dissertation. Harvard University. December, 2008.
My dissertation, which shows how to generate the code generator in a compiler
using declarative machine descriptions.
Converting Intermediate Code to Assembly Code Using Declarative Machine
Descriptions.
Joao Dias and Norman Ramsey.
15th International Conference on Compiler Construction (CC '06).
Part of my research on generating the back end of a compiler from declarative
machine descriptions.
This paper describes how to generate a recognizer, which identifies register
transfers that correspond to instructions on the target machine.
Slides from the talk: (pdf)
An Applicative Control-Flow Graph Based on Huet's
Zipper.
Norman Ramsey and Joao Dias.
ML Workshop 2005.
An applicative control-flow graph for classic, imperative optimizations.
Avoids dynamic invariants and facilitates speculative transformation of
the control-flow graph.
Slides from the talk: (pdf)
Generating a
Recognizer from Declarative Machine Descriptions.
Joao Dias and Norman Ramsey.
Harvard Technical Report TR-30-04, 2004.
An early view of the work described in the CC '06 paper above.
Talks
A more flexible code generator for GHC (video).
Joao Dias (joint work with Norman Ramsey and Simon Peyton Jones).
Haskell Implementors' Workshop, 2009.
A high-level overview of our redesign of GHC's back end,
with a quick tutorial on some of the enabling technology.
Slides from the talk: (pdf)
Teaching
In the spring of 2004, I was a teaching fellow (TF) for the undergrad
compilers course, CS153.
In the past, I TF'd the second introductory CS course at Harvard,
CS51 (Spring 2000, 2001, 2002),
as well as the introductory hardware course CS141 (Fall 2001).
I was also a head TF for a staff of 10 TF's for CS51 in Spring 2002.
Pictures
I am a terrible photographer. When I do bring a camera,
I take a ridiculous number of
pictures -- they can't all be bad. Here are some completely unorganized
collections of pictures from Tallinn, Estonia
and Vienna, Austria.
Attendees of ICFP 2007 can look forward to
Freiburg's famous tower!
Random
I am a proud member of the
American Homebrewers Association.
The MBTA is the worst public transit system in the world.
Take advantage of their laughable
guarantee
at every (legal) opportunity.