In this dissertation we present a simple and scalable system for validating the correctness of low-level program transformations. Proving that program transformations are correct is crucial to the development of security critical software tools. We achieve a simple and scalable design by compiling sequential low-level programs to synchronous data-flow programs. Theses data-flow programs are a denotation of the original programs, representing all of the relevant aspects of the program semantics. We then check that the two denotations are equivalent, which implies that the program transformation is semantics preserving. Our denotations are computed by means of symbolic analysis. In order to achieve our design, we have extended symbolic analysis to arbitrary control-flow graphs. To this end, we have designed an intermediate language called Synchronous Value Graphs (SVG), which is capable of representing our denotations for arbitrary control-flow graphs, we have built an algorithm for computing SVG from normal assembly language, and we have given a formal model of SVG which allows us to simplify and compare denotations. Finally, we report on our experiments with LLVM M.D., a prototype denotational translation validator for the LLVM optimization framework. / Engineering and Applied Sciences
Identifer | oai:union.ndltd.org:harvard.edu/oai:dash.harvard.edu:1/10121982 |
Date | 02 January 2013 |
Creators | Govereau, Paul |
Contributors | Morrisett, John Gregory |
Publisher | Harvard University |
Source Sets | Harvard University |
Language | en_US |
Detected Language | English |
Type | Thesis or Dissertation |
Rights | open |
Page generated in 0.0016 seconds