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


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

f2d

Работа

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

Формат

f2d

Формы

f2d = 141 (0x8d)

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

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

Описание

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

Примечания

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

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


f2i

Работа

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

Формат

f2i

Формы

f2i = 139 (0x8b)

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

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

Описание

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

Примечания

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


f2l

Работа

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

Формат

f2l

Формы

f2l = 140 (0x8c)

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

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

Описание

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

Примечания

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


fadd

Работа

Добавить float

Формат

fadd

Формы

fadd = 98 (0x62)

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

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

Описание

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

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

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


faload

Работа

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

Формат

faload

Формы

faload = 48 (0x30)

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

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

Описание

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

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

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

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


fastore

Работа

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

Формат

fastore

Формы

fastore = 81 (0x51)

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

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

Описание

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

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

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

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


fcmp <op>

Работа

Сравниться float

Формат

fcmp <op>

Формы

fcmpg = 150 (0x96) fcmpl = 149 (0x95)

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

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

Описание

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

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


Примечания

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


fconst _ <f>

Работа

Продвинуть float

Формат

fconst _ <f>

Формы

fconst_0 = 11 (0xb) fconst_1 = 12 (0xc) fconst_2 = 13 (0xd)

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

......, <f>

Описание

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


fdiv

Работа

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

Формат

fdiv

Формы

fdiv = 110 (0x6e)

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

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

Описание

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

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

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


fload

Работа

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

Формат

fload
индекс

Формы

fload = 23 (0x17)

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

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

Описание

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

Примечания

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


fload _ <n>

Работа

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

Формат

fload _ <n>

Формы

fload_0 = 34 (0x22) fload_1 = 35 (0x23) fload_2 = 36 (0x24) fload_3 = 37 (0x25)

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

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

Описание

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

Примечания

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


fmul

Работа

Умножиться float

Формат

fmul

Формы

fmul = 106 (0x6a)

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

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

Описание

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

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

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


fneg

Работа

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

Формат

fneg

Формы

fneg = 118 (0x76)

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

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

Описание

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

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

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


frem

Работа

Остаток float

Формат

frem

Формы

frem = 114 (0x72)

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

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

Описание

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

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

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

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

Примечания

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


freturn

Работа

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

Формат

freturn

Формы

freturn = 174 (0xae)

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

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

Описание

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

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

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

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

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


fstore

Работа

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

Формат

fstore
индекс

Формы

fstore = 56 (0x38)

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

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

Описание

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

Примечания

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


fstore _ <n>

Работа

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

Формат

fstore _ <n>

Формы

fstore_0 = 67 (0x43) fstore_1 = 68 (0x44) fstore_2 = 69 (0x45) fstore_3 = 70 (0x46)

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

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

Описание

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

Примечания

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


fsub

Работа

Вычесть float

Формат

fsub

Формы

fsub = 102 (0x66)

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

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

Описание

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

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

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


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

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

free hit counter