Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
reference
от массиваaaload |
Стек ..., arrayref, индекс..., значение
Описание
arrayref должен иметь тип reference
и должен обратиться к массиву, компоненты которого имеют тип reference
. Индекс должен иметь тип int
. И arrayref и индекс выталкиваются от стека операнда. reference
значение в компоненте массива по индексу получается и продвигается на вершину стека операнда.
Исключения на этапе выполнения
Если arrayref null
, aaload бросает a NullPointerException
.
Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, aaload инструкция бросает ArrayIndex-OutOfBounds-Exception
.
reference
массивaastore |
Стек ..., arrayref, индекс, оценивают...
Описание
arrayref должен иметь тип reference
и должен обратиться к массиву, компоненты которого имеют тип reference
. Индекс должен иметь тип int
и значение должно иметь тип reference
. arrayref, индекс, и значение выталкиваются от стека операнда. reference
значение сохранено как компонент массива по индексу.
Тип имеющий значение должен быть присвоением, совместимым (§2.6.6) с типом компонентов массива, на который ссылается arrayref. Присвоение значения ссылочного типа S (источник) к переменной ссылочного типа T (цель) позволяется только, когда тип S поддерживает все операции, определенные на типе T. Подробные правила следуют:
[]
, то есть, массив компонентов SC типа, тогда: Object
(§2.4.6), или:
Исключения на этапе выполнения
Если arrayref null
, aastore бросает a NullPointerException
.
Иначе, если индекс не в пределах границ массива, на который ссылается arrayref, aastore инструкция бросает ArrayIndex
-OutOfBounds-Exception
.
Иначе, если arrayref не null
и фактический тип имеющий значение не является присвоением, совместимым (§2.6.6) с фактическим типом компонентов массива, aastore бросает ArrayStoreException
.
null
aconst_null |
Описание
Продвиньте null
объект reference
на стек операнда.
Примечания
Виртуальная машина Java не передает под мандат конкретное значение для null
.
reference
от локальной переменнойaload | |
индекс |
Описание
Индекс является байтом без знака, который должен быть допустимым индексом в локальные переменные текущего фрейма (§3.6). Локальная переменная по индексу должна содержать a reference
. objectref в локальной переменной по индексу продвигается на стек операнда.
Примечания
aload инструкция не может использоваться, чтобы загрузить значение типа returnAddress
от локальной переменной на стек операнда. Эта асимметрия с astore инструкцией является намеренной.
aload код операции может использоваться в соединении с широкой инструкцией, чтобы получить доступ к локальной переменной, используя двухбайтовый индекс без знака.
reference
от локальной переменнойaload _ <n> |
Описание
<n> должен быть допустимый индекс в локальные переменные текущего фрейма (§3.6). Локальная переменная в <n> должна содержать a reference
. objectref в локальной переменной по индексу продвигается на стек операнда.
Примечания
aload _ <n> инструкция не может использоваться, чтобы загрузить значение типа returnAddress
от локальной переменной на стек операнда. Эта асимметрия с соответствующим astore _ <n> инструкция является намеренной. Каждый из aload _ <n> инструкции является тем же самым как aload с индексом <n>, за исключением того, что операнд <n> неявен.
anewarray | |
indexbyte1 | |
indexbyte2 |
reference
Стек ..., количество..., 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 инструкция используется, чтобы создать единственную размерность массива ссылок на объект. Это может также использоваться, чтобы создать часть многомерного массива.
reference
от методаareturn |
Описание
objectref должен иметь тип reference
и должен обратиться к объекту типа, который является присвоением, совместимым (§2.6.6) с типом, представленным дескриптором возврата (§4.3.3) метода возврата. objectref выталкивается от стека операнда текущего фрейма (§3.6) и продвигается на стек операнда фрейма invoker. Любые другие значения на стеке операнда текущего метода отбрасываются. Если метод возврата является a synchronized
метод, монитор, полученный или повторно введенный на вызове метода, выпускается или выходится (соответственно) как будто выполнением monitorexit инструкции.
Интерпретатор тогда восстанавливает фрейм invoker и возвращает управление invoker.
arraylength |
Формы arraylength = 190 (0xbe)
Описание
arrayref должен иметь тип reference
и должен обратиться к массиву. Это выталкивается от стека операнда. Длина массива, на который это ссылается, определяется. Та длина продвигается на стек операнда как int
.
Исключение на этапе выполнения
Если arrayref null
, arraylength инструкция бросает a NullPointerException
.
reference
в локальную переменнуюastore | |
индекс |
Описание
Индекс является байтом без знака, который должен быть допустимым индексом в локальные переменные текущего фрейма (§3.6). objectref на вершине стека операнда должен иметь тип returnAddress
или типа reference
. Это выталкивается от стека операнда, и значение локальной переменной по индексу устанавливается в objectref.
Примечания
astore инструкция используется с objectref типа return
-Address
реализовывая Java finally
ключевое слово (см. Раздел 7.13, "Компилируя наконец"). aload инструкция не может использоваться, чтобы загрузить значение типа returnAddress
от локальной переменной на стек операнда. Эта асимметрия с astore инструкцией является намеренной.
astore код операции может использоваться в соединении с широкой инструкцией, чтобы получить доступ к локальной переменной, используя двухбайтовый индекс без знака.
astore _ <n> |
reference
в локальную переменную
Описание
<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 |
Описание
objectref должен иметь тип reference
и должен обратиться к объекту, который является экземпляром класса Throwable
или подкласса Throwable
. Это выталкивается от стека операнда. objectref тогда бросается, ища текущий фрейм (§3.6) для нового catch
пункт, который ловит класс objectref или один из его суперклассов.
Если a catch
пункт находится, он содержит расположение кода, предназначенного, чтобы обработать это исключение. pc
регистр сбрасывается к тому расположению, стек операнда текущего фрейма очищается, objectref пододвигается обратно на стек операнда, и выполнение продолжается. Если никакой соответствующий пункт не находится в текущем фрейме, тот фрейм выталкивается, фрейм его invoker восстанавливается, и objectref повторно бросается.
Если нет catch
пункт находится, который обрабатывает это исключение, выходы текущего потока.
Исключение на этапе выполнения
Если objectref null
, athrow бросает a NullPointerException
вместо objectref.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины Java
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com