Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Joao Dias
Joao Dias
Mail:
Joao Dias
161 College Ave
Tufts University
Medford, MA 02155
USA
Email: dias @ cs.tufts.edu
After completing my PhD at Harvard,
I am working as a postdoc at Tufts.
My advisor is
Norman Ramsey.
You can download my CV here.
You may prefer to download this information in a single
PDF.
Interests
I am generally interested in functional programming, run-time systems,
register allocation, compiler design, mechanized reasoning, type systems,
and systems research.
I am warming up to object-oriented programming.
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.
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)
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!