Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
Работа
Поле выборки от объекта
Формат
getfield indexbyte1 indexbyte2
Формы
getfield = 180 (0xb4)
Стек операнда
..., objectref..., значение
Описание
objectref, который должен иметь тип reference
, выталкивается от стека операнда. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по тому индексу должен быть символьной ссылкой на поле (§5.1), который дает имя и дескриптор поля так же как символьной ссылки на класс, в котором должно быть найдено поле. Поле, на которое ссылаются, разрешается (§5.4.3.2). Значение поля, на которое ссылаются, в objectref выбирается и продвигается на стек операнда.
Класс objectref не должен быть массивом. Если поле protected
(§4.6), и это - или элемент текущего класса или элемент суперкласса текущего класса, тогда класс objectref должен быть или текущим классом или подклассом текущего класса.
Соединение Исключений
Во время разрешения символьной ссылки на поле может быть брошена любая из ошибок, имея отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.
Иначе, если разрешенное поле является astatic
поле, getfield бросаетIncompatibleClassChangeError
.
Исключение на этапе выполнения
Иначе, если objectrefnull
, getfield инструкция бросает aNullPointerException
.
Примечания
getfield инструкция не может привыкнуть к доступу length
поле массива. arraylength инструкция используется вместо этого.
Работа
Добратьсяstatic
поле от класса
Формат
getstatic indexbyte1 indexbyte2
Формы
getstatic = 178 (0xb2)
Стек операнда
......, значение
Описание
indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по тому индексу должен быть символьной ссылкой на поле (§5.1), который дает имя и дескриптор поля так же как символьной ссылки на класс или интерфейс, в котором должно быть найдено поле. Поле, на которое ссылаются, разрешается (§5.4.3.2).
На успешном разрешении поля класса или интерфейса, который объявил, разрешенное поле инициализируется (§5.5), если тот класс или интерфейс не были уже инициализированы.
Значение класса или интерфейсного поля выбирается и продвигается на стек операнда.
Соединение Исключений
Во время разрешения символьной ссылки на класс или интерфейсное поле, может быть выдано любое из исключений, имеющих отношение к полевому разрешению, задокументированному в Раздел 5.4.3.2.
Иначе, если разрешенное поле не является astatic
(класс) поле или интерфейсное поле, getstatic бросаютIncompatibleClassChangeError
.
Исключение на этапе выполнения
Иначе, если выполнение этой getstatic инструкции вызывает инициализацию класса, на который ссылаются, или интерфейс, getstatic может бросить Error
как детализировано в Разделе 2.17.5.
Работа
Переходите всегда
Формат
goto branchbyte1 branchbyte2
Формы
goto = 167 (0xa7)
Стек операнда
Никакое изменение
Описание
Байты без знака branchbyte1 и branchbyte2 используются, чтобы создать 16-разрядный branchoffset со знаком, где branchoffset (branchbyte1 << 8) | branchbyte2. Выполнение продолжается при том смещении от адреса кода операции этой goto инструкции. Целевой адрес должен быть адресом кода операции инструкции в пределах метода, который содержит эту goto инструкцию.
Работа
Переходите всегда (широкий индекс)
Формат
goto_w branchbyte1 branchbyte2 branchbyte3 branchbyte4
Формы
goto_w = 200 (0xc8)
Стек операнда
Никакое изменение
Описание
Байты без знака branchbyte1, branchbyte2, branchbyte3, и branchbyte4 используются, чтобы создать 32-разрядный branchoffset со знаком, где branchoffset (branchbyte1 << 24) | (branchbyte2 << 16) | (branchbyte3 << 8) | branchbyte4. Выполнение продолжается при том смещении от адреса кода операции этой goto_w инструкции. Целевой адрес должен быть адресом кода операции инструкции в пределах метода, который содержит эту goto_w инструкцию.
Примечания
Хотя goto_w инструкция берет 4-байтовое смещение ответвления, другие факторы ограничивают размер метода к 65535 байтам (§4.10). Этот предел может быть повышен в будущем выпуске виртуальной машины Java.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com