Мені цікаво, чому Sun вирішив зробити JVM на основі стека, і Google вирішив створити реєстр DalvikVM?
Я припускаю, що JVM насправді не може припустити, що певна кількість регістрів доступна на цільовій платформі, оскільки вона повинна бути незалежною від платформи. З цього приводу він просто відкладає розподіл регістра тощо для компілятора JIT. (Виправте мене, якщо я помиляюся.)
Тож хлопці з Android подумали: "Ей, це неефективно. Давайте відразу ж перейдемо до реєстру, заснованого на vm ..."? Але зачекайте, існує кілька різних пристроїв для Android, на яку кількість реєстрів націлив Дальвік? Чи жорстко кодуються коди Дальвіка для певної кількості регістрів?
Чи мають усі поточні Android-пристрої на ринку приблизно однакову кількість реєстрів? Або є перерозподіл реєстру, який виконується під час завантаження dex? Як все це поєднується?