Using EventB to Create a Virtual Machine Instruction Set Architecture

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.

[1]  Edward A. Lee,et al.  DSP Processor Fundamentals , 1997 .

[2]  J. S. Moore,et al.  A Grand Challenge Proposal for Formal Methods: A Verified Stack , 2002, 10th Anniversary Colloquium of UNU/IIST.

[3]  Lilian Burdy,et al.  Formal development of an embedded verifier for Java Card byte code , 2002, Proceedings International Conference on Dependable Systems and Networks.

[4]  Steve Schneider The B-method - an introduction , 2001, The cornerstones of computing series.

[5]  J. Luke,et al.  Replacement strategy for aging avionics computers , 1999 .

[6]  Allan S. Wake,et al.  Portable code in future avionic systems , 1998 .

[7]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[8]  Ilan Beer,et al.  RuleBase: Model Checking at IBM , 1997, CAV.

[9]  E.A. Lee Programmable DSP architectures. II , 1989, IEEE ASSP Magazine.

[10]  Prof. Dr. Robert F. Stärk,et al.  Java and the Java Virtual Machine , 2001, Springer Berlin Heidelberg.

[11]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[12]  Sherry Shavor,et al.  The Java Developer's Guide to Eclipse , 2003 .

[13]  Bernhard K. Aichernig,et al.  Formal Methods at the Crossroads. From Panacea to Foundational Support , 2003, Lecture Notes in Computer Science.

[14]  Flash Sheridan Practical testing of a C99 compiler using output comparison , 2007 .

[15]  B. Mitchell,et al.  Mission computer replacement prototype for Special Operations Forces aircraft: an application of commercial technology to avionics , 2000, 19th DASC. 19th Digital Avionics Systems Conference. Proceedings (Cat. No.00CH37126).

[16]  Egon Börger,et al.  Java and the Java Virtual Machine: Definition, Verification, Validation , 2001 .

[17]  Flash Sheridan,et al.  Practical testing of a C99 compiler using output comparison , 2007, Softw. Pract. Exp..

[18]  Richard M. Stallman,et al.  Using and Porting the GNU Compiler Collection , 2000 .

[19]  Michael J. Butler,et al.  ProB: A Model Checker for B , 2003, FME.

[20]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[21]  Neil Evans,et al.  A Proposal for Records in Event-B , 2006, FM.