Implementado en hardware, una máquina basada en registro va a ser más eficiente simplemente porque hay menos accesos a la RAM más lenta. En el software, sin embargo, incluso una arquitectura basada en registros probablemente tendrá los "registros" en la RAM. Una máquina basada en pila será igual de eficiente en ese caso.
Además, una máquina virtual basada en pila hará que sea mucho más fácil escribir compiladores. No tiene que lidiar con estrategias de asignación de registro. Usted tiene, esencialmente, un número ilimitado de registros para trabajar.
Actualización: Escribí esta respuesta asumiendo una máquina virtual interpretada. Puede no ser cierto para una VM compilada JIT. Me encontré con this paper que parece indicar que una VM compilada JIT puede ser más eficiente usando una arquitectura de registro.
Puedo ver a qué te refieres, pero ¿cómo es eso diferente de una pila? Las pilas pueden hacerse demasiado pequeñas también. –
Al ver que las máquinas virtuales están implementadas en el software, el tamaño de tu pila es virtualmente ilimitado. Los registros son finitos. Puedo tener r1-r32. Podría crear r33 en el software, pero ¿qué otras clases necesitarían saber? –
Parrot tiene infinitamente muchos registros. ¿Estás seguro de que necesitas uno más que eso? –