Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
FADD
Влияние команды на флаги и форматы команды:
* |
* |
* |
|
* |
* |
* |
D8 /0 |
FADD m32real |
ST(0) = m32real + ST(0) |
8087 |
fadd dword ptr [si] |
DC /0 |
FADD m64real |
ST(0) = m64real + ST(0) |
8087 |
fadd qword ptr [bx] |
D8 C0+i |
FADD ST,ST(i) |
ST(0) = ST(i) + ST(0) |
8087 |
fadd ST,ST(4) |
DC C0+i |
FADD ST(i),ST |
ST(i) = ST(0) + ST(i) |
8087 |
fadd ST(2),ST |
DE C0+i |
FADDP ST(i),ST |
ST(i) = ST(0) + ST(i), верхний элемент выталкивается из регистрового стека |
8087 |
faddp ST(3),ST |
DE C1 |
FADDP |
ST(1) = ST(0) + ST(1), верхний элемент выталкивается из регистрового стека |
8087 |
faddp |
DE /0 |
FIADD m16int |
ST(0) = m16int + ST(0) |
8087 |
fiadd word ptr puls |
DA /0 |
FIADD m32int |
ST(0) = m32int + ST(0) |
8087 |
fiadd dword ptr memo |
Описание:
Команды сложения FADD, FADDP, FIADD прибавляют операнд-источник к операнду-назначения (в однооперандных формах команд сложения в качестве операнда-назначения используется ST) и возвращают сумму на место операнда-назначения. Команда FADDP, кроме этого, выталкивает из регистрового стека FPU верхний элемент (ST). Если в мнемонике команды FADDP не записано никакого операнда, то ST(1) прибавляется к ST.
Если операнд-источник находится в памяти, то он может быть в представлен форматах: короткого вещественного, длинного вещественного, целого слова или короткого целого, перед выполнением операции он автоматически приводится к временному вещественному формату.
Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным $(0$) в случае возникновения стековой ошибки #IS, а также указывает направление округления в случае возникновения исключения #P (неточный результат)
Сумма двух операндов со значениями $(0$) с противоположными знаками дает в результате $(+0$), кроме случая, когда задано округление к , тогда результатом будет $(-0$). Если операнд-источник — целое равное $(0$), то перед сложением оно преобразуется в $(+0$).
В таблице 6.135. приведены возвращаемые командами сложения значения для различных классов операндов, а также случаи, когда возникает исключение #IA.
Таблица 6.135. Значения, возвращаемые командами FADD, FADDP, FIADD
для различных классов операндов
SRCDEST |
-INF |
-F |
-0 |
+0 |
+F |
+INF |
NaN |
-INF |
-INF |
-INF |
-INF |
-INF |
-INF |
#IA |
NaN |
-F |
-INF |
-F |
SRC |
SRC |
±F или ±0 |
+INF |
NaN |
-I |
-INF |
-F |
SRC |
SRC |
±F или ±0 |
+INF |
NaN |
-0 |
-INF |
DEST |
-0 |
±0 |
DEST |
+INF |
NaN |
+0 |
-INF |
DEST |
±0 |
+0 |
DEST |
+INF |
NaN |
+I |
-INF |
±F или ±0 |
SRC |
SRC |
+F |
+INF |
NaN |
+F |
-INF |
±F или ±0 |
SRC |
SRC |
+F |
+INF |
NaN |
+INF |
#IA |
+INF |
+INF |
+INF |
+INF |
+INF |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
|
|
|
|
|
|
|
|
I - Конечное целое значение |
|
|
|
|
|
||
F - Конечное вещественное значение |
|
|
|
|
Исключение #IA возникает также, если любой из операндов SNaN или представлен в неподдерживаемом формате.
Операция:
DEST = DEST + SRC;
IF (Команда FADDP) THEN Pop(ST); FI;
Особые ситуации защищенного режима:
#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.
Особые ситуации режима реальной адресации:
#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
#NM, если CR0.EM = 1 или CR0.TS = 1.
Особые ситуации режима V86:
Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.
Замечание:
Некоторые ассемблеры поддерживают для безоперандной версии команды FADDP мнемонику FADD. То есть безоперандная мнемоника всегда вызывает выталкивание из стека верхнего элемента.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru