Почему JVM является виртуальной машиной на основе стека? - PullRequest
2 голосов
/ 23 августа 2011

Почему JVM является виртуальной машиной на основе стека?Что именно это означает и каковы преимущества перед виртуальными машинами на основе регистров?Существуют ли другие важные варианты проектирования / реализации для разработчиков виртуальных машин?

1 Ответ

4 голосов
/ 23 августа 2011

Виртуальная машина на основе стека очень проста как в плане концепции, так и в реализации. Каждый, кто имеет опыт работы с CS, может реализовать простую полнофункциональную виртуальную машину в несколько сотен строк кода.

Вы можете думать о стеке как о произвольном большом количестве регистров, если возникнет такая необходимость. Добавление регистров с самого начала было бы преждевременной оптимизацией.

Простая концепция упрощает создание настоящей магии, например, Hotspot поверх модели. Это не просто, но вы можете выбрать уровень сложности на основе ваших способностей от простого переводчика до простого JIT для Hotspot.

...