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