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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ould, M.A.: Software development under Def Stan 00-55: A guide. Information and Software Technology 32, 170–175 (1990)
Bowen, J. (ed.): Towards Verified Systems. Real-Time Safety Critical Systems, vol. 2. Elsevier, Amsterdam (1994)
Back, R.-J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Springer, Heidelberg (1998)
Morgan, C.: Programming from Specifications, 2nd edn. Prentice-Hall, Englewood Cliffs (1994)
Sampaio, A.: An Algebraic Approach to Compiler Design. AMAST Series in Computing, vol. 4. World Scientific, Singapore (1997)
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/
Müller-Olm, M.: Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction. LNCS, vol. 1283. Springer, Heidelberg (1997)
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)
ECMA standardization - original submission, Web: http://msdn.microsoft.com/net/ecma/OctoberSubmission.asp (accessed November 1, 2002)
Lam, H., Thai, T.: .NET Framework Essentials. O’Reilly & Associates, Sebastopol (2001)
Platt, D.S.: Introducing Microsoft .NET. Microsoft Press (2001)
Jones, C.B.: Systematic Software Development Using VDM, 2nd edn. Prentice-Hall International Series in Computer Science. Prentice-Hall International, Englewood Cliffs (1989)
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)
Hoare, C.A.R., Jifeng, H.: Refinement algebra proves correctness of a compiler. Lecture Notes of International Summer School at Marktoberdorf. Springer, Heidelberg (1990)
Börger, E., Durdanović, I.: Correctness of compiling Occam to transputer code. The Computer Journal 39, 52–92 (1996)
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)
Olderog, E.-R.: ProCoS tutorial: Specifications to programs. In: Formal Methods Europe 1993 Tutorial Material, Odense, Denmark, April 1993, pp. 422–436 (1993)
Jifeng, H.: Provably Correct Systems: Modelling of Communication Languages and Design of Optimized Compilers. McGraw-Hill, New York (1995)
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)
Klein, G., Nipkow, T.: Verified lightweight bytecode verification. Concurrency and Computation: Practice and Experience 13, 1133–1151 (2001)
Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)
Morgan, C., Vickers, T.: Types and invariants in the refinement calculus. Science of Computer Programming 14, 281–304 (1990)
Lermer, K., Fidge, C.J.: A formal model of real-time program compilation. Theoretical Computer Science 282, 151–190 (2002)
TC39 - programming and scripting languages, Web: http://www.ecma.ch/ecma1/memento/TC39-G3.htm (acc. November 1 2002)
Gordon, A.D., Syme, D.: Typing a multi-language intermediate code. Tech. Rep. MSR-TR-2000-106, MicroSoft Corporation (2000)
Stepney, S.: High Integrity Compilation: A Case Study. Prentice-Hall, Englewood Cliffs (1993)
Morrisett, G., Crary, K., Walker, D., Glew, N.: Stack-based typed assembly language. Journal of Functional Programming (2002)
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)
Mannasse, M.S., Nelson, G.: Correct comilation of control structures. Tech. rep., AT&T Bell Laboratories (1984)
Spivey, J.M.: The Z Notation: A Reference Manual, 2nd edn. Prentice Hall International Series in Computer Science (1992)
Back, R.-J.R.: Refinement of parallel and reactive programs. Tech. Rep. Caltech-CS-TR-92-23, California Institute of Technology (1992)
Microsoft Corporation, Microsoft _ Language Specifications. Microsoft Press (2001)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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