битные (двойная точность) значения. Предусмотрена возможность
использования пары регистров для поддержания 128-битных значений.
Архитектура UltraSPARC II – это архитектура загрузки/хранения. Это
значит, что единственные операции, которые обращаются в память – это
операции записи и чтения, служащие для передачи данных между
регистрами и памятью. Все операнды для команд арифметических действий
должны браться из регистров или предоставляться самой командой, а все
результаты должны сохраняться в регистрах.
Общий обзор виртуальной машины Java
Уровень команд машины Java необычен, но достаточно прост.
Память содержит 4 основные области: фрейм локальных переменных,
стек операндов, область процедур и набор констант.
Фрейм локальных переменных – эта область предназначена для хранения
переменных во время выполнения процедур. В начале этого фрейма
располагаются параметры (или аргументы) вызванной процедуры. Фрейм
локальных переменных не включает в себя стек операндов. Он помещается
отдельно. Существует неявный регистр, который содержит адрес первой
переменной фрейма – LV (Local Variable).
Стек операндов – не должен превышать определенный размер, который
заранее вычисляется компилятором Java. Пространство стека операндов
располагается прямо над фреймом локальных переменных. Существует
виртуальный регистр, который содержит адрес верхнего слова стека.
Содержимое этого регистра меняется во время выполнения процедуры,
поскольку операнды помещаются в стек и выталкиваются из него (Регистр
SP).
Область процедур – область памяти, в которой содержится программа.
Существует виртуальный регистр, содержащий адрес команды, которая
будет вызвана следующей. Этот указатель называется счетчиком команд PC
(Program Counter).Область процедур представляет собой массив байтов.
Набор констант – эта область памяти состоит из констант, цепочек и
указателей на другие области памяти, на которые можно сделать ссылку. Эта
область загружается в тот момент, когда программа загружается из памяти и
после этого не меняется. Существует неявный регистр CPP (Constant Pool
Pointer – указатель набора констант), который содержит адрес первого слова
набора констант.
Доступ в память осуществляется только по смещению от одного из этих
регистров. Ни одна из областей памяти не может быть очень большой.
Области памяти процедур, локальных переменных и констант не превышает
64 Кбайт. Это определяется тем, что смещения для индексирования
ограничивается 16 битами.
В машине нет регистров общего назначения, которые могут загружаться
или сохраняться под управлением программы. Это машина со стековой
организацией.
63