Skip to main content

An ASM Semantics for SSA Intermediate Representations

  • Conference paper
  • 317 Accesses

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 3052))

Abstract

Static single assignment (SSA) form is the intermediate representation of choice in modern optimizing compilers for which no formal semantics has been stated yet. To prove such compilers correct, a formal semantics of SSA representations is necessary. In this paper, we show that abstract state machines (ASMs) are able to capture the imperative as well as the data flow-driven and therefore non-deterministic aspects of SSA representations in a simple and elegant way. Furthermore, we demonstrate that correctness of code generation can be verified based on this ASM semantics by proving the correctness of a simple code generation algorithm.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Börger, E., Durdanovic, I.: Correctness of compiling Occam to Transputer Code. Computer Journal 39(1), 52–92 (1996)

    Article  Google Scholar 

  2. Börger, E., Rosenzweig, D.: The WAM - definition and compiler correctness. In: Beierle, L.C., Pluemer, L. (eds.) Logic Programming: Formal Methods and Practical Applications. North-Holland Series in Computer Science and Artificial Intelligence (1994)

    Google Scholar 

  3. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)

    Article  Google Scholar 

  4. Dold, A., Vialard, V.: A Mechanically Verified Compiling Specification for a Lisp Compiler. In: Hariharan, R., Mukund, M., Vinay, V. (eds.) FSTTCS 2001. LNCS, vol. 2245, p. 144. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  5. Dold, A., Henke, F.v., Vialard, V., Goerigk, W.: A Mechanically Verified Compiling Specification for a Realistic Compiler. Ulmer Informatik- Berichte 02-03, Universität Ulm, Fakultät für Informatik (2002)

    Google Scholar 

  6. Eschbach, R.: Uwe Glässer, Reinhard Gotzhein, and Andreas Prinz. On the Formal Semantics of Design Languages: A compilation approach using Abstract State Machines. In: Abstract State Machines – ASM 2000, International Workshop on Abstract State Machines. Local Proceedings, TIK-report 87, Swiss Federal Institute of Technology (ETH) Zurich (2000)

    Google Scholar 

  7. Gurevich, Y., Huggins, J.K.: The Semantics of the C Programming Language. In: Martini, S., Börger, E., Kleine Büning, H., Jäger, G., Richter, M.M. (eds.) CSL 1992. LNCS, vol. 702, pp. 274–308. Springer, Heidelberg (1993)

    Google Scholar 

  8. Gurevich, Y.: Evolving Algebras 1993: Lipari Guide. In: Specification and Validation Methods, pp. 231–243. Oxford University Press, Oxford (1995)

    Google Scholar 

  9. Goos, G., Zimmermann, W.: Verification of Compilers. In: Olderog, E.-R., Steffen, B. (eds.) Correct System Design. LNCS, vol. 1710, p. 201. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  10. Muchnick, S.S.: Compiler Design and Implementation. Morgan Kaufmann Publishers, Inc., San Francisco (1997)

    Google Scholar 

  11. Newsticker, H.: Rotstich durch Fehler in Intels C++ Compiler (2001), http://www.heise.de/newsticker/data/hes-11.11.01-000/

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

    MATH  Google Scholar 

  13. Steensgaard, B.: Sparse Functional Stores for Imperative Programs. In: The First ACM SIGPLAN Workshop on Intermediate Representations (1995)

    Google Scholar 

  14. Wallace, C.: The Semantics of the C++ Programming Language. In: Specification and Validation Methods, Oxford University Press, Oxford (1995)

    Google Scholar 

  15. Zimmermann, W., Dold, A.: A Framework for Modeling the Semantics of Expression Evaluation with Abstract State Machines. In: Börger, E., Gargantini, A., Riccobene, E. (eds.) ASM 2003. LNCS, vol. 2589, pp. 391–406. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  16. Zimmermann, W., Gaul, T.: On the Construction of Correct Compiler Backends: An ASM Approach. Journal of Universal Computer Science 3(5), 504–567 (1997)

    MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Glesner, S. (2004). An ASM Semantics for SSA Intermediate Representations. In: Zimmermann, W., Thalheim, B. (eds) Abstract State Machines 2004. Advances in Theory and Practice. ASM 2004. Lecture Notes in Computer Science, vol 3052. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24773-9_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-24773-9_11

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-22094-7

  • Online ISBN: 978-3-540-24773-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics