Using EventB to Create a Virtual Machine Instruction Set Architecture

  • Stephen Wright
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5238)


A Virtual Machine (VM) is a program running on a conventional microprocessor that emulates the binary instruction set, registers, and memory space of an idealized computing machine, a well-known example being the Java Virtual Machine (JVM). Despite there being many binary Instruction Set Architectures (ISA) in existence, all share a set of core properties which have been tailored to their particular applications. An abstract model may capture these generic properties and be subsequently refined to a particular machine, providing a reusable template for development of formally proven ISAs: this is a task to which the EventB [16,18] notation is well suited. This paper describes a project to use the RODIN tool-set [24] to perform such a process, ultimately producing the MIDAS (Microprocessor Instruction and Data Abstraction System) VM, capable of running binary executables compiled from high-level languages such as C [9]. The abstract model is incrementally refined to a model capable of automatic translation to C source code, and compilation for a hardware platform using a standard compiler. A second C compiler, targeted to the VM itself, allows C programs to be executed on it.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    AMD Inc. 28-Bit SSE5 Instruction Set (2007) Google Scholar
  2. 2.
    Audsely, N.: Portable Code in Future Avionic Systems, IEE Colloquium on Real-Time Systems (Digest No. 1998/306) (1998)Google Scholar
  3. 3.
    Beer, I., Ben-David, S.: RuleBase: Model checking at IBM. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254. Springer, Heidelberg (1997)Google Scholar
  4. 4.
    Butler, M.: RODIN Deliverable D16 Prototype Plug-in Tools (2006),
  5. 5.
    Caset, L.: Formal Development of an Embedded Verifier for Java Card Byte Code. In: International Conference on Dependable Systems and Networks (2002)Google Scholar
  6. 6.
    Evans, N., Butler, M.: A Proposal for Records in Event-B Formal Methods 2006 (2006)Google Scholar
  7. 7.
    Hennessy, J., Patterson, D.: Computer Architecture, A Quantitive Approach. Morgan Kaufmann, San Francisco (2003)Google Scholar
  8. 8.
    Hitachi Ltd. SH7707 Hardware Manual (1998)Google Scholar
  9. 9.
    Kernighan, B., Ritchie, D.: The C Programming Language. Prentice Hall, Englewood Cliffs (1988)Google Scholar
  10. 10.
    Lapsley, P., Bier, J., Shoham, A., Lee, E.: DSP Processor Fundamentals. IEEE Press, Los Alamitos (1997)MATHGoogle Scholar
  11. 11.
    Lee, E.: Programmable DSP Processors part I and II. IEEE ASSP Mag. (October 1988–January 1989)Google Scholar
  12. 12.
    Leuschel, M., Butler, M.: ProB: A Model Checker for B. In: FME 2003, SpringerLink (2003)Google Scholar
  13. 13.
    Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn (1999)Google Scholar
  14. 14.
    Lowry, H., Mitchell, B.: Mission computer replacement prototype for Special Operations Forces aircraft an application of commercial technology to avionics. In: Proceedings of The 19th Digital Avionics Systems Conference (2000)Google Scholar
  15. 15.
    Luke, J., Haldeman, D.: Replacement Strategy for Aging Avionics Computers. IEEE Aerospace and Electronic Systems Magazine 14(3) (1999)Google Scholar
  16. 16.
    Metayer, C., Abrial, J.-R., Voisin, L.: RODIN Deliverable 3.2 Event-B Language (2005),
  17. 17.
    Moore, J.: A Grand Challenge Proposal for Formal Methods A Verified Stack. In: Formal Methods at the Crossroads From Panacea to Foundational Support, SpringerLink (2003)Google Scholar
  18. 18.
    Schneider, S.: The B-Method An Introduction. Palgrave (2001)Google Scholar
  19. 19.
    Shavor, S., D’Anjou, J., Fairbrother, S.: The Java Developer’s Guide to Eclipse. Addison-Wesley, Reading (2003)Google Scholar
  20. 20.
    Sherridan, F.: Practical Testing of a C99 Compiler Using Output Comparison. Software: Practical and Experience 37(14) (2007)Google Scholar
  21. 21.
    Stallman, R.: Using and Porting the GNU Compiler Collection, Free Software Foundation (2001)Google Scholar
  22. 22.
    Stark, R., Schmid, J., Borger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)Google Scholar
  23. 23.
    Utting, M., Legeard, B.: Practical Model-Based Testing – A Tools Approach. Morgan Kaufmann, San Francisco (2007)Google Scholar
  24. 24.
    Voisin, L.: A Description of the RODIN Prototype (2006),
  25. 25.
    Wright, S.: MIDAS Design Document CSTR-06-014, Bristol University (2008),
  26. 26.

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Stephen Wright
    • 1
  1. 1.Department of Computer ScienceUniversity of BristolUK

Personalised recommendations