skip to main content
10.1145/1315580.1315602acmconferencesArticle/Chapter ViewAbstractPublication PagesadaConference Proceedingsconference-collections
Article

Towards a demonstrably-correct ada compiler

Published:04 November 2007Publication History

ABSTRACT

We report on a significant new compiler technology for applications requiring the highest level of reliability. This work is partly funded by AWE plc and takes into account previous AWE work on a demonstrably correct compiler for a Pascal-like language. This work will be of interest to anyone developing safety-critical software.

Today's Ada compilers are based on 1980s' technology, when 4M Bytes of memory was considered sufficient for a project of 10 users. Using today's computers, when even a laptop computer has 512 M Bytes of memory; we can offer a much better compiler for a fraction of the cost. Initial estimates suggest a new technology compiler will be 1/50th the number of source lines, yet meet all our requirements for features and run-time performance.

We have already confirmed the feasibility of our approach in a prototype compiler. This handles a well-defined subset of Ada95 and employs algebraic simplifications in place of optimizations. By prohibiting recursion, we avoid costly run-time organization. Our prototype run-time system is just three instructions.

Our compiler is written in a notation much like ordinary mathematics, and is therefore amenable to mathematical techniques such as theorem proving. Later we intend to offer a proof of correctness. In the meantime, we will demonstrate correctness, both in the sense that a given program has been correctly compiled, and that all programs will be correctly compiled.

The prototype compiler performs well. It compiles at several thousand lines per second and generates code that compares well with that from our optimizing compiler.

References

  1. Stepney S: High Integrity Compilation, Prentice Hall, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Cohn A: A proof of correctness of the VIPER microprocessor: The first level. In Graham Birtwistle and P. A. Subrahmanyam, editors, VLSI Specification, Verification and Synthesis Kluwer Academic Publishers, 1998.Google ScholarGoogle Scholar
  3. Barnes J: High Integrity Software: The SPARK Approach to Safety and Security, Addison Wesley, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Spivey J.M: The Z Notation - a reference manual, 2nd edition, Prentice Hall, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Stepney S, Nabney I.T: The DeCCo Project Papers I: Z Specification of Pasp Technical Report YCS-2003-358, University of York, June 2003.Google ScholarGoogle Scholar
  6. Stepney S, Nabney I.T: The DeCCo Project Papers II: Z Specification of Asp Technical Report YCS-2003--359, University of York, June 2003.Google ScholarGoogle Scholar
  7. Stepney S: The DeCCo Project Papers IV: Z Specification of Linker and Hexer Technical Report YCS-2003-361, University of York, June 2003.Google ScholarGoogle Scholar
  8. Stepney S, Nabney I.T: The DeCCo Project Papers III: Z Specification of Compiler Templates Technical Report YCS-2003-360, University of York, June 2003.Google ScholarGoogle Scholar
  9. Stepney S: The DeCCo Project Papers V: Compiler Correctness Proofs Technical Report YCS-2003-362, University of York, June 2003.Google ScholarGoogle Scholar
  10. Stepney S: The DeCCo Project Papers VI: Z to Prolog DCTG translation guidelines, Technical Report YCS-2003-363, University of York, June 2003.Google ScholarGoogle Scholar
  11. G.T. Goos et al: DIANA - An Intermediate Language for Ada, LNCS 161, Springer 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Bird R, Walder P., Introduction to Functional Programming, Prentice Hall, 1998, ISBN 0-13-484189-1 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986. ISBN 0-201-10088-6 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Military Standard Sixteen-Bit Computer Instruction Set Architecture, USAF, 2 Jul 1980, with updated Notice 1, 21 May 1982,, MIL-STD-1750AGoogle ScholarGoogle Scholar
  15. ISO/IEC 13211: Information technology -- Programming languages -- Prolog. International Organization for Standardization, Geneva.Google ScholarGoogle Scholar

Index Terms

  1. Towards a demonstrably-correct ada compiler

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      SIGAda '07: Proceedings of the 2007 ACM international conference on SIGAda annual international conference
      November 2007
      116 pages
      ISBN:9781595938763
      DOI:10.1145/1315580
      • cover image ACM SIGAda Ada Letters
        ACM SIGAda Ada Letters  Volume XXVII, Issue 3
        SIGAda '07
        December 2007
        93 pages
        ISSN:1094-3641
        DOI:10.1145/1315607
        Issue’s Table of Contents

      Copyright © 2007 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 4 November 2007

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!