logo

Главная Система команд x86 Система команд FPU FST

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

FST

Сохранить вещественное значение

Влияние команды на флаги и форматы команды:

IS

IA

D

Z

O

U

P

*

*

*

 

*

*

*

 

Код

Команда

Описание

Проц.

Пример

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.


Входит в группу команд: Система команд FPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники