Download:
by Robert Van Engelen, David Whalley, Xin Yuan
In proceedings of the 8th ACM Symposium on Applied Computing SAC 2003
http://www.cs.fsu.edu/~xyuan/paper/03sac.pdf
Add To MetaCart
Abstract:
Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high performance for these systems is important, ensuring that these systems execute correctly is vital. One portion of this process is to ensure that codeimproving transformations applied to a program will not change the program’s semantic behavior, which may be jeopardized when transformations are specified manually. This paper describes a general approach for validation of many low-level code-improving transformations made either by a compiler or specified by hand. Initially, we associate a region of the program representation with a code-improving transformation. Afterwards, we calculate the region’s effects on the rest of the program before and after the transformation. The transformation is considered valid when the effects before and after the transformation are identical. We implemented an automatic validation system in the vpo compiler. The system is currently able to validate all code-improving transformations in vpo except transformations that affect blocks across loop levels. 1
Citations
|
913
|
Program slicing” in
– Weiser
- 1984
|
|
817
|
Proof-carrying code
– Necula
- 1997
|
|
219
|
The design and implementation of a certifying compiler
– Necula, Lee
- 1998
|
|
219
|
TIL: a typedirected optimizing compiler for ML
– Tarditi, Morrisett, et al.
- 1996
|
|
136
|
A Portable Global Optimizer and Linker
– Benitez, Davidson
- 1988
|
|
96
|
Translation validation for an optimizing compiler
– Necula
- 2000
|
|
68
|
Identifying the semantic and textual differences between two versions of a program
– Horwitz
- 1990
|
|
40
|
A mechanically verified language implementation
– Moore
- 1989
|
|
35
|
Advice on structuring compilers and proving them correct, in:Conference
– Morris
- 1973
|
|
33
|
VLISP: A verified implementation of Scheme
– Guttman, Ramsdell, et al.
- 1995
|
|
32
|
Credible compilation with pointers
– Rinard, Marinov
- 1999
|
|
31
|
Chains of recurrences - a method to expedite the evaluation of closed-form functions
– BACHMANN, WANG, et al.
- 1994
|
|
27
|
More on Advice on Structuring Compilers and Proving Them Correct
– Thatcher, Wagner, et al.
- 1981
|
|
20
|
Toward a complete transformational toolkit for compilers
– Bergstra, Dinesh, et al.
- 1997
|
|
19
|
CTADEL: a generator of multi-platform high performance codes for PDE-based scientific applications
– Engelen, Wolters, et al.
- 1996
|
|
16
|
SWI-Prolog Reference Manual
– Wielemaker
- 1995
|
|
14
|
A Provably Correct Embedded Verifier for the Certification of Safety Critical Software
– Cimatti, Giunchiglia, et al.
- 1997
|
|
10
|
Using Domain Algebras to Prove the Correctness of a Compiler
– Dybjer
- 1986
|
|
10
|
Symbolic evaluation of chains of recurrences for loop optimization
– Engelen
- 2000
|
|
9
|
Automatic validation of code-improving transformations
– Engelen, Whalley, et al.
- 2000
|
|
5
|
Identifying the Semantic and Textual Dierences Between Two Versions of a Program
– Horwitz
- 1990
|
|
2
|
A Provably Correct Embedded Verifier for the Certification of Safety Critical Software
– al
- 1997
|