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


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

l2d

Работа

Преобразовать long к double

Формат

l2d

Формы

l2d = 138 (0x8a)

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

..., значение..., результат

Описание

Значение на вершине стека операнда должно иметь тип long. Это выталкивается от стека операнда и преобразовывается в a double результат используя IEEE 754 вокруг для самого близкого режима. Результат продвигается на стек операнда.

Примечания

l2d инструкция выполняет расширяющееся примитивное преобразование (§2.6.2), который может потерять точность потому что значения типа double имейте только 53 бита мантиссы.


l2f

Работа

Преобразовать long к float

Формат

l2f

Формы

l2f = 137 (0x89)

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

..., значение..., результат

Описание

Значение на вершине стека операнда должно иметь тип long. Это выталкивается от стека операнда и преобразовывается в a float результат используя IEEE 754 вокруг для самого близкого режима. Результат продвигается на стек операнда.

Примечания

l2f инструкция выполняет расширяющееся примитивное преобразование (§2.6.2), который может потерять точность потому что значения типа float имейте только 24 бита мантиссы.


l2i

Работа

Преобразовать long к int

Формат

l2i

Формы

l2i = 136 (0x88)

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

..., значение..., результат

Описание

Значение на вершине стека операнда должно иметь тип long. Это выталкивается от стека операнда и преобразовывается в int результат, беря младший разряд 32 бита long значение и отбрасывание старшего разряда 32 бита. Результат продвигается на стек операнда.

Примечания

l2i инструкция выполняет сужающееся примитивное преобразование (§2.6.3). Это может потерять информацию о полной величине имеющей значение. У результата, возможно, также нет того же самого знака как значение.


ladd

Работа

Добавить long

Формат

ladd

Формы

ladd = 97 (0x61)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Значения выталкиваются от стека операнда. long результатом является value1 + value2. Результат продвигается на стек операнда.

Результатом являются 64 бита младшего разряда истинного математического результата в достаточно широком two's-дополнительном формате, представленном как значение типа long. Если переполнение происходит, знак результата, возможно, не то же самое как знак математической суммы двух значений.

Несмотря на то, что переполнение может произойти, выполнение ladd инструкции никогда не бросает исключение на этапе выполнения.


laload

Работа

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

Формат

laload

Формы

laload = 47 (0x2f)

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

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

Описание

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

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

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

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


земля

Работа

Булевская переменная И long

Формат

земля

Формы

приземлитесь = 127 (0x7f)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Они выталкиваются от стека операнда. A long результат вычисляется, беря поразрядное И value1 и value2. Результат продвигается на стек операнда.


lastore

Работа

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

Формат

lastore

Формы

lastore = 80 (0x50)

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

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

Описание

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

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

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

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


lcmp

Работа

Сравниться long

Формат

lcmp

Формы

lcmp = 148 (0x94)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Они и выталкиваются от стека операнда, и сравнение целого числа со знаком выполняется. Если value1 больше чем value2, int значение 1 продвигается на стек операнда. Если value1 равен value2, int значение 0 продвигается на стек операнда. Если value1 является меньше чем value2, int значение-1 продвигается на стек операнда.


lconst _ <l>

Работа

Продвинуть long постоянный

Формат

lconst _ <l>

Формы

lconst_0 = 9 (0x9) lconst_1 = 10 (0xa)

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

......, <l>

Описание

Продвиньте long постоянный <l> (0 или 1) на стек операнда.


ldc

Работа

Продвиньте элемент от пула константы этапа выполнения

Формат

ldc
индекс

Формы

ldc = 18 (0x12)

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

......, значение

Описание

Индекс является байтом без знака, который должен быть допустимым индексом в пул константы этапа выполнения текущего класса (§3.6). Запись пула константы этапа выполнения по индексу любой должен быть константой этапа выполнения типа int или float, или должна быть символьная ссылка на строковый литерал (§5.1).

Если запись пула константы этапа выполнения является константой этапа выполнения типа int или float, числовое значение той константы этапа выполнения продвигается на стек операнда как int или float, соответственно.

Иначе, запись пула константы этапа выполнения должна быть ссылкой на экземпляр класса String представление строкового литерала (§5.1). A reference к тому экземпляру, значению, продвигается на стек операнда.

Примечания

ldc инструкция может только использоваться, чтобы продвинуть значение типа float взятый от набора значений плавающего (§3.3.2), потому что константа типа float в постоянном пуле (§4.4.4) должен быть взят от набора значений плавающего.


ldc_w

Работа

Продвиньте элемент от пула константы этапа выполнения (широкий индекс)

Формат

ldc_w
indexbyte1
indexbyte2

Формы

ldc_w = 19 (0x13)

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

......, значение

Описание

indexbyte1 без знака и indexbyte2 собираются в 16-разрядный индекс без знака в пул константы этапа выполнения текущего класса (§3.6), где значение индекса вычисляется как (indexbyte1 << 8) | indexbyte2. Индекс должен быть допустимым индексом в пул константы этапа выполнения текущего класса. Запись пула константы этапа выполнения по индексу любой должен быть константой этапа выполнения типа int или float, или должна быть символьная ссылка на строковый литерал (§5.1).

Если запись пула константы этапа выполнения является константой этапа выполнения типа int или float, числовое значение той константы этапа выполнения продвигается на стек операнда как int или float, соответственно.

Иначе, запись пула константы этапа выполнения должна быть ссылкой на экземпляр класса String представление строкового литерала (§5.1). A reference к тому экземпляру, значению, продвигается на стек операнда.

Примечания

ldc_w инструкция идентична ldc инструкции за исключением ее более широкого индекса пула константы этапа выполнения.

ldc_w инструкция может только использоваться, чтобы продвинуть значение типа float взятый от набора значений плавающего (§3.3.2), потому что константа типа float в постоянном пуле (§4.4.4) должен быть взят от набора значений плавающего.


ldc2_w

Работа

Продвинуть long или double от пула константы этапа выполнения (широкий индекс)

Формат

ldc2_w
indexbyte1
indexbyte2

Формы

ldc2_w = 20 (0x14)

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

......, значение

Описание

indexbyte1 без знака и indexbyte2 собираются в 16-разрядный индекс без знака в пул константы этапа выполнения текущего класса (§3.6), где значение индекса вычисляется как (indexbyte1 << 8) | indexbyte2. Индекс должен быть допустимым индексом в пул константы этапа выполнения текущего класса. Запись пула константы этапа выполнения по индексу должна быть константой этапа выполнения типа long или double (§5.1). Числовое значение той константы этапа выполнения продвигается на стек операнда как a long или double, соответственно.

Примечания

Только версия широкого индекса ldc2_w инструкции существует; есть инструкция № ldc2, которая продвигает a long или double с однобайтовым индексом.

ldc2_w инструкция может только использоваться, чтобы продвинуть значение типа double взятый от двойного набора значений (§3.3.2), потому что константа типа double в постоянном пуле (§4.4.5) должен быть взят от двойного набора значений.


ldiv

Работа

Разделиться long

Формат

ldiv

Формы

ldiv = 109 (0x6d)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Значения выталкиваются от стека операнда. long результатом является значение выражения value1 / value2 языка программирования Java. Результат продвигается на стек операнда.

A long подразделение округляется к 0; то есть, частное, произведенное для long значения в n / d являются a long оцените q, величина которого как можно больше, удовлетворяя. Кроме того q положителен, когда и n и d имеют тот же самый знак, но q отрицателен, когда и n и d имеют противоположные знаки.

Есть один особый случай, который не удовлетворяет это правило: если дивиденд является отрицательным целым числом самой большой величины для long введите и делитель -1, тогда переполнение происходит, и результат равен дивиденду; несмотря на переполнение, никакое исключение не выдается в этом случае.

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

Если значение делителя в a long подразделение 0, ldiv бросает ArithmeticException.


lload

Работа

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

Формат

lload
индекс

Формы

lload = 22 (0x16)

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

......, значение

Описание

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

Примечания

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


lload _ <n>

Работа

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

Формат

lload _ <n>

Формы

lload_0 = 30 (0x1e) lload_1 = 31 (0x1f) lload_2 = 32 (0x20) lload_3 = 33 (0x21)

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

......, значение

Описание

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

Примечания

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


lmul

Работа

Умножиться long

Формат

lmul

Формы

lmul = 105 (0x69)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Значения выталкиваются от стека операнда. long результатом является value1 * value2. Результат продвигается на стек операнда.

Результатом являются 64 бита младшего разряда истинного математического результата в достаточно широком two's-дополнительном формате, представленном как значение типа long. Если переполнение происходит, знак результата, возможно, не то же самое как знак математической суммы двух значений.

Несмотря на то, что переполнение может произойти, выполнение lmul инструкции никогда не бросает исключение на этапе выполнения.


lneg

Работа

Инвертировать long

Формат

lneg

Формы

lneg = 117 (0x75)

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

..., значение..., результат

Описание

Значение должно иметь тип long. Это выталкивается от стека операнда. long результатом является арифметическое отрицание имеющее значение, - значение. Результат продвигается на стек операнда.

Для long значения, отрицание является тем же самым как вычитанием от нуля. Поскольку использование виртуальной машины Java two's-дополнительное представление для целых чисел и диапазона two's-дополнительных значений не симметрично, отрицание максимального отрицания long результаты в том же самом максимальном отрицательном числе. Несмотря на то, что переполнение произошло, никакое исключение не выдается.

Для всех long значения x, -x равняется (~x) + 1.


lookupswitch

Работа

Таблица переходов доступа ключевым соответствием и переходом

Формат

lookupswitch
<0-3-байтовая клавиатура \>
defaultbyte1
defaultbyte2
defaultbyte3
defaultbyte4
npairs1
npairs2
npairs3
npairs4
смещенные соответствием пары...

Формы

lookupswitch = 171 (0xab)

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

..., ключ...

Описание

lookupswitch является инструкцией переменной длины. Сразу после lookupswitch кода операции, между нулем и тремя нулевыми байтами (обнуленные байты, не нулевой объект) вставляются как дополнение. Число нулевых байтов выбирается так, чтобы defaultbyte1 начался в адресе, который является кратным числом четырех байтов от запуска текущего метода (код операции его первой инструкции). Сразу после дополнения следуют за серией 32-разрядных значений со знаком: значение по умолчанию, npairs, и затем npairs пары 32-разрядных значений со знаком. npairs должен быть больше чем или равным 0. Каждая из npairs пар состоит из int соответствуйте и 32-разрядное смещение со знаком. Каждое из этих 32-разрядных значений со знаком создается из четырех байтов без знака как (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4.

Таблица смещенные соответствием пары lookupswitch инструкции должна быть сортирована в увеличении числового порядка соответствием.

Ключ должен иметь тип int и выталкивается от стека операнда. Ключ сравнивается со значениями соответствия. Если это равно одному из них, то целевой адрес вычисляется, добавляя соответствующее смещение к адресу кода операции этой lookupswitch инструкции. Если ключ не соответствует ни одного из значений соответствия, целевой адрес вычисляется, добавляя значение по умолчанию к адресу кода операции этой lookupswitch инструкции. Выполнение тогда продолжается в целевом адресе.

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

Примечания

Выравнивание, требуемое 4-байтовых операндов lookupswitch инструкции, гарантирует 4-байтовое выравнивание тех операндов, если и только если метод, который содержит lookupswitch, располагается на 4-байтовую границу.

Смещенные соответствием пары сортируются, чтобы поддерживать подпрограммы поиска, которые более быстры чем линейный поиск.


lor

Работа

Булевская переменная ИЛИ long

Формат

lor

Формы

lor = 129 (0x81)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Они выталкиваются от стека операнда. A long результат вычисляется, беря поразрядное содержащее ИЛИ value1 и value2. Результат продвигается на стек операнда.


lrem

Работа

Остаток long

Формат

lrem

Формы

lrem = 113 (0x71)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Значения выталкиваются от стека операнда. long результатом является value1 - (value1 / value2) * value2. Результат продвигается на стек операнда.

Результат lrem инструкции так, что (a/b)*b + (a%b) равно a. Эти идентификационные данные содержат даже в особом случае, в котором дивиденд является отрицанием long из самой большой величины для ее типа и делителя -1 (остаток 0). Это следует из этого правила, что результат работы остатка может быть отрицательным, только если дивиденд отрицателен и может быть положительным, только если дивиденд положителен; кроме того величина результата всегда является меньше чем величина делителя.

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

Если значение делителя для a long оператор остатка 0, lrem бросает ArithmeticException.


lreturn

Работа

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

Формат

lreturn

Формы

lreturn = 173 (0xad)

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

..., оцените [пустой]

Описание

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

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

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

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

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


lshl

Работа

Сдвиг уехал

Формат

lshl

long

Формы

lshl = 121 (0x79)

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

..., value1, value2..., результат

Описание

value1 должен иметь тип long, и value2 должен иметь тип int. Значения выталкиваются от стека операнда. A long результат вычисляется, смещаясь value1 оставленный s позициями двоичного разряда, где s составляет низкие 6 битов value2. Результат продвигается на стек операнда.

Примечания

Это эквивалентно (даже если переполнение происходит) к умножению 2 к питанию s. Расстояние сдвига, фактически используемое, находится поэтому всегда в диапазоне от 0 до 63, включительно, как будто value2 были подвергнуты поразрядному логическому, И с маской оценивают 0x3f.


lshr

Работа

Право арифметического сдвига long

Формат

lshr

Формы

lshr = 123 (0x7b)

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

..., value1, value2..., результат

Описание

value1 должен иметь тип long, и value2 должен иметь тип int. Значения выталкиваются от стека операнда. A long результат вычисляется, смещаясь value1 прямо s позициями двоичного разряда с расширением знака, где s является значением низких 6 битов value2. Результат продвигается на стек операнда.

Примечания

Получающееся значение, где s является value2 & 0x3f. Для неотрицательного value1 это эквивалентно усечению long подразделение 2 к питанию s. Расстояние сдвига, фактически используемое, находится поэтому всегда в диапазоне от 0 до 63, включительно, как будто value2 были подвергнуты поразрядному логическому, И с маской оценивают 0x3f.


lstore

Работа

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

Формат

lstore
индекс

Формы

lstore = 55 (0x37)

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

..., значение...

Описание

Индекс является байтом без знака. И индекс и индекс + 1 должны быть индексами в массив локальной переменной текущего фрейма (§3.6). Значение на вершине стека операнда должно иметь тип long. Это выталкивается от стека операнда, и локальные переменные по индексу и индексу + 1 устанавливаются оценить.

Примечания

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


lstore _ <n>

Работа

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

Формат

lstore _ <n>

Формы

lstore_0 = 63 (0x3f) lstore_1 = 64 (0x40) lstore_2 = 65 (0x41) lstore_3 = 66 (0x42)

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

..., значение...

Описание

И <n> и <n> + 1 должны быть индексами в массив локальной переменной текущего фрейма (§3.6). Значение на вершине стека операнда должно иметь тип long. Это выталкивается от стека операнда, и локальные переменные в <n> и <n> + 1 устанавливаются оценить.

Примечания

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


lsub

Работа

Вычесть long

Формат

lsub

Формы

lsub = 101 (0x65)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Значения выталкиваются от стека операнда. long результатом является value1 - value2. Результат продвигается на стек операнда.

Для long вычитание, a-b приводит к тому же самому результату как a+(-b). Для long значения, вычитание от нуля является тем же самым как отрицанием.

Результатом являются 64 бита младшего разряда истинного математического результата в достаточно широком two's-дополнительном формате, представленном как значение типа long. Если переполнение происходит, то знак результата, возможно, не то же самое как знак математической суммы двух значений.

Несмотря на то, что переполнение может произойти, выполнение lsub инструкции никогда не бросает исключение на этапе выполнения.


lushr

Работа

Право логического сдвига long

Формат

lushr

Формы

lushr = 125 (0x7d)

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

..., value1, value2..., результат

Описание

value1 должен иметь тип long, и value2 должен иметь тип int. Значения выталкиваются от стека операнда. A long результат вычисляется, смещаясь value1 право логически (с дополнением нулями) количеством, обозначенным на низкие 6 битов value2. Результат продвигается на стек операнда.

Примечания

Если value1 положителен, и s является value2 & 0x3f, результатом является то же самое как тот из value1>> s; если value1 отрицателен, результат равен значению выражения (value1>> s) + (2L << ~s). The addition of the (2L << ~s) term cancels out the propagated sign bit. The shift distance actually used is always in the range 0 to 63, inclusive.


lxor

Работа

Булев XOR long

Формат

lxor

Формы

lxor = 131 (0x83)

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

..., value1, value2..., результат

Описание

И value1 и value2 должны иметь тип long. Они выталкиваются от стека операнда. A long результат вычисляется, беря битовое исключающее "ИЛИ" value1 и value2. Результат продвигается на стек операнда.


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

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

free hit counter