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


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

d2f

Работа

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

Формат

d2f

Формы

d2f = 144 (0x90)

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

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

Описание

Значение на вершине стека операнда должно иметь тип double. Это выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3) приводящий к значению'. Затем значение' преобразовывается в a float результат используя IEEE 754 вокруг для самого близкого режима. Результат продвигается на стек операнда.

Где d2f инструкция строга FP (§3.8.2), результат преобразования всегда округляется к самому близкому представимому значению в наборе значений плавающем (§3.3.2).

Где d2f инструкция не строга FP, результат преобразования может быть взят от набора значений "расширенная экспонента плавающая" (§3.3.2); это не обязательно округляется к самому близкому представимому значению в наборе значений плавающем.

Конечное значение', слишком маленькое, чтобы быть представленным как a float преобразовывается в нуль того же самого знака; конечное значение', слишком большое, чтобы быть представленным как a float преобразовывается в бесконечность того же самого знака. A double НЭН преобразовывается в a float НЭН.

Примечания

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


d2i

Работа

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

Формат

d2i

Формы

d2i = 142 (0x8e)

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

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

Описание

Значение на вершине стека операнда должно иметь тип double. Это выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3) приводящий к значению'. Затем значение' преобразовывается в int. Результат продвигается на стек операнда:

Примечания

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


d2l

Работа

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

Формат

d2l

Формы

d2l = 143 (0x8f)

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

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

Описание

Значение на вершине стека операнда должно иметь тип double. Это выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3) приводящий к значению'. Затем значение' преобразовывается в a long. Результат продвигается на стек операнда:

Примечания

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


dadd

Работа

Добавить double

Формат

dadd

Формы

dadd = 99 (0x63)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. double результатом является value1' + value2'. Результат продвигается на стек операнда.

Результатом dadd инструкции управляют правила арифметики IEEE:

Виртуальная машина Java требует поддержки постепенной потери значимости как определено IEEE 754. Несмотря на то, что переполнение, потеря значимости, или потеря точности могут произойти, выполнение dadd инструкции никогда не бросает исключение на этапе выполнения.


daload

Работа

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

Формат

daload

Формы

daload = 49 (0x31)

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

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

Описание

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

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

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

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


dastore

Работа

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

Формат

dastore

Формы

dastore = 82 (0x52)

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

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

Описание

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

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

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

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


dcmp <op>

Работа

Сравниться double

Формат

dcmp <op>

Формы

dcmpg = 152 (0x98) dcmpl = 151 (0x97)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. Сравнение с плавающей точкой выполняется:

· Иначе, по крайней мере одним из value1' или value2' является НЭН. dcmpg инструкция продвигает int оцените 1 на стек операнда, и dcmpl инструкция продвигает int оцените-1 на стек операнда.

Сравнение с плавающей точкой выполняется в соответствии с IEEE 754. Все значения кроме НЭН упорядочиваются с отрицательной бесконечностью меньше чем все конечные значения и положительная бесконечность, больше чем все конечные значения. Положительный нулевой и отрицательный нуль считают равным.


Примечания

dcmpg и dcmpl инструкции отличаются только по их обработке сравнения, включающего НЭН. НЭН Неупорядочивают, таким образом, любой double сравнение перестало работать, если или или оба из его операндов НЭН. И с dcmpg и с dcmpl доступный, любой double сравнение может быть скомпилировано, чтобы продвинуть тот же самый результат на стек операнда, перестало ли сравнение работать на значениях NON-НЭН или сбоях, потому что это встретилось с НЭН. Для получения дополнительной информации см. Раздел 7.5, "Больше Примеров Управления."


dconst _ <d>

Работа

Продвинуть double

Формат

dconst _ <d>

Формы

dconst_0 = 14 (0xe) dconst_1 = 15 (0xf)

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

......, <d>

Описание

Продвиньте double постоянный <d> (0.0 или 1.0) на стек операнда.


ddiv

Работа

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

Формат

ddiv

Формы

ddiv = 111 (0x6f)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. double результатом является value1' / value2'. Результат продвигается на стек операнда.

Результатом ddiv инструкции управляют правила арифметики IEEE:

Виртуальная машина Java требует поддержки постепенной потери значимости как определено IEEE 754. Несмотря на то, что переполнение, потеря значимости, подразделение нулем, или потеря точности могут произойти, выполнение ddiv инструкции никогда не бросает исключение на этапе выполнения.


dload

Работа

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

Формат

dload
индекс

Формы

dload = 24 (0x18)

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

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

Описание

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

Примечания

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


dload _ <n>

Работа

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

Формат

dload _ <n>

Формы

dload_0 = 38 (0x26) dload_1 = 39 (0x27) dload_2 = 40 (0x28) dload_3 = 41 (0x29)

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

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

Описание

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

Примечания

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


dmul

Работа

Умножиться double

Формат

dmul

Формы

dmul = 107 (0x6b)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. double результатом является value1' * value2'. Результат продвигается на стек операнда.

Результатом dmul инструкции управляют правила арифметики IEEE:

Виртуальная машина Java требует поддержки постепенной потери значимости как определено IEEE 754. Несмотря на то, что переполнение, потеря значимости, или потеря точности могут произойти, выполнение dmul инструкции никогда не бросает исключение на этапе выполнения.


dneg

Работа

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

Формат

dneg

Формы

dneg = 119 (0x77)

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

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

Описание

Значение должно иметь тип double. Это выталкивается от стека операнда и подвергается преобразованию набора значений (§3.8.3), приводя к значению'. double результатом является арифметическое отрицание имеющее значение'. Результат продвигается на стек операнда.

Для double значения, отрицание не является тем же самым как вычитанием от нуля. Если x +0.0, тогда 0.0-x равняется +0.0, но -x равняется -0.0. Унарный минус просто инвертирует знак a double.

Особые случаи интереса:


drem

Работа

Остаток double

Формат

drem

Формы

drem = 115 (0x73)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. Результат вычисляется и продвигается на стек операнда как a double.

Результатом drem инструкции не является то же самое как та из так называемой работы остатка, определенной IEEE 754. Работа "остатка" IEEE 754 вычисляет остаток от округляющегося подразделения, не подразделения усечения, и таким образом, его поведение не походит на это обычного целочисленного оператора остатка. Вместо этого виртуальная машина Java определяет drem, чтобы вести себя способом, аналогичным той из целочисленных инструкций остатка виртуальной машины Java (irem и lrem); это может быть по сравнению с библиотечной функцией C fmod.

Результатом drem инструкции управляют эти правила:

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

Примечания

Работа остатка IEEE 754 может быть вычислена библиотечной подпрограммой Math.IEEEremainder.


dreturn

Работа

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

Формат

dreturn

Формы

dreturn = 175 (0xaf)

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

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

Описание

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

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

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

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

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


dstore

Работа

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

Формат

dstore
индекс

Формы

dstore = 57 (0x39)

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

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

Описание

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

Примечания

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


dstore _ <n>

Работа

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

Формат

dstore _ <n>

Формы

dstore_0 = 71 (0x47) dstore_1 = 72 (0x48) dstore_2 = 73 (0x49) dstore_3 = 74 (0x4a)

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

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

Описание

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

Примечания

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


dsub

Работа

Вычесть double

Формат

dsub

Формы

dsub = 103 (0x67)

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

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

Описание

И value1 и value2 должны иметь тип double. Значения выталкиваются от операнда, складывают и подвергаются преобразованию набора значений (§3.8.3), приводя к value1' и value2'. double результатом является value1' - value2'. Результат продвигается на стек операнда.

Для double вычитание, это всегда имеет место это a-b приводит к тому же самому результату как a+(-b). Однако, для dsub инструкции, вычитание от нуля не является тем же самым как отрицанием, потому что если x +0.0, тогда 0.0-x равняется +0.0, но -x равняется -0.0.

Виртуальная машина Java требует поддержки постепенной потери значимости как определено IEEE 754. Несмотря на то, что переполнение, потеря значимости, или потеря точности могут произойти, выполнение dsub инструкции никогда не бросает исключение на этапе выполнения.


дубликат

Работа

Копируйте главное значение стека операнда

Формат

дубликат

Формы

копируйте = 89 (0x59)

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

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

Описание

Копируйте главное значение на операнде, складывают и продвигают дублированное значение на стек операнда.

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


dup_x1

Работа

Копируйте главный стек операнда, оценивают и вставляют два значения вниз

Формат

dup_x1

Формы

dup_x1 = 90 (0x5a)

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

..., value2, value1..., value1, value2, value1

Описание

Копируйте главное значение на операнде, складывают и вставляют дублированное значение два значения вниз в стеке операнда.

dup_x1 инструкция не должна использоваться, если и value1 и value2 не являются значениями категории 1 вычислительный тип (§3.11.1).


dup_x2

Работа

Копируйте главный стек операнда, оценивают и вставляют два или три значения вниз

Формат

dup_x2

Формы

dup_x2 = 91 (0x5b)

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

Форма 1:

..., value3, value2, value1..., value1, value3, value2, value1

где value1, value2, и value3 являются всеми значениями категории 1 вычислительный тип (§3.11.1).

Форма 2:

..., value2, value1..., value1, value2, value1

где value1 является значением категории, 1 вычислительный тип и value2 являются значением категории 2 вычислительных типа (§3.11.1).

Описание

Копируйте главное значение на операнде, складывают и вставляют дублированное значение два или три значения вниз в стеке операнда.


dup2

Работа

Копируйте лучший или два значения стека операнда

Формат

dup2

Формы

dup2 = 92 (0x5c)

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

Форма 1:

..., value2, value1..., value2, value1, value2, value1

где и value1 и value2 являются значениями категории 1 вычислительный тип (§3.11.1).

Форма 2:

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

где значение является значением категории 2 вычислительных типа (§3.11.1).

Описание

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


dup2_x1

Работа

Копируйте лучший или два значения стека операнда и вставьте два или три значения вниз

Формат

dup2_x1

Формы

dup2_x1 = 93 (0x5d)

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

Форма 1:

..., value3, value2, value1..., value2, value1, value3, value2, value1

где value1, value2, и value3 являются всеми значениями категории 1 вычислительный тип (§3.11.1).

Форма 2:

..., value2, value1..., value1, value2, value1

где value1 является значением категории, 2 вычислительных типа и value2 являются значением категории 1 вычислительный тип (§3.11.1).

Описание

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


dup2_x2

Работа

Копируйте лучший или два значения стека операнда и вставьте два, три, или четыре значения вниз

Формат

dup2_x2

Формы

dup2_x2 = 94 (0x5e)

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

Форма 1:

..., value4, value3, value2, value1..., value2, value1, value4, value3, value2, value1

где value1, value2, value3, и value4 являются всеми значениями категории 1 вычислительный тип (§3.11.1).

Форма 2:

..., value3, value2, value1..., value1, value3, value2, value1

где value1 является значением категории, 2 вычислительных типа и value2 и value3 являются оба значениями категории 1 вычислительный тип (§3.11.1).

Форма 3:

..., value3, value2, value1..., value2, value1, value3, value2, value1

где value1 и value2 являются оба значениями категории, 1 вычислительный тип и value3 являются значением категории 2 вычислительных типа (§3.11.1).

Форма 4:

..., value2, value1..., value1, value2, value1

где value1 и value2 являются оба значениями категории 2 вычислительных типа (§3.11.1).

Описание

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


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

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

free hit counter