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