Мне любопытно, почему Sun решила сделать JVM на основе стека, и Google решил сделать DalvikVM на основе регистра?
Я полагаю, что JVM не может предположить, что определенное количество регистров доступно на целевой платформе, поскольку оно должно быть независимым от платформы. Поэтому он просто откладывает распределение регистров и т.д. Компилятору JIT. (Исправьте меня, если я ошибаюсь.)
Итак, ребята из Android подумали: "Эй, это неэффективно, отпустите для регистрации на основе vm сразу..."? Но подождите, есть несколько разных устройств для Android, какое количество регистров делало цель Dalvik? Являются ли кодеки Dalvik жестко закодированы для определенного количества регистров?
У всех текущих Android-устройств на рынке примерно одинаковое количество регистров? Или, есть ли перераспределение реестра, выполняемое во время загрузки dex? Как все это сочетается?