Estou curioso, por que a Sun decidiu fazer o JVM baseado em pilha e o Google decidiu fazer o DalvikVM baseado em registro?
Suponho que a JVM não pode realmente assumir que um certo número de registros estão disponíveis na plataforma de destino, uma vez que é suposto ser independente da plataforma. Portanto, ele apenas adia a alocação de registro, etc., para o compilador JIT. (Corrija-me se eu estiver errado.)
Então os caras do Android pensaram, "ei, isso é ineficiente, vamos começar a usar uma VM baseada em registro imediatamente ..."? Mas espere, existem vários dispositivos Android diferentes, que número de registros o Dalvik tinha como alvo? Os opcodes Dalvik são codificados para um determinado número de registros?
Todos os dispositivos Android atuais no mercado têm aproximadamente o mesmo número de registros? Ou, há uma realocação de registro realizada durante o carregamento dex? Como tudo isso se encaixa?