Abstract
This paper summarizes the results on the correctness of the transformations in compiler back-ends achieved in the DFG-project Verifix. Compiler back-ends transform intermediate languages into code of the target machine. Back-end generators allow to generate compiler back-ends from a set of transformation rules. This paper focuses on the correctness of these transformation rules and on the correctness of the whole transformation stemming from the transformation rules.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Assmann, U.: Graph rewrite systems for program optimization. ACM Transactions on Programming Languages and Systems 22(4), 583–637 (2000)
Barrett, C., Goldberg, B., Zuck, L.: Run-time validation of speculative optimizations using CVC. Electronic Notes in Theoretical Computer Science 89(2) (2003)
Blech, J.O., Gesellensetter, L., Glesner, S.: Formal verification of dead code elimination in Isabelle/HOL. In: 3rd IEEE International Conference on Software Engineering and Formal Methods. IEEE Computer Society Press, Los Alamitos (to appear, 2005)
Blech, J.O., Glesner, S.: A formal correctness proof for code generation from SSA form in Isabelle/HOL. In: Informatik 2004, Proceedings der 3. Arbeitstagung Programmiersprachen (ATPS) auf der 34. Jahrestagung der Gesellschaft für Informatik. Lecture Notes in Informatics, vol. P-51, pp. 449–458. Springer, Heidelberg (2004)
Blech, J.O., Glesner, S., Leitner, J., Mlling, S.: Optimizing code generation from SSA form: A comparison between two formal correctness proofs in Isabelle/HOL. In: Proceedings of the 4th COCV-Workshop (Compiler Optimization meets Compiler Verification). Electronic Notes in Theoretical Computer Science (to appear, 2005)
Brger, E., Durdanovic, I.: Correctness of compiling occam to transputer. The Computer Journal 39(1), 52–92 (1996)
Brger, E., Durdanovic, I., Rosenzweig, D.: Occam: Specification and Compiler Correctness.Part I: The Primary Model. In: Montanari, U., Olderog, E.-R. (eds.) Proc. Procomet 1994 (IFIP TC2 Working Conference on Programming Concepts, Methods and Calculi). North-Holland, Amsterdam (1994)
Brown, D.F., Moura, H., Watt, D.A.: Actress: an action semantics directed compiler generator. In: Pfahler, P., Kastens, U. (eds.) CC 1992. LNCS, vol. 641. Springer, Heidelberg (1992)
Buth, B., Buth, K.-H., Fränzle, M., Karger, B., Lakhneche, Y., Langmaack, H., Müller-Olm, M.: Provably correct compiler development and implementation. In: Pfahler, P., Kastens, U. (eds.) CC 1992. LNCS, vol. 641. Springer, Heidelberg (1992)
Colby, C., Lee, P., Necula, G.C., Blau, F., Plesko, M., Cline, K.: A certifying compiler for Java. In: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, pp. 95–107. ACM Press, New York (2000)
Diehl, S.: Semantics-Directed Generation of Compilers and Abstract Machines. PhD thesis, Universität Saarbrücken (1996)
Dold, A., von Henke, F.W., Goerigk, W.: A completely verified realistic bootstrap compiler. International Journal on Foundations of Computer Science 14(4), 659–680 (2003)
Emmelmann, H.: Codeselektion mit regulär gesteuerter Termersetzung. PhD thesis, Universität Karlsruhe, Fakultät für Informatik, GMD-Bericht 241, Oldenbourg, Cambridge (1994)
Emmelmann, H., Schröer, F.-W., Landwehr, R.: BEG – a Generator for Efficient Back Ends. In: Proceedings of the Sigplan 1989 Conference on Programming Language Design and Implementation (June 1989)
Gaul, T., Heberle, A., Zimmermann, W., Goerigk, W.: Construction of verified software systems with program-checking: An application to compiler back-ends. In: Pnueli, A., Traverso, P. (eds.) Proceedings of RTRV 1999: Workshop on Runtime Result Verification, Trento, Italy (1999)
Gaul, T.S.: An Abstract State Machine Specification of the DEC-Alpha Processor Family. In: Verifix Working Paper [Verifix/UKA/4], University of Karlsruhe (1995)
Glesner, S.: Using program checking to ensure correctness of compiler implementations. Journal of Universal Computer Science 9(3), 191–222 (2003); Special Issue on Compiler Optimization meets Compiler Verification
Glesner, S., Blech, J.-O.: Classifying and formally verifying. In: 2nd Workshop on Compiler Optimization meets Compiler Verification COCV 2003. Electronic Notes in Theoretical Computer Science, vol. 82 (2003)
Glesner, S., Forster, S., Jäger, M.: A program result checker for the lexical analysis of the gnu c compiler. In: 3rd International Workshop on Compiler Optimization meets Compiler Verification COCV 2004. Electronic Notes in Theoretical Computer Science (2004)
Glesner, S., Geiß, R., Bösler, B.: Verified code generation for embedded systems. In: Workshop on Compiler Optimization meets Compiler Verification COCV 2002. Electronic Notes in Theoretical Computer Science, vol. 65 (2002)
Glesner, S., Goos, G., Zimmermann, W.: Verifix: Konstruktion und Architektur verifizierender bersetzer. IT – Information Technology 46(5), 265–276 (2004)
Glesner, S., Zimmermann, W.: Structural Simulation Proofs based on ASMs even for Non-Terminating Programs. In: Moreno-Díaz Jr., R., Buchberger, B., Freire, J.-L. (eds.) EUROCAST 2001. LNCS, vol. 2178. Springer, Heidelberg (2001)
Goldberg, B., Zuck, L., Barrett, C.: Practical issues in translation validation for optimizing compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)
Goos, G., Zimmermann, W.: Verification of compilers. In: Olderog, E.-R., Steffen, B. (eds.) Correct System Design. LNCS, vol. 1710, pp. 201–230. Springer, Heidelberg (1999)
Gurevich, Y.: Evolving algebras 1993: Lipari guide. In: Brger, E. (ed.) Specification and Validation Methods, pp. 9–36. Oxford University Press, Oxford (1995)
Gurevich, Y.: May 1997 Draft of the ASM Guide. Technical Report CSE-TR-336-97, University of Michigan EECS Department (1997)
Hoare, C.A.R., Jifeng, H., Sampaio, A.: Normal Form Approach to Compiler Design. Acta Informatica 30, 701–739 (1993)
Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Proving correctness of compiler optimizations by temporal logic. In: Proc. 29th ACM Symposium on Principles of Programming Languages, pp. 283–294. Association of Computing Machinery (2002)
Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Compiler optimization correctness by temporal logic. Higher Order and Symbolic Computation 17(3), 173–206 (2004)
Leinenbach, D., Paul, W., Petrova, E.: Towards the formal verification of a C0 compiler: Code generation and implementation correctness. In: 3rd IEEE International Conference on Software Engineering and Formal Methods. IEEE Computer Society Press, Los Alamitos (2005)
McCarthy, J., Painter, J.A.: Correctness of a compiler for arithmetical expressions. In: Schwartz, J.T. (ed.) Proceedings of a Symposium in Applied Mathematics, Mathematical Aspects of Computer Science, vol. 19. American Mathematical Society (1967)
Moore, J.S.: Piton: A Mechanically Verified Assembly-Level Language. Kluwer Academic Press, Dordrecht (1996)
Mosses, P.D.: Abstract semantic algebras. In: Bjørner, D. (ed.) Formal description of programming concepts II. IFIP IC-2 Working Conference, pp. 63–88. North Holland, Amsterdam (1982)
Müller-Olm, M.: Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction. LNCS, vol. 1283. Springer, New York (1997)
Necula, G.C.: Proof-carrying code. In: Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 106–119. ACM Press, New York (1997)
Necula, G.C.: Translation validation for an optimizing compiler. In: PLDI 2000: SIGPLAN Conference on Programming Language Design and Implementation, pp. 83–95. ACM, New York (2000)
Necula, G.C., Lee, P.: The design and implementation of a certifying compiler. In: Proceedings of the 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 333–344 (1998)
Nymeyer, A., Katoen, J.-P., Westra, Y., Ablas, H.: Codegeneration = A *+BURS. In: Gyimóthy, T. (ed.) CC 1996. LNCS, vol. 1060, pp. 160–176. Springer, Heidelberg (1996)
Palsberg, J.: An automatically generated and provably correct compiler for a subset of Ada. In: IEEE International Conference on Computer Languages (1992)
Pelegr-Llopart, E., Graham, S.L.: Optimal code generation for expression trees: An application of BURS theory. In: Principle of Programming Languages POPL 1988, pp. 294–308. ACM, New York (1988)
Pnueli, A., Shtrichman, O., Siegel, M.: Translation Validation for Synchronous Languages. In: Larsen, K.G., Skyum, S., Winskel, G. (eds.) ICALP 1998. LNCS, vol. 1443, p. 235. Springer, Heidelberg (1998)
Poetzsch-Heffter, A., Gawkowski, M.: Towards proof generating compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)
Polak, W.: Compiler specification and verification. In: Hartmanis, J., Goos, G. (eds.) Compiler Specification and Verification. LNCS, vol. 124. Springer, Heidelberg (1981)
Proebsting, T.A.: BURS automata generation. ACM Transactions on Programming Languages and Systems 17(3), 461–486 (1995)
Samet, H.: Automatically proving the correctness of translations involving optimized code. PhD thesis (1975)
Samet, H.: Compiler testing via symbolic interpretation. In: ACM 76: Proceedings of the annual conference, pp. 492–497. ACM Press, New York (1976)
Samet, H.: A machine description facility for compiler testing. IEEE Transactions on Software Engineering 3(5), 343–351 (1977)
Samet, H.: A normal form for compiler testing. In: Proceedings of the 1977 symposium on Artificial intelligence and programming languages, pp. 155–162 (1977)
Samet, H.: Proving the correctness of heuristically optimized code. Communications of the ACM 21(7), 570–582 (1978)
Stärk, R., Schmid, J., Börger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)
Strecker, M.: Formal Verification of a Java Compiler in Isabelle. In: Voronkov, A. (ed.) CADE 2002. LNCS, vol. 2392, pp. 63–77. Springer, Heidelberg (2002)
Wand, M.: A semantic prototyping system. In: SIGPLAN Notices. SIGPLAN 84 Symposium On Compiler Construction, vol. 19(6), pp. 213–221 (June 1984)
Zimmermann, W., Gaul, T.: On the Construction of Correct Compiler Back-Ends: An ASM-Approach. Journal of Universal Computer Science 3(5), 504–567 (1997)
Zuck, L., Pnueli, A., Fang, Y., Goldberg, B.: VOC: A Translation Validator for Optimizing Compilers. In: Knoop, J., Zimmermann, W. (eds.) Electronic Notes in Theoretical Computer Science, vol. 65. Elsevier, Amsterdam (2002)
Zuck, L., Pnueli, A., Fang, Y., Goldberg, B.: Voc: A methodology for the translation validation of optimizing compilers. Journal of Universal Computer Science 9(3), 223–247 (2003)
Zuck, L., Pnueli, A., Fang, Y., Goldberg, B., Hu, Y.: Translation and run-time validation of optimized code. Electronic Notes in Theoretical Computer Science 70(4) (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zimmermann, W. (2006). On the Correctness of Transformations in Compiler Back-Ends. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods. ISoLA 2004. Lecture Notes in Computer Science, vol 4313. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11925040_6
Download citation
DOI: https://doi.org/10.1007/11925040_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-48928-3
Online ISBN: 978-3-540-48929-0
eBook Packages: Computer ScienceComputer Science (R0)