А теперь мы можем рассмотреть архитектуру IJVM. Она состоит из памяти, которую можно рассматривать либо как массив из 4 294 967 296 байт (4 Гбайт), либо как массив из 1 073 741 824 слов, каждое из которых содержит 4 байта. В отличие от большинства архитектур команд, виртуальная машина Java не выполняет обращений к памяти, видимых на уровне команд, но имеет несколько неявных адресов, которые составляют основу указателя. IJVM-команды могут обращаться к памяти только через эти указатели. Определены следующие области памяти:
? Набор констант. Эта область, недоступная для записи из IJVM-програм-мы, состоит из констант, строк и указателей на другие области памяти, на которые можно делать ссылку. Данная область загружается в момент загрузки программы в память и после этого не меняется. Имеется скрытый регистр СРР (Constant Pool Pointer — указатель набора констант), который содержит адрес первого слова набора констант.
? Фрейм локальных переменных. Эта область предназначена для хранения переменных во время выполнения процедуры. Она, как уже отмечалось, называется фреймом локальных переменных. В начале этого фрейма располагаются параметры (или аргументы) вызванной процедуры. Фрейм локальных переменных не включает в себя стек операндов. Он помещается отдельно. Исходя из соображений производительности, мы поместили стек операндов прямо над фреймом локальных переменных. Существует скрытый регистр, который содержит адрес первой переменной фрейма. Мы назовем этот регистр LV (Local Variable — локальная переменная). Параметры вызванной процедуры хранятся в начале фрейма локальных переменных.
Читать дальше »