The SimpleScalar tool set, version 2.0
ACM SIGARCH Computer Architecture News
Efficient Simulation of Formal Processor Models
Formal Methods in System Design
ACM Transactions on Programming Languages and Systems (TOPLAS)
Java Virtual Machine Specification
Java Virtual Machine Specification
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Symbolic Simulation of the JEM1 Microprocessor
FMCAD '98 Proceedings of the Second International Conference on Formal Methods in Computer-Aided Design
A Commuting Diagram Relating Threaded and Non-threaded JVM Models
A Commuting Diagram Relating Threaded and Non-threaded JVM Models
An executable formal java virtual machine thread model
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
A transformational perspective into the core of an abstract class loader for the SSP
ACM Transactions on Embedded Computing Systems (TECS)
Efficient execution in an automated reasoning environment
Journal of Functional Programming
Verified Software: Theories, Tools, Experiments
Animating the formalised semantics of a Java-like language
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Verifying a compiler for java threads
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
A trustworthy monadic formalization of the ARMv7 instruction set architecture
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Making the java memory model safe
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
To study the properties of the Java Virtual Machine(JVM) and Java programs, our research group has produced a series of JVM models written in a functional subset of Common Lisp. In this paper, we present our most complete JVM model from this series, namely, M6, which is derived from a careful study of the J2ME KVM [16] implementation.On the one hand, our JVM model is a conventional machine emulator. M6 models accurately almost all aspects of the KVM implementation, including the dynamic class loading, class initialization and synchronization via monitors. It executes most J2ME Java programs that do not use any I/O or floating point operations. Engineers may consider M6 an implementation of the JVM. It is implemented with around 10K lines in 20+ modules.On the other hand, M6 is a novel model that allows for analytical reasoning besides conventional testing. M6 is written in an applicative (side-effect free) subset of Common Lisp, for which we have given precise meaning in terms of axioms and inference rules. A property of M6 can be expressed as a formula. Rules of interference can be used analytically to derive properties of M6 and the Java programs that run on the model, using a mechanical theorem prover.We argue that our approach of building an executable model of the system with an axiomatically described functional language can bring benefits from both the testing and the formal reasoning worlds.