Smalltalk-80: bits of history, words of advice
Smalltalk-80: bits of history, words of advice
Two-level hybrid interpreter/native code execution for combined space-time program efficiency
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
An architecture for the direct execution of the Forth programming language
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Optimal code generation for expression trees: an application BURS theory
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Computer architecture: a quantitative approach
Computer architecture: a quantitative approach
Interpretation and instruction path coprocessing
Interpretation and instruction path coprocessing
High-speed top-of-stack scheme for VLSI processor: a management algorithm and its analysis
ISCA '85 Proceedings of the 12th annual international symposium on Computer architecture
Communications of the ACM
Register allocation for free: The C machine stack cache
ASPLOS I Proceedings of the first international symposium on Architectural support for programming languages and operating systems
Bytecode fetch optimization for a Java interpreter
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
Optimization strategies of stack control
PPPJ '02/IRE '02 Proceedings of the inaugural conference on the Principles and Practice of programming, 2002 and Proceedings of the second workshop on Intermediate representation engineering for virtual machines, 2002
Implementing an Efficient Java Interpreter
HPCN Europe 2001 Proceedings of the 9th International Conference on High-Performance Computing and Networking
The Behavior of Efficient Virtual Machine Interpreters on Modern Architectures
Euro-Par '01 Proceedings of the 7th International Euro-Par Conference Manchester on Parallel Processing
Pipelined Java Virtual Machine Interpreters
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Instruction merging and specialization in the SICStus Prolog virtual machine
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Vmgen: a generator of efficient virtual machine interpreters
Software—Practice & Experience
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
Study of a Non-Markovian Stack Management Model in a Two-Level Memory
Programming and Computing Software
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
Virtual machine showdown: stack versus registers
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
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
The case for virtual register machines
Science of Computer Programming - Special issue on advances in interpreters, virtual machines and emulators (IVME'03)
Transient variable caching in Java’s stack-based intermediate representation
Scientific Programming
YETI: a graduallY extensible trace interpreter
Proceedings of the 3rd international conference on Virtual execution environments
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)
Optimization strategies for a java virtual machine interpreter on the cell broadband engine
Proceedings of the 5th conference on Computing frontiers
Dynamic interpretation for dynamic scripting languages
Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
Efficient interpretation using quickening
Proceedings of the 6th symposium on Dynamic languages
Distributed application tamper detection via continuous software updates
Proceedings of the 28th Annual Computer Security Applications Conference
Hi-index | 0.00 |
An interpreter can spend a significant part of its execution time on accessing arguments of virtual machine instructions. This paper explores two methods to reduce this overhead for virtual stack machines by caching top-of-stack values in (real machine) registers. The dynamic method is based on having, for every possible state of the cache, one specialized version of the whole interpreter; the execution of an instruction usually changes the state of the cache and the next instruction is executed in the version corresponding to the new state. In the static method a state machine that keeps track of the cache state is added to the compiler. Common instructions exist in specialized versions for several states, but it is not necessary to have a version of every instruction for every cache state. Stack manipulation instructions are optimized away.