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
[go: Go Back, main page]

Joao Dias

Joao 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.

Job application materials


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.

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.