{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,30]],"date-time":"2026-01-30T02:20:02Z","timestamp":1769739602020,"version":"3.49.0"},"reference-count":42,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2008,1,1]],"date-time":"2008-01-01T00:00:00Z","timestamp":1199145600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2008,1]]},"abstract":"<jats:p>Virtual machines (VMs) enable the distribution of programs in an architecture-neutral format, which can easily be interpreted or compiled. A long-running question in the design of VMs is whether a stack architecture or register architecture can be implemented more efficiently with an interpreter. We extend existing work on comparing virtual stack and virtual register architectures in three ways. First, our translation from stack to register code and optimization are much more sophisticated. The result is that we eliminate an average of more than 46% of executed VM instructions, with the bytecode size of the register machine being only 26% larger than that of the corresponding stack one. Second, we present a fully functional virtual-register implementation of the Java virtual machine (JVM), which supports Intel, AMD64, PowerPC and Alpha processors. This register VM supports inline-threaded, direct-threaded, token-threaded, and switch dispatch. Third, we present experimental results on a range of additional optimizations such as register allocation and elimination of redundant heap loads. On the AMD64 architecture the register machine using switch dispatch achieves an average speedup of 1.48 over the corresponding stack machine. Even using the more efficient inline-threaded dispatch, the register VM achieves a speedup of 1.15 over the equivalent stack-based VM.<\/jats:p>","DOI":"10.1145\/1328195.1328197","type":"journal-article","created":{"date-parts":[[2008,2,8]],"date-time":"2008-02-08T15:32:16Z","timestamp":1202484736000},"page":"1-36","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":71,"title":["Virtual machine showdown"],"prefix":"10.1145","volume":"4","author":[{"given":"Yunhe","family":"Shi","sequence":"first","affiliation":[{"name":"Trinity College Dublin, Dublin 2, Ireland"}]},{"given":"Kevin","family":"Casey","sequence":"additional","affiliation":[{"name":"Trinity College Dublin, Dublin 2, Ireland"}]},{"given":"M. Anton","family":"Ertl","sequence":"additional","affiliation":[{"name":"Technische Universit\u00e4t Wien"}]},{"given":"David","family":"Gregg","sequence":"additional","affiliation":[{"name":"Trinity College Dublin, Dublin 2, Ireland"}]}],"member":"320","published-online":{"date-parts":[[2008,1,30]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/C-M.1975.218804"},{"key":"e_1_2_1_2_1","unstructured":"Antonioli D. N. and Pilz M. 1998. Analysis of the Java class file format. Tech. rep.   Antonioli D. N. and Pilz M. 1998. Analysis of the Java class file format. Tech. rep."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582432"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/362248.362270"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2005.14"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/177492.177575"},{"key":"e_1_2_1_7_1","volume-title":"Second Ineternational Conference and Exhibtion on the Practical Application of Java","author":"Bull M.","unstructured":"Bull , M. , Smith , L. , Westhead , M. , Henty , D. , and Davey , R . 2000. Benchmarking Java Grande applications . In Second Ineternational Conference and Exhibtion on the Practical Application of Java . Manchester, UK. Bull, M., Smith, L., Westhead, M., Henty, D., and Davey, R. 2000. Benchmarking Java Grande applications. In Second Ineternational Conference and Exhibtion on the Practical Application of Java. Manchester, UK."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/316158.316171"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/353926.353933"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/858570.858575"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277670"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/207110.207165"},{"key":"e_1_2_1_15_1","article-title":"The structure and performance of efficient interpreters","author":"Ertl M. A.","year":"2003","unstructured":"Ertl , M. A. and Gregg , D. 2003 . The structure and performance of efficient interpreters . The Journal of Instruction-Level Parallelism 5. http:\/\/www.jilp.org\/vol5\/. Ertl, M. A. and Gregg, D. 2003. The structure and performance of efficient interpreters. The Journal of Instruction-Level Parallelism 5. http:\/\/www.jilp.org\/vol5\/.","journal-title":"The Journal of Instruction-Level Parallelism 5. http:\/\/www.jilp.org\/vol5\/."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.434"},{"key":"e_1_2_1_17_1","first-page":"25","article-title":"Superinstructions and replication in the Cacao JVM interpreter","volume":"4","author":"Ertl M. A.","year":"2006","unstructured":"Ertl , M. A. , Thalinger , C. , and Krall , A. 2006 . Superinstructions and replication in the Cacao JVM interpreter . Journal of .NET Technologies 4 , 25 -- 32 . Journal papers from .NET Technologies 2006 conference. Ertl, M. A., Thalinger, C., and Krall, A. 2006. Superinstructions and replication in the Cacao JVM interpreter. Journal of .NET Technologies 4, 25--32. Journal papers from .NET Technologies 2006 conference.","journal-title":"Journal of .NET Technologies"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.5555\/647169.718147"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/202529.202541"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.08.005"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199606)26:6%3C635::AID-SPE26%3E3.0.CO;2-P"},{"key":"e_1_2_1_22_1","first-page":"1159","article-title":"The implementation of Lua 5.0","volume":"11","author":"Ierusalimschy R.","year":"2005","unstructured":"Ierusalimschy , R. , de Figueiredo , L. , and Celes , W. 2005 . The implementation of Lua 5.0 . Journal of Universal Computer Science 11 , 7, 1159 -- 1176 . http:\/\/www.jucs.org\/jucs_11_7\/the_implementation_of_lua. Ierusalimschy, R., de Figueiredo, L., and Celes, W. 2005. The implementation of Lua 5.0. Journal of Universal Computer Science 11, 7, 1159--1176. http:\/\/www.jucs.org\/jucs_11_7\/the_implementation_of_lua.","journal-title":"Journal of Universal Computer Science"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1018740018601"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380110908"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1096-9128(199711)9:11<1017::AID-CPE347>3.0.CO;2-0"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/357062.357071"},{"key":"e_1_2_1_27_1","volume-title":"Workshop: Simplicity, Performance and Portability in Virtual Machine Design.","author":"McGlashan B.","year":"1999","unstructured":"McGlashan , B. and Bower , A . 1999 . The interpreter is dead (slow). Isn't it&quest; In OOPSLA '99 Workshop: Simplicity, Performance and Portability in Virtual Machine Design. McGlashan, B. and Bower, A. 1999. The interpreter is dead (slow). Isn't it&quest; In OOPSLA'99 Workshop: Simplicity, Performance and Portability in Virtual Machine Design."},{"key":"e_1_2_1_29_1","volume-title":"Advanced compiler design and implementation. Morgan Kaufmann","author":"Muchnick S. S.","unstructured":"Muchnick , S. S. 1997. Advanced compiler design and implementation. Morgan Kaufmann , San Francisco, CA . Muchnick, S. S. 1997. Advanced compiler design and implementation. Morgan Kaufmann, San Francisco, CA."},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/859402.859403"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/641914.641917"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277743"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301676"},{"key":"e_1_2_1_34_1","volume-title":"Proceedings of the Sixth International Symposium on High-Performance Computer Architecture (8--12 Jan.)","author":"Radhakrishnan R.","unstructured":"Radhakrishnan , R. , Vijaykrishnan , N. , John , L. K. , and Sivasubramaniam , A . 2000. Architectural issues in Java runtime systems . In Proceedings of the Sixth International Symposium on High-Performance Computer Architecture (8--12 Jan.) . Toulouse, France. 387--398. Radhakrishnan, R., Vijaykrishnan, N., John, L. K., and Sivasubramaniam, A. 2000. Architectural issues in Java runtime systems. In Proceedings of the Sixth International Symposium on High-Performance Computer Architecture (8--12 Jan.). Toulouse, France. 387--398."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/859412.859416"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1065001"},{"key":"e_1_2_1_38_1","volume-title":"SPEC releases SPEC JVM98, first industry-standard benchmark for measuring Java virtual machine performance","unstructured":"SPEC. 1998. SPEC releases SPEC JVM98, first industry-standard benchmark for measuring Java virtual machine performance . Press Release . http:\/\/www.spec.org\/jvm98\/press.html. SPEC. 1998. SPEC releases SPEC JVM98, first industry-standard benchmark for measuring Java virtual machine performance. Press Release. http:\/\/www.spec.org\/jvm98\/press.html."},{"key":"e_1_2_1_39_1","volume-title":"Yet Another Perl Conference (YAPC 02)","author":"Sugalski D.","year":"2002","unstructured":"Sugalski , D. 2002 . Parrot in detail . In Yet Another Perl Conference (YAPC 02) . Saint Louis, Missouri. http:\/\/www.parrotcode.org\/talks\/ParrotInDetail2.pdf. Sugalski, D. 2002. Parrot in detail. In Yet Another Perl Conference (YAPC 02). Saint Louis, Missouri. http:\/\/www.parrotcode.org\/talks\/ParrotInDetail2.pdf."},{"key":"e_1_2_1_40_1","volume-title":"The Java Hotspot virtual machine. Tech. rep","author":"Sun-Microsystems","unstructured":"Sun-Microsystems . 2001. The Java Hotspot virtual machine. Tech. rep ., Sun Microsystems Inc . Sun-Microsystems. 2001. The Java Hotspot virtual machine. Tech. rep., Sun Microsystems Inc."},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/586088.586090"},{"key":"e_1_2_1_42_1","volume-title":"Proceedings of CASCON","author":"Vall\u00e9e-Rai R.","year":"1999","unstructured":"Vall\u00e9e-Rai , R. , Hendren , L. , Sundaresan , V. , Lam , P. , Gagnon , E. , and Co , P . 1999. Soot---a Java optimization framework . In Proceedings of CASCON 1999 . 125--135. Vall\u00e9e-Rai, R., Hendren, L., Sundaresan, V., Lam, P., Gagnon, E., and Co, P. 1999. Soot---a Java optimization framework. In Proceedings of CASCON 1999. 125--135."},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1059579.1059591"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/800050.801841"},{"key":"e_1_2_1_45_1","volume-title":"IEEE Compcon 97 Proceedings","author":"Winterbottom P.","unstructured":"Winterbottom , P. and Pike , R . 1997. The design of the Inferno virtual machine . In IEEE Compcon 97 Proceedings . San Jose, California. 241--244. Winterbottom, P. and Pike, R. 1997. The design of the Inferno virtual machine. In IEEE Compcon 97 Proceedings. San Jose, California. 241--244."}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1328195.1328197","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1328195.1328197","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:56:21Z","timestamp":1750254981000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1328195.1328197"}},"subtitle":["Stack versus registers"],"short-title":[],"issued":{"date-parts":[[2008,1]]},"references-count":42,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2008,1]]}},"alternative-id":["10.1145\/1328195.1328197"],"URL":"https:\/\/doi.org\/10.1145\/1328195.1328197","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2008,1]]},"assertion":[{"value":"2006-08-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-04-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-01-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}