Date: Tue, 10 Dec 1996 22:59:21 GMT
Server: NCSA/1.4.2
Content-type: text/html
Last-modified: Fri, 22 Nov 1996 03:05:28 GMT
Content-length: 2848
Michael Ernst's compilation page
Compilation
My primary research goal is improving programmer productivity, and my
chief research area is compilation. However, I am also interested in other topics from game theory to
intellectual property.
Microsoft's program analysis
group aims to improve programming tools, primarily through the use
of a new intermediate representation, the value dependence graph
(VDG). The VDG promises to make optimization easier and more
efficient, at the cost of slightly more involved code generation. We
have a prototype programming environment and compiler for C which use
the VDG.
Source information
Our compiler generates information about source statements corresponding
to intermediate graph nodes, and maintains this mapping during
transformations. This permits effective queries and feedback based on the
original program. A paper describing the details is forthcoming.
Slicing
A static slicer for visualizing dependences is
integrated with our programming environment. This integration permits the
slicer to take advantage of analyses and and optimizations performed by
the compiler, resulting in improved slices. The expression-oriented
nature of the slicer also improves programmer control and the precision of
the resulting slices. Executable slices can be created without
constraints based on the syntax of the original program or language.
Debugging
Implementation of a source-level debugger for optimized programs is
underway. The debugger will take advantage of the features of the VDG to
provide the programmer with fine control over the execution of the program
and to avoid misleading the programmer about the computation which is
actually ocurring.
Serialization
"Serializing
Parallel Programs by Removing Redundant Computation" (also see the abstract)
takes a new approach to the old problem of compiling programs to run fast
on both serial and parallel machines. Exclusive focus on parallelization
of serial programs is misguided; we should work to serialize parallel
programs, because that is easier, more natural, and produces better results
for a certain class of programs. The paper also discusses new forms of
common subexpression elimination.