Skip to main content

Compilation by Refinement for a Practical Assembly Language

  • Conference paper
Formal Methods and Software Engineering (ICFEM 2003)

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

Included in the following conference series:

Abstract

In this paper we extend the conventional framework of program refinement down to the assembler level. We describe an extension to the Refinement Calculus that supports the refinement of programs in the Guarded Command Language to programs in .NET assembler. This is illustrated by a small example.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.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

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ould, M.A.: Software development under Def Stan 00-55: A guide. Information and Software Technology 32, 170–175 (1990)

    Article  Google Scholar 

  2. Bowen, J. (ed.): Towards Verified Systems. Real-Time Safety Critical Systems, vol. 2. Elsevier, Amsterdam (1994)

    Google Scholar 

  3. Back, R.-J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Springer, Heidelberg (1998)

    MATH  Google Scholar 

  4. Morgan, C.: Programming from Specifications, 2nd edn. Prentice-Hall, Englewood Cliffs (1994)

    MATH  Google Scholar 

  5. Sampaio, A.: An Algebraic Approach to Compiler Design. AMAST Series in Computing, vol. 4. World Scientific, Singapore (1997)

    Book  MATH  Google Scholar 

  6. Fidge, C.J.: Modelling program compilation in the refinement calculus. In: Duke, D.J., Evans, A.S. (eds.) 2nd BCS-FACS Northern Formal Methods Workshop, Electronic Workshops in Computing. Springer, Heidelberg (1997), http://www.bcs.org/ewic/

    Google Scholar 

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

    Google Scholar 

  8. Lermer, K., Fidge, C.J.: Compilation as refinement. Groves, L. and Reeves, S. (eds.). In: Formal Methods Pacific 1997, pp. 142–164. Springer, Heidelberg (1997)

    Google Scholar 

  9. ECMA standardization - original submission, Web: http://msdn.microsoft.com/net/ecma/OctoberSubmission.asp (accessed November 1, 2002)

  10. Lam, H., Thai, T.: .NET Framework Essentials. O’Reilly & Associates, Sebastopol (2001)

    Google Scholar 

  11. Platt, D.S.: Introducing Microsoft .NET. Microsoft Press (2001)

    Google Scholar 

  12. Jones, C.B.: Systematic Software Development Using VDM, 2nd edn. Prentice-Hall International Series in Computer Science. Prentice-Hall International, Englewood Cliffs (1989)

    Google Scholar 

  13. Hoare, C.A.R.: Refinement algebra proves correctness of compiling specifications. In: Morgan, C., Woodcock, J. (eds.) 3rd Refinement Workshop, pp. 33–48. Springer, Heidelberg (1990)

    Google Scholar 

  14. Hoare, C.A.R., Jifeng, H.: Refinement algebra proves correctness of a compiler. Lecture Notes of International Summer School at Marktoberdorf. Springer, Heidelberg (1990)

    Google Scholar 

  15. Börger, E., Durdanović, I.: Correctness of compiling Occam to transputer code. The Computer Journal 39, 52–92 (1996)

    Article  Google Scholar 

  16. Fränzle, M., Müller-Olm, M.: Towards provably correct code generation for a hard real-time programming language. In: Fritzson, P.A. (ed.) CC 1994. LNCS, vol. 786, pp. 294–308. Springer, Heidelberg (1994)

    Google Scholar 

  17. Olderog, E.-R.: ProCoS tutorial: Specifications to programs. In: Formal Methods Europe 1993 Tutorial Material, Odense, Denmark, April 1993, pp. 422–436 (1993)

    Google Scholar 

  18. Jifeng, H.: Provably Correct Systems: Modelling of Communication Languages and Design of Optimized Compilers. McGraw-Hill, New York (1995)

    MATH  Google Scholar 

  19. Coglio, A., Goldberg, A., Qian, Z.: Towards a provably-correct implementation of the JVM bytecode verifier. In: Proc. OOPSLA 1998 Workshop on Formal Underpinnings of Java (October 1998)

    Google Scholar 

  20. Klein, G., Nipkow, T.: Verified lightweight bytecode verification. Concurrency and Computation: Practice and Experience 13, 1133–1151 (2001)

    Article  MATH  Google Scholar 

  21. Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)

    MATH  Google Scholar 

  22. Morgan, C., Vickers, T.: Types and invariants in the refinement calculus. Science of Computer Programming 14, 281–304 (1990)

    Article  MATH  MathSciNet  Google Scholar 

  23. Lermer, K., Fidge, C.J.: A formal model of real-time program compilation. Theoretical Computer Science 282, 151–190 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  24. TC39 - programming and scripting languages, Web: http://www.ecma.ch/ecma1/memento/TC39-G3.htm (acc. November 1 2002)

  25. Gordon, A.D., Syme, D.: Typing a multi-language intermediate code. Tech. Rep. MSR-TR-2000-106, MicroSoft Corporation (2000)

    Google Scholar 

  26. Stepney, S.: High Integrity Compilation: A Case Study. Prentice-Hall, Englewood Cliffs (1993)

    MATH  Google Scholar 

  27. Morrisett, G., Crary, K., Walker, D., Glew, N.: Stack-based typed assembly language. Journal of Functional Programming (2002)

    Google Scholar 

  28. Börger, E., Schulte, W.: Defining the Java virtual machine as platform for provably correct Java compilation. In: Brim, L., Gruska, J., Zlatuška, J. (eds.) MFCS 1998. LNCS, vol. 1450, p. 17. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  29. Mannasse, M.S., Nelson, G.: Correct comilation of control structures. Tech. rep., AT&T Bell Laboratories (1984)

    Google Scholar 

  30. Spivey, J.M.: The Z Notation: A Reference Manual, 2nd edn. Prentice Hall International Series in Computer Science (1992)

    Google Scholar 

  31. Back, R.-J.R.: Refinement of parallel and reactive programs. Tech. Rep. Caltech-CS-TR-92-23, California Institute of Technology (1992)

    Google Scholar 

  32. Microsoft Corporation, Microsoft _ Language Specifications. Microsoft Press (2001)

    Google Scholar 

  33. Wildman, L.: A formal basis for a program compilation proof tool. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 491–510. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Watson, G. (2003). Compilation by Refinement for a Practical Assembly Language. In: Dong, J.S., Woodcock, J. (eds) Formal Methods and Software Engineering. ICFEM 2003. Lecture Notes in Computer Science, vol 2885. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39893-6_17

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-39893-6_17

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-20461-9

  • Online ISBN: 978-3-540-39893-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics