Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | ИндексСпецификация Виртуальной машины JavaTM


A B C D F Г Я J L М. N P R S T W

getfield

Работа

Поле выборки от объекта

Формат

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.

Иначе, если разрешенное поле является a static поле, getfield бросает IncompatibleClassChangeError.

Исключение на этапе выполнения

Иначе, если objectref null, getfield инструкция бросает a NullPointerException.

Примечания

getfield инструкция не может привыкнуть к доступу length поле массива. arraylength инструкция используется вместо этого.


getstatic

Работа

Добраться 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.

Иначе, если разрешенное поле не является a static (класс) поле или интерфейсное поле, getstatic бросают IncompatibleClassChangeError.

Исключение на этапе выполнения

Иначе, если выполнение этой getstatic инструкции вызывает инициализацию класса, на который ссылаются, или интерфейс, getstatic может бросить Error как детализировано в Разделе 2.17.5.


goto

Работа

Переходите всегда

Формат

goto
branchbyte1
branchbyte2

Формы

goto = 167 (0xa7)

Стек операнда

Никакое изменение

Описание

Байты без знака branchbyte1 и branchbyte2 используются, чтобы создать 16-разрядный branchoffset со знаком, где branchoffset (branchbyte1 << 8) | branchbyte2. Выполнение продолжается при том смещении от адреса кода операции этой goto инструкции. Целевой адрес должен быть адресом кода операции инструкции в пределах метода, который содержит эту goto инструкцию.


goto_w

Работа

Переходите всегда (широкий индекс)

Формат

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

free hit counter