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


aaload

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

aaload


Формы aaload = 50 (0x32)

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

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

Исключения на этапе выполнения Если arrayref null, aaload бросает a NullPointerException.

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


aastore

Работа Хранилище в reference массив

aastore


Формы aastore = 83 (0x53)

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

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

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

S не может быть интерфейсным типом, потому что нет никаких экземпляров интерфейсов, только экземпляры классов и массивов.

Исключения на этапе выполнения Если arrayref null, aastore бросает a NullPointerException.

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

Иначе, если arrayref не null и фактический тип имеющий значение не является присвоением, совместимым (§2.6.6) с фактическим типом компонентов массива, 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

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

anewarray
indexbyte1
indexbyte2


из reference

Формы anewarray = 189 (0xbd)

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

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

Соединение Исключений Во время разрешения CONSTANT_Class постоянный элемент пула, любое из исключений, задокументированных в §5.1, могут быть брошены.

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

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


areturn

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

areturn


Формы areturn = 176 (0xb0)

Стек ..., objectref

[пустой]

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

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


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 типа return-Address реализовывая Java finally ключевое слово (см. Раздел 7.13, "Компилируя наконец"). aload инструкция не может использоваться, чтобы загрузить значение типа returnAddress от локальной переменной на стек операнда. Эта асимметрия с astore инструкцией является намеренной.

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


astore _ <n>

Работа

astore _ <n>


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

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

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


athrow

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

athrow


или ошибка

Формы athrow = 191 (0xbf)

Стек ..., objectref

objectref

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

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

Если нет catch пункт находится, который обрабатывает это исключение, выходы текущего потока.

Исключение на этапе выполнения Если objectref null, athrow бросает a NullPointerException вместо objectref.


athrow

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



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

Спецификация Виртуальной машины Java

Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter