MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Validation of code-improving transformations for embedded systems (2003) [1 citations — 1 self]

Download:
Download as a PDF
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