Smalltalk-80: bits of history, words of advice
Smalltalk-80: bits of history, words of advice
Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Two-level hybrid interpreter/native code execution for combined space-time program efficiency
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
Interpretation and instruction path coprocessing
Interpretation and instruction path coprocessing
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
The APL IL Interpreter Generator
IBM Systems Journal
Optimizing an ANSI C interpreter with superoperators
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Stack caching for interpreters
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
A tractable Scheme implementation
Lisp and Symbolic Computation
VCODE: a retargetable, extensible, very fast dynamic code generation system
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
The structure and performance of interpreters
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
Optimizing direct threaded code by selective inlining
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A dynamically configurable, multi-language execution platform
Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications
A code compression system based on pipelined interpreters
Software—Practice & Experience
Communications of the ACM
Communications of the ACM
Java Virtual Machine Specification
Java Virtual Machine Specification
Optimising Bytecode Emulation for Prolog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Building an Interpreter with Vmgen
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Optimizing indirect branch prediction accuracy in virtual machine interpreters
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
The case for virtual register machines
Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators
An optimized Java interpreter for connected devices and embedded systems
Proceedings of the 2003 ACM symposium on Applied computing
A survey of optimisations for the Java Virtual Machine
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
Feedback driven instruction-set extension
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Retargeting JIT Compilers by using C-Compiler Generated Executable Code
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Context Threading: A Flexible and Efficient Dispatch Technique for Virtual Machine Interpreters
Proceedings of the international symposium on Code generation and optimization
Combining stack caching with dynamic superinstructions
Proceedings of the 2004 workshop on Interpreters, virtual machines and emulators
Code sharing among states for stack-caching interpreter
Proceedings of the 2004 workshop on Interpreters, virtual machines and emulators
Interpreting programs in static single assignment form
Proceedings of the 2004 workshop on Interpreters, virtual machines and emulators
High performance annotation-aware JVM for Java cards
Proceedings of the 5th ACM international conference on Embedded software
YARV: yet another RubyVM: innovating the ruby interpreter
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software—Practice & Experience
Mixed mode execution with context threading
CASCON '05 Proceedings of the 2005 conference of the Centre for Advanced Studies on Collaborative research
The case for virtual register machines
Science of Computer Programming - Special issue on advances in interpreters, virtual machines and emulators (IVME'03)
A virtual machine generator for heterogeneous smart spaces
VM'04 Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium - Volume 3
Optimizing indirect branch prediction accuracy in virtual machine interpreters
ACM Transactions on Programming Languages and Systems (TOPLAS)
Virtual machine showdown: Stack versus registers
ACM Transactions on Architecture and Code Optimization (TACO)
Analyzing the performance of code-copying virtual machines
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
TinyVM, an efficient virtual machine infrastructure for sensor networks
Proceedings of the 7th ACM Conference on Embedded Networked Sensor Systems
Dynamic interpretation for dynamic scripting languages
Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
Compiler-guaranteed safety in code-copying virtual machines
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Encoding the Java Virtual Machine's Instruction Set
Electronic Notes in Theoretical Computer Science (ENTCS)
Language-independent sandboxing of just-in-time compilation and self-modifying code
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
An embedded systems programming environment for c
Euro-Par'06 Proceedings of the 12th international conference on Parallel Processing
Tiger – an interpreter generation tool
CC'05 Proceedings of the 14th international conference on Compiler Construction
TinyVM: an energy-efficient execution infrastructure for sensor networks
Software—Practice & Experience
Hi-index | 0.00 |
In a virtual machine interpreter, the code for each virtual machine instruction has similarities to code for other instructions. We present an interpreter generator that takes simple virtual machine instruction descriptions as input and generates C code for processing the instructions in several ways: execution, virtual machine code generation, disassembly, tracing, and profiling. The generator is designed to support efficient interpreters: it supports threaded code, caching the top-of-stack item in a register, combining simple instructions into superinstructions, and other optimizations. We have used the generator to create interpreters for Forth and Java. The resulting interpreters are faster than other interpreters for the same languages and they are typically 2-10 times slower than code produced by native-code compilers. We also present results for the effects of the individual optimizations supported by the generator.