Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

On the Correctness of Transformations in Compiler Back-Ends

  • Conference paper
Leveraging Applications of Formal Methods (ISoLA 2004)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4313))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Assmann, U.: Graph rewrite systems for program optimization. ACM Transactions on Programming Languages and Systems 22(4), 583–637 (2000)

    Article  Google Scholar 

  2. Barrett, C., Goldberg, B., Zuck, L.: Run-time validation of speculative optimizations using CVC. Electronic Notes in Theoretical Computer Science 89(2) (2003)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. Brger, E., Durdanovic, I.: Correctness of compiling occam to transputer. The Computer Journal 39(1), 52–92 (1996)

    Article  Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Chapter  Google Scholar 

  11. Diehl, S.: Semantics-Directed Generation of Compilers and Abstract Machines. PhD thesis, Universität Saarbrücken (1996)

    Google Scholar 

  12. 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)

    Article  MATH  MathSciNet  Google Scholar 

  13. Emmelmann, H.: Codeselektion mit regulär gesteuerter Termersetzung. PhD thesis, Universität Karlsruhe, Fakultät für Informatik, GMD-Bericht 241, Oldenbourg, Cambridge (1994)

    Google Scholar 

  14. 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)

    Google Scholar 

  15. 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)

    Google Scholar 

  16. 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)

    Google Scholar 

  17. 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

    Google Scholar 

  18. 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)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. Glesner, S., Goos, G., Zimmermann, W.: Verifix: Konstruktion und Architektur verifizierender bersetzer. IT – Information Technology 46(5), 265–276 (2004)

    Article  Google Scholar 

  22. 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)

    Google Scholar 

  23. Goldberg, B., Zuck, L., Barrett, C.: Practical issues in translation validation for optimizing compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)

    Google Scholar 

  24. 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)

    Chapter  Google Scholar 

  25. Gurevich, Y.: Evolving algebras 1993: Lipari guide. In: Brger, E. (ed.) Specification and Validation Methods, pp. 9–36. Oxford University Press, Oxford (1995)

    Google Scholar 

  26. Gurevich, Y.: May 1997 Draft of the ASM Guide. Technical Report CSE-TR-336-97, University of Michigan EECS Department (1997)

    Google Scholar 

  27. Hoare, C.A.R., Jifeng, H., Sampaio, A.: Normal Form Approach to Compiler Design. Acta Informatica 30, 701–739 (1993)

    Article  MATH  MathSciNet  Google Scholar 

  28. 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)

    Google Scholar 

  29. 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)

    Article  MATH  Google Scholar 

  30. 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)

    Google Scholar 

  31. 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)

    Google Scholar 

  32. Moore, J.S.: Piton: A Mechanically Verified Assembly-Level Language. Kluwer Academic Press, Dordrecht (1996)

    Google Scholar 

  33. 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)

    Google Scholar 

  34. Müller-Olm, M.: Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction. LNCS, vol. 1283. Springer, New York (1997)

    Google Scholar 

  35. 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)

    Chapter  Google Scholar 

  36. 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)

    Chapter  Google Scholar 

  37. 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)

    Google Scholar 

  38. 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)

    Google Scholar 

  39. Palsberg, J.: An automatically generated and provably correct compiler for a subset of Ada. In: IEEE International Conference on Computer Languages (1992)

    Google Scholar 

  40. 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)

    Google Scholar 

  41. 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)

    Chapter  Google Scholar 

  42. Poetzsch-Heffter, A., Gawkowski, M.: Towards proof generating compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)

    Google Scholar 

  43. Polak, W.: Compiler specification and verification. In: Hartmanis, J., Goos, G. (eds.) Compiler Specification and Verification. LNCS, vol. 124. Springer, Heidelberg (1981)

    Google Scholar 

  44. Proebsting, T.A.: BURS automata generation. ACM Transactions on Programming Languages and Systems 17(3), 461–486 (1995)

    Article  Google Scholar 

  45. Samet, H.: Automatically proving the correctness of translations involving optimized code. PhD thesis (1975)

    Google Scholar 

  46. Samet, H.: Compiler testing via symbolic interpretation. In: ACM 76: Proceedings of the annual conference, pp. 492–497. ACM Press, New York (1976)

    Chapter  Google Scholar 

  47. Samet, H.: A machine description facility for compiler testing. IEEE Transactions on Software Engineering 3(5), 343–351 (1977)

    Article  Google Scholar 

  48. Samet, H.: A normal form for compiler testing. In: Proceedings of the 1977 symposium on Artificial intelligence and programming languages, pp. 155–162 (1977)

    Google Scholar 

  49. Samet, H.: Proving the correctness of heuristically optimized code. Communications of the ACM 21(7), 570–582 (1978)

    Article  MATH  Google Scholar 

  50. Stärk, R., Schmid, J., Börger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  51. 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)

    Google Scholar 

  52. Wand, M.: A semantic prototyping system. In: SIGPLAN Notices. SIGPLAN 84 Symposium On Compiler Construction, vol. 19(6), pp. 213–221 (June 1984)

    Google Scholar 

  53. 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)

    MATH  MathSciNet  Google Scholar 

  54. 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)

    Google Scholar 

  55. 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)

    Google Scholar 

  56. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics