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


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

aaload

Работа

Загрузка reference от массива

Формат

aaload

Формы

aaload = 50 (0x32)

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

..., arrayref, индекс..., значение

Описание

arrayref должен иметь тип reference и должен обратиться к массиву, компоненты которого имеют тип reference. Индекс должен иметь тип int. И arrayref и индекс выталкиваются от стека операнда. reference значение в компоненте массива по индексу получается и продвигается на стек операнда.

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

Если arrayref null, aaload бросает a NullPointerException.

Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, aaload инструкция бросает ArrayIndexOutOfBoundsException.


aastore

Работа

Хранилище в reference массив

Формат

aastore

Формы

aastore = 83 (0x53)

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

..., arrayref, индекс, оценивают...

Описание

arrayref должен иметь тип reference и должен обратиться к массиву, компоненты которого имеют тип reference. Индекс должен иметь тип int и значение должно иметь тип reference. arrayref, индекс, и значение выталкиваются от стека операнда. reference значение сохранено как компонент массива по индексу.

Тип имеющий значение должен быть присвоением, совместимым (§2.6.7) с типом компонентов массива, на который ссылается arrayref. Присвоение значения ссылочного типа S (источник) к переменной ссылочного типа T (цель) позволяется только, когда тип S поддерживает все операции, определенные на типе T. Подробные правила следуют:

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

Если arrayref null, aastore бросает a NullPointerException.

Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, aastore инструкция бросает ArrayIndexOutOfBoundsException.

Иначе, если arrayref не null и фактический тип имеющий значение не является присвоением, совместимым (§2.6.7) с фактическим типом компонентов массива, aastore бросает ArrayStoreException.


aconst_null

Работа

Продвинуть null

Формат

aconst_null

Формы

aconst_null = 1 (0x1)

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

......, нуль

Описание

Продвиньте null объект reference на стек операнда.

Примечания

Виртуальная машина Java не передает под мандат конкретное значение для null.


aload

Работа

Загрузка reference от локальной переменной

Формат

aload
индекс

Формы

aload = 25 (0x19)

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

......, objectref

Описание

Индекс является байтом без знака, который должен быть индексом в массив локальной переменной текущего фрейма (§3.6). Локальная переменная по индексу должна содержать a reference. objectref в локальной переменной по индексу продвигается на стек операнда.

Примечания

aload инструкция не может использоваться, чтобы загрузить значение типа returnAddress от локальной переменной на стек операнда. Эта асимметрия с astore инструкцией является намеренной.

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


aload _ <n>

Работа

Загрузка reference от локальной переменной

Формат

aload _ <n>

Формы

aload_0 = 42 (0x2a) aload_1 = 43 (0x2b) aload_2 = 44 (0x2c) aload_3 = 45 (0x2d)

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

......, objectref

Описание

<n> должен быть индекс в массив локальной переменной текущего фрейма (§3.6). Локальная переменная в <n> должна содержать a reference. objectref в локальной переменной по индексу продвигается на стек операнда.

Примечания

aload _ <n> инструкция не может использоваться, чтобы загрузить значение типа returnAddress от локальной переменной на стек операнда. Эта асимметрия с соответствующим astore _ <n> инструкция является намеренной. Каждый из aload _ <n> инструкции является тем же самым как aload с индексом <n>, за исключением того, что операнд <n> неявен.


anewarray

Работа

Создайте новый массив reference

Формат

anewarray
indexbyte1
indexbyte2

Формы

anewarray = 189 (0xbd)

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

..., количество..., arrayref

Описание

Количество должно иметь тип int. Это выталкивается от стека операнда. Количество представляет число компонентов массива, чтобы быть созданным. indexbyte1 без знака и indexbyte2 используются, чтобы создать индекс в пул константы этапа выполнения текущего класса (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Элемент пула константы этапа выполнения по тому индексу должен быть символьной ссылкой на класс, массив, или интерфейсный тип. Именованный класс, массив, или интерфейсный тип разрешаются (§5.4.3.1). Новый массив с компонентами того типа, количества длины, выделяется от собранной "мусор" "кучи", и a reference arrayref к этому новому объекту массива продвигается на стек операнда. Все компоненты нового массива инициализируются к null, значение по умолчанию для reference типы (§2.5.1).

Соединение Исключений

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

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

Иначе, если количество является меньше чем нуль, anewarray инструкция бросает a NegativeArraySizeException.

Примечания

anewarray инструкция используется, чтобы создать единственную размерность массива ссылок на объект или части многомерного массива.


areturn

Работа

Возвратиться reference от метода

Формат

areturn

Формы

areturn = 176 (0xb0)

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

..., objectref [пустой]

Описание

objectref должен иметь тип reference и должен обратиться к объекту типа, который является присвоением, совместимым (§2.6.7) с типом, представленным дескриптором возврата (§4.3.3) текущего метода. Если текущий метод является a synchronized метод, монитор, полученный или повторно введенный на вызове метода, выпускается или выходится (соответственно) как будто выполнением monitorexit инструкции. Если никакое исключение не выдается, objectref выталкивается от стека операнда текущего фрейма (§3.6) и продвигается на стек операнда фрейма invoker. Любые другие значения на стеке операнда текущего метода отбрасываются.

Интерпретатор тогда восстанавливает фрейм invoker и возвращает управление invoker.

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

Если текущий метод является a synchronized метод и текущий поток не являются владельцем монитора, полученного или повторно введенного на вызове метода, areturn бросает IllegalMonitorStateException. Это может произойти, например, если a synchronized метод содержит monitorexit инструкцию, но никакую monitorenter инструкцию, на объекте, на котором синхронизируется метод.

Иначе, если реализация виртуальной машины осуществляет правила о структурированном использовании блокировок, описанных в §8.13 и если первое из тех правил нарушается во время вызова текущего метода, то areturn бросает IllegalMonitorStateException.


arraylength

Работа

Получите длину массива

Формат

arraylength

Формы

arraylength = 190 (0xbe)

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

..., arrayref..., длина

Описание

arrayref должен иметь тип reference и должен обратиться к массиву. Это выталкивается от стека операнда. Длина массива, на который это ссылается, определяется. Та длина продвигается на стек операнда как int.

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

Если arrayref null, arraylength инструкция бросает a NullPointerException.


astore

Работа

Хранилище reference в локальную переменную

Формат

astore
индекс

Формы

astore = 58 (0x3a)

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

..., objectref...

Описание

Индекс является байтом без знака, который должен быть индексом в массив локальной переменной текущего фрейма (§3.6). objectref на вершине стека операнда должен иметь тип returnAddress или типа reference. Это выталкивается от стека операнда, и значение локальной переменной по индексу устанавливается в objectref.

Примечания

astore инструкция используется с objectref типа returnAddress реализовывая finally пункты языка программирования Java (см. Раздел 7.13, "Компилируя finally"). aload инструкция не может использоваться, чтобы загрузить значение типа returnAddress от локальной переменной на стек операнда. Эта асимметрия с astore инструкцией является намеренной.

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


astore _ <n>

Работа

Хранилище reference в локальную переменную

Формат

astore _ <n>

Формы

astore_0 = 75 (0x4b) astore_1 = 76 (0x4c) astore_2 = 77 (0x4d) astore_3 = 78 (0x4e)

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

..., objectref...

Описание

<n> должен быть индекс в массив локальной переменной текущего фрейма (§3.6). objectref на вершине стека операнда должен иметь тип returnAddress или типа reference. Это выталкивается от стека операнда, и значение локальной переменной в <n> устанавливается в objectref.

Примечания

astore _ <n> инструкция используется с objectref типа returnAddress реализовывая finally пункты языка программирования Java (см. Раздел 7.13, "Компилируя finally"). aload _ <n> инструкция не может использоваться, чтобы загрузить значение типа returnAddress от локальной переменной на стек операнда. Эта асимметрия с соответствующим astore _ <n> инструкция является намеренной.

Каждый из astore _ <n> инструкции является тем же самым как astore с индексом <n>, за исключением того, что операнд <n> неявен.


athrow

Работа

Выдайте исключение или ошибку

Формат

athrow

Формы

athrow = 191 (0xbf)

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

..., objectref objectref

Описание

objectref должен иметь тип reference и должен обратиться к объекту, который является экземпляром класса Throwable или подкласса Throwable. Это выталкивается от стека операнда. objectref тогда бросается, ища текущий метод (§3.6) для первого обработчика исключений, который соответствует класс objectref, как дано алгоритмом в §3.10.

Если обработчик исключений, который соответствует objectref, находится, это содержит расположение кода, предназначенного, чтобы обработать это исключение. pc регистр сбрасывается к тому расположению, стек операнда текущего фрейма очищается, objectref пододвигается обратно на стек операнда, и выполнение продолжается.

Если никакой обработчик исключений соответствия не находится в текущем фрейме, тот фрейм выталкивается. Если текущий фрейм представляет вызов a synchronized метод, монитор, полученный или повторно введенный на вызове метода, выпускается или выходится (соответственно) как будто выполнением monitorexit инструкции. Наконец, фрейм его invoker восстанавливается, если такой фрейм существует, и objectref повторно бросается. Если никакой такой фрейм не существует, выходы текущего потока.

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

Если objectref null, athrow бросает a NullPointerException вместо objectref.

Иначе, если метод текущего фрейма является a synchronized метод и текущий поток не являются владельцем монитора, полученного или повторно введенного на вызове метода, athrow бросает IllegalMonitorStateException вместо объекта, ранее бросаемого. Это может произойти, например, если резко завершение synchronized метод содержит monitorexit инструкцию, но никакую monitorenter инструкцию, на объекте, на котором синхронизируется метод.

Иначе, если реализация виртуальной машины осуществляет правила о структурированном использовании блокировок, описанных в §8.13 и если первое из тех правил нарушается во время вызова текущего метода, то athrow бросает IllegalMonitorStateException вместо объекта, ранее бросаемого.

Примечания

Схема стека операнда для athrow инструкции может вводить в заблуждение: Если обработчик для этого исключения является соответствующим в текущем методе, athrow инструкция отбрасывает все значения на стеке операнда, то нажатия брошенный объект на стек операнда. Однако, если никакой обработчик не является соответствующим в текущем методе, и исключение выдается дальше цепочка вызова метода, то стек операнда метода (если любой), который обрабатывает исключение, очищается, и objectref продвигается на тот пустой стек операнда. Отбрасываются все прошедшие фреймы от метода, который выдавал исключение до, но не включая, метод, который обрабатывает исключение.


Содержание | Предыдущий | Следующий | Индекс

Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter