Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
FSTP
Влияние команды на флаги и форматы команды:
* |
* |
* |
|
* |
* |
* |
D9 /2 |
FST m32real |
Сохранить ST(0) в m32real |
8087 |
fst dword ptr [di] |
DD /2 |
FST m64real |
Сохранить ST(0) в m64real |
8087 |
fst qword ptr rmdf1 |
DD D0+i |
FST ST(i) |
Сохранить ST(0) в ST(i) |
8087 |
fst ST(3) |
D9 /3 |
FSTP m32real |
Сохранить ST(0) в m32real, верхний элемент выталкивается из регистрового стека |
8087 |
fstp dword ptr [bx] |
DD /3 |
FSTP m64real |
Сохранить ST(0) в m64real, верхний элемент выталкивается из регистрового стека |
8087 |
fstp qword ptr [bp] |
DB /7 |
FSTP m80real |
Сохранить ST(0) в m80real, верхний элемент выталкивается из регистрового стека |
8087 |
fstp tbyte ptr [si] |
DD D8+i |
FSTP ST(i) |
Сохранить ST(0) в ST(i) верхний элемент выталкивается из регистрового стека |
8087 |
fstp ST(5) |
Описание:
Команда FST копирует текущее значение из регистра ST в операнд-назначение, который может быть другим регистром или операндом в памяти в формате короткого или длинного вещественного. Команда FSTP, кроме этого, выталкивает из регистрового стека FPU верхний элемент (ST) и поддерживает также формат временного вещественного для операнда-назначения.
Если операнд-источник — регистр, то данные из этого регистра выбираются прежде, чем происходит выталкивание из стека верхнего элемента.
Команды сохранения в памяти преобразуют пересылаемое значение в формат операнда-назначения в соответствии с полем RC управляющего слова. Если входное значение в ST(0) слишком велико, чтобы быть преобразованным в формат операнда-назначения, возникает исключение #O (в памяти ничего не сохраняется, если это исключение не замаскировано). Если результат преобразования денормализован, исключения #D не возникает — такая ситуация индицируется исключением #U.
Если входное значение в ST(0) равно ±0, ±∞ или NaN, то мантисса не округляется, а обрезается (справа) до размера мантиссы операнда-назначения. Порядок не изменяется; но также обрезается справа. Эти действия сохраняют идентичность значений, как для нулей и бесконечностей, так и для NaN.
Исключение #IA возникает, если операнд-источник SNaN или представлен в неподдерживаемом формате. Исключение #IA не возникает, когда операнд-назначение является не пустым элементом стека.
Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS, а также указывает направление округления в случае возникновения исключения #P (неточный результат): 0 – округление к меньшему, 1 – округление к большему.
Операция:
DEST = ST(0);
IF (Команда FSTP) 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) при невыровненной ссылке в память.
Замечание:
В процессоре Pentium III существуют некоторые ситуации, когда команды FST, FSTP, FIST и FISTP с операндом в памяти не генерируют исключения #P несмотря на проблемы с точностью. Обратитесь к технической документации Intel за описанием всех возможных случаев проявления ошибки. Для однозначного устранения всех предпосылок возникновения этой ошибки используется две команды NOP перед критической командой FPU.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru