- •А) Структура данных fstenv в 16- и 32-разрядном защищенном режиме
- •Примерная схема взаимодействия cpu и npu, при решении на них произвольной смеси команд
- •6.4. Базовые арифметические команды
- •6.5. Команды сравнения
- •6.6. Трансцендентные команды
- •6.7. Команды загрузки констант
- •6.8. Команды управления мсп
6.4. Базовые арифметические команды
Арифметические команды выполняют такие операции, как сложение, вычитание, умножение, деление, извлечение квадратного корня, нахождение частичного остатка, округление и т.п. В табл. 5 представлены базовые арифметические команды.
Базовые арифметические команды Таблица 5
БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ |
|||
Команда |
Описание |
Формальное описание |
Примечание |
FADD m32fp
FADD m64fp
FADD ST(0), ST(i)
FADD ST(i), ST(0)
FADDP ST(i),ST(0)
|
сложить с вещественным
сложить и вытолкнуть
|
ST(0) ST(0)+m32fp
ST(0) ST(0)+m64fp
ST(0) ST(0)+ST(i)
ST(i) ST(i)+ST(0)
ST(i) ST(i)+ST(0) TOP TOP + 1
|
ВВ + (ВВ КВ)
ВВ + (ВВ ДВ)
|
Продолжение таблицы 5
FADDP
FIADD m16int
FIADD m32int |
сложить с целым
|
ST(1) ST(1)+ST(0) TOP TOP + 1
ST(0) ST(0) + m16int
ST(0) ST(0) + m32int |
ВВ + (ВВ ЦС)
ВВ + (ВВ КЦ) |
|
FSUB m32fp
FSUB m64fp
FSUB ST(0), ST(i)
FSUB ST(i), ST(0)
FSUBP ST(i),ST(0)
FSUBP
FISUB m16int
FISUB m32int
|
вычесть вещественное
вычесть и вытолкнуть
вычесть целое
|
ST(0) ST(0) - m32fp
ST(0) ST(0) - m64fp
ST(0) ST(0) - ST(i)
ST(i) ST(i) - ST(0)
ST(i) ST(i) - ST(0) TOP TOP + 1
ST(1) ST(1) - ST(0) TOP TOP + 1
ST(0) ST(0) - m16int
ST(0) ST(0) - m32int |
ВВ - (ВВ КВ)
ВВ - (ВВ ДВ)
ВВ - (ВВ ЦС)
ВВ - (ВВ КЦ) |
|
FSUBR m32fp
FSUBR m64fp
FSUBR ST(0), ST(i)
FSUBR ST(i), ST(0)
FSUBRP ST(i),ST(0)
FSUBRP |
вычесть вещественное с реверсом
вычесть с реверсом и вытолкнуть
|
ST(0) m32fp – ST(0)
ST(0) m64fp – ST(0)
ST(0) ST(i) - ST(0)
ST(i) ST(0) - ST(i)
ST(i) ST(0) - ST(i) TOP TOP + 1
ST(1) ST(0) - ST(1) TOP TOP + 1
|
(ВВ КВ) - ВВ
(ВВ ДВ) - ВВ
|
|
FISUBR m16int
FISUBR m32int
|
вычесть целое с реверсом
|
ST(0) m16int – ST(0)
ST(0) m32int – ST(0) |
(ВВ ЦС) - ВВ
(ВВ КЦ) - ВВ |
|
FMUL m32fp
FMUL m64fp
FMUL ST(0), ST(i)
FMUL ST(i), ST(0)
FMULP ST(i),ST(0)
|
умножить вещественное
умножить и вытолкнуть |
ST(0) ST(0) * m32fp
ST(0) ST(0) * m64fp
ST(0) ST(0) * ST(i)
ST(i) ST(i) * ST(0)
ST(i) ST(i) * ST(0) TOP TOP + 1 |
ВВ * (ВВ КВ)
ВВ * (ВВ ДВ)
|
|
Продолжение табл. 5
БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ |
|||
Команда |
Описание |
Формальное описание |
Примечание |
FMULP
FIMUL m16int
FIMUL m32int |
умножить целое
|
ST(1) ST(1) * ST(0) TOP TOP + 1
ST(0) ST(0) * m16int
ST(0) ST(0) * m32int |
ВВ * (ВВ ЦС)
ВВ * (ВВ КЦ) |
FDIV m32fp
FDIV m64fp
FDIV ST(0), ST(i)
FDIV ST(i), ST(0)
FDIVP ST(i),ST(0)
FDIVP
FIDIV m16int
FIDIV m32int
|
делить вещественное
делить и вытолкнуть
делить целое
|
ST(0) ST(0) / m32fp
ST(0) ST(0) / m64fp
ST(0) ST(0) / ST(i)
ST(i) ST(i) / ST(0)
ST(i) ST(i) / ST(0) TOP TOP + 1
ST(1) ST(1) / ST(0) TOP TOP + 1
ST(0) ST(0) / m16int
ST(0) ST(0) / m32int |
ВВ / (ВВ КВ)
ВВ / (ВВ ДВ)
ВВ / (ВВ ЦС)
ВВ / (ВВ КЦ) |
FDIVR m32fp
FDIVR m64fp
FDIVR ST(0), ST(i)
FDIVR ST(i), ST(0) |
делить вещественное с реверсом
|
ST(0) m32fp / ST(0)
ST(0) m64fp / ST(0)
ST(0) ST(i) / ST(0)
ST(i) ST(0) / ST(i) |
(ВВ КВ) / ВВ
(ВВ ДВ) / ВВ
|
FDIVR m32fp
FDIVR m64fp
FDIVR ST(0), ST(i)
FDIVR ST(i), ST(0)
FDIVRP ST(i),ST(0)
FDIVRP
FIDIVR m16int
FIDIVR m32int
|
делить вещественное с реверсом
делить с реверсом и вытолкнуть
делить целое с реверсом
|
ST(0) m32fp / ST(0)
ST(0) m64fp / ST(0)
ST(0) ST(i) / ST(0)
ST(i) ST(0) / ST(i)
ST(i) ST(0) / ST(i) TOP TOP + 1
ST(1) ST(0) / ST(1) TOP TOP + 1
ST(0) m16int / ST(0)
ST(0) m32int / ST(0) |
(ВВ КВ) / ВВ
(ВВ ДВ) / ВВ
(ВВ ЦС) / ВВ
(ВВ КЦ) / ВВ |
Окончание таблицы 5
БАЗОВЫЕ АРИФМЕТИЧЕСКИЕ КОМАНДЫ |
|||
Команда |
Описание |
Формальное описание |
Примечание |
FPREM |
частичный остаток в стиле МСП i8087
|
q = ОЦУ0 [ST(0) / ST(1)] ST(0) ST(0) – (q*ST(1)) |
ОЦУ0 - округление до целого путем усечения к нулю |
FPREM1 |
частичный остаток в стиле стандарта IEEE
|
q = ОБЦ [ST(0) / ST(1)] ST(0) ST(0) – (q*ST(1)) |
ОБЦ - округление до ближайшего целого |
FABS |
модуль |
ST(0) | ST(0) | |
очищает знак в ST(0)
|
FCHS
|
изменить знак |
sb(ST(0)) not (sb(ST(0)) |
sb – SignBit |
FRNDINT |
округлить до целого
|
ST(0) ОЦ (ST(0)) |
ОЦ – округлить до целого |
FSCALE |
возвести в степень |
ST(0) ST(0)*2ОЦУ0 [ST(1)] |
ОЦУ0 - округление до целого путем усечения к нулю
|
FSQRT |
квадратный корень
|
ST(0) SquareRoot (ST(0)) |
|
FXTRACT |
выделение мантиссы и порядка |
temp мантисса (ST(0)) ST(0) порядок (ST(0)) TOP TOP – 1 ST(0) temp |
|
