Abstract
An anomaly of unexpected performance in an interpreter whose frequently accessed variables are manually assigned to hard registers by GCC source-code-level register allocation is presented. A hard-registered virtual program counter and stack pointer as well as a byte-code translation are experimented on both register-rich PowerPC and register-limited Intel x86. According to the study of the anomaly, a hard register should not be assigned singly to a variable in an interpreter due to higher register pressure.
- Using and Porting GNU CC - Defining Global Register Variables. Available at http://gcc.gnu.org/onlinedocs/gcc/Google Scholar
- Gforth. Available at http://www.gnu.org/software/gforth/Google Scholar
- Objective Caml. Available at http://caml.inria.fr/ocaml/Google Scholar
- Ren-Jie Lo, "A New Approach to Bytecode Translation for Accelerating Java Interpreters," Master thesis, Dept. Engineering Science, National ChengKung University, 2005.Google Scholar
- Fuh-Gwo Chen and Ting-Wei Hou, "Instruction-coated Translation: An Approach to Restructure Directly Threaded Interpreters with Low Cohesion," ACM SIGPLAN Notices, vol. 41, Aug. 2006. Google Scholar
Digital Library
- JamVM Web Pages. Available at http://jamvm.sourceforge.net/Google Scholar
- SPEC JVM98. Available at http://www.spec.org/osg/jvm98/Google Scholar
- PowerPC. Available at http://www.power.org/Google Scholar
- Intel Processors. Available at http://www.intel.com/Google Scholar
- James. R. Bell, "Threaded Code," in Communications of the ACM, vol. 16: ACM Press, 1973, pp. 370--372. Google Scholar
Digital Library
Index Terms
An anomaly in an interpreter using GCC source-code-level register allocation
Recommendations
Enhancing the performance of 16-bit code using augmenting instructions
Special Issue: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool support for embedded systems (San Diego, CA).In the embedded domain, memory usage and energy consumption are critical constraints. Dual width instruction set embedded processors such as the ARM provide a 16-bit instruction set in addition to the 32-bit instruction set to address these concerns. ...
Enhancing the performance of 16-bit code using augmenting instructions
LCTES '03: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systemsIn the embedded domain, memory usage and energy consumption are critical constraints. Dual width instruction set embedded processors such as the ARM provide a 16-bit instruction set in addition to the 32-bit instruction set to address these concerns. ...
RegCPython: A Register-based Python Interpreter for Better Performance
Interpreters are widely used in the implementation of many programming languages, such as Python, Perl, and Java. Even though various JIT compilers emerge in an endless stream, interpretation efficiency still plays a critical role in program performance. ...






Comments