Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
FYL2XP1
Влияние команды на флаги и форматы команды:
* |
* |
* |
|
|
* |
* |
D9 F9 |
FYL2XP1 |
ST(1) = ST(1) * log2(ST(0)+1.0), верхний элемент выталкивается из регистрового стека |
8087 |
fyl2xp1 |
Описание:
Команда FYL2XP1 вычисляет ST(1)* log2(ST +1), помещает результирующее значение в ST(1) и выталкивает из регистрового стека верхний элемент ST.
Исходный операнд в ST должен иметь значение в диапазоне: (sqrt(2)/2) ‑1 ≤ ST ≤ 1 ‑ sqrt(2)/2. Исходный операнд в ST(1) может принимать значения от -∞ до +∞.
Если операнд в ST находится вне приемлемого диапазона, то результат FYL2XP1 неопределен. Это касается и различных исключений, которые могут возникать, а могут и не возникать, когда операнд в ST не находится в диапазоне разрешенных значений.
В таблице 6.200. приведены возвращаемые командой FYL2XP1 значения для различных классов операндов, а также случаи, когда возникает исключение #IA.
Таблица 6.200. Значения, возвращаемые командой FYL2XP1 для различных классов операндов
ST(1)ST(0) |
от -(1-sqrt(2)/2) до -0 |
-0 |
+0 |
от +0 до +(1-sqrt(2)/2) |
NaN |
-INF |
+INF |
#IA |
#IA |
-INF |
NaN |
-F |
+F |
+0 |
-0 |
-F |
NaN |
-0 |
+0 |
+0 |
-0 |
-0 |
NaN |
+0 |
-0 |
-0 |
+0 |
+0 |
NaN |
+F |
-F |
-0 |
+0 |
+F |
NaN |
+INF |
-INF |
#IA |
#IA |
+INF |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
F - Конечное вещественное значение |
Исключение #IA возникает также, если любой из операндов SNaN или представлен в неподдерживаемом формате.
Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS, а также указывает направление округления в случае возникновения исключения #P (неточный результат): 0 – округление к меньшему, 1 – округление к большему.
Команда FYL2XP1 обеспечивает более высокую точность, чем FYL2X при вычислении логарифмов велчин близких к 1. Когда e мало (e — величина, логарифм которой необходимо найти, минус единица), большее количество значащих цифр может быть вычислено при применении e в качестве аргумента FYL2XP1, нежели чем при применении 1 + e в качестве аргумента FYL2X.
Операция:
ST(1) = ST(1) * log2(ST + 1.0);
Pop(ST);
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru