October 18 2017 02:46:46
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Виды и мнемокоды условий
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Если при выполнении команд записи в память регистр ST(0) оказывается пустым, содержит NAN, L и число, выходящее за пределы представления в заданном формате, то устанавливается флаг недействительной операции IE = 1 и реализуется прерывание, если значение маски IM = 0. Если установлена маска IM = 1, то прерывание не выполняется. Для команд FIST, FISTP, FBSTP в этом случае в память заносится код неопределенности, представленный в заданном формате: ЦС, КЦ, ДЦ или ДД (см. табл. 2.26).

Команды FCMOVcc выполняют условную пересылку содержимого регистра ST(i) на вершину стека - в регистр ST(0). В качестве условий пересылки (ее) используются значения ряда признаков в регистре EFLAGS (табл. 2.29). При этом мнемокод условия добавляется в качестве суффикса к мнемокоду команды: например, FCMOVB - команда пересылки при значении признака переноса CF = 1.

Команда FXCH производит обмен содержимым регистров ST(0) и ST(i) арифметического стека. Соответственно изменяются и значения тегов для этих регистров. Если в команде FXCH не указан операнд ST(i), то обмен производится между регистрами ST(0) и ST(1), расположенными в верхней части стека. Значение поля ТОР сохраняется неизменным. Если регистры ST(0), ST(i) пустые, то в них помещается код QNAN (не-число), а затем выполняется обмен.

Команды загрузки констант FLDZ, FLD1, FLDPI, FLDL2T, FLDL2T, FLDLG2, FLDLN2 вводят в регистр-вершину стека значения чисел+0.0; +1.0; р(пи); Iog210, log2e, In2, которые хранятся в ПЗУ констант FPU. Эти константы представляются в формате РТ и имеют точность 19 десятичных цифр.

Таблица 2.29 Виды и мнемокоды условий при выполнении команд FCMOVcc

Мнемокод (cc) Условие
В CF=1
NB CF=0
Е ZF=1
NE ZF=0
U PF=1
NU PF=0
BE CF+ZF=1
NBE CF+ZF=0

2.4.4. КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ

Команды этой группы обеспечивают выполнение арифметических операций сложения, вычитания, умножения, деления и ряда других (табл. 2.30).

Один из операндов всегда размещается в верхнем регистре арифметического стека ST(0), второй операнд выбирается из памяти или регистра стека ST(i), номер которого задается байтом MOD/RM. Формат выбираемого из памяти операнда ОТ, ДТ, ДВ, ЦС, КЦ определяется кодом операции. Результат операции размещается в регистрах арифметического стека ST(0) или ST(i).

Таблица 2.30 Команды арифметических операций

Синтаксис команды Операция
FADD m(32,64)real
ST(0),ST(i)
ST(i),ST(0)
m(32,64)+ST(0) ® ST(0)
ST(0)+ST(i) ® ST(0)
ST(0)+ST(i) ® ST(i)
FADDP ST(i),ST(0) ST(0)+ST(1) ® ST(1), освобождение ST(0)
ST(0)+ST(i) ® ST(i), освобождение ST(0)
FIADD m(16,32)int m(16,32)+ST(0) ® ST(0)
FSUB m(32,64)real
ST(0),ST(i)
ST(i),ST(0)
ST(0) - m(32,64) ® ST(0)
ST(0) -ST(i) ® ST(0)
ST(i) - ST(0) ® ST(i)
FSUBP
ST(i),ST(0)
ST(1)-ST(0) ® ST(1), освобождение ST(0)
ST(i)-ST(0) ® ST(i), освобождение ST(0)
FISUB m(16,32)int ST(0)-m(16,32) ® ST(0)
FISUBP
ST(1)-ST(0) ® ST(1), освобождение ST(0)
FMUL m(32,64)real
ST(0),ST(i)
ST(i),ST(0)
ST(0)*m(32,64) ® ST(0)
ST(0)*ST(i) ® ST(0)
ST(0)*ST(i) ® ST(i)
FMULP
ST(i),ST(0)
ST(0)*ST(1) ® ST(1), освобождение ST(0)
ST(0)*ST(i) ® ST(i), освобождение ST(0)
FIMUL m(16,32)int ST(0)*m(16,32) ® ST(0)
FDIV m(32,64)real

ST(i),ST(0)
ST(0) / m(32,64) ® ST(0)
ST(0)/ST(i) ® ST(0)
ST(0)/ST(i) ® ST(i)
FDIVP
ST(i),ST(0)
ST(1)/ST(0) ® ST(1), освобождение ST(0)
ST(i)/ST(0) ® ST(i), освобождение ST(0)
FIDIV m(16,32)int ST(0)/m(16,32) ® ST(0)
FDIVR m(32,64)real
ST(0),ST(i)
ST(i),ST(0)
m(32,64)/ST(0) ® ST(0)
ST(i)/ST(0) ® ST(0)
ST(0)/ST(i) ® ST(i)
FDIVRP
ST(i),ST(0)
ST(0)/ST(1) -> ST(1), освобождение ST(0)
ST(0)/ST(i) ® ST(i), освобождение ST(0)
FIDIVR m(16,32)int m(16,32)/ST(0) ® ST(0)
FPREM FPREM1
ST(0)/ST(1), остаток ® ST(0)
ST(0)/ST(1), остаток (формат IEEE) ® ST(0)
FSQRT
img010
FABS
½ST(0)½ ® ST(0)
FCHS
-ST(0) ® ST(0)

После выполнения операций FADDP, FSUBP, FMULP, FDIVP вершина стека освобождается, т. е. для регистра ST(0) устанавливается значение tag = 11. Содержимое поля ТОР в регистре FPSR увеличивается на единицу, т. е. производится сдвиг вершины стека на один регистр вниз. Соответственно, значение номера i для регистра ST(i) уменьшается на единицу. Например, если операнд выбирается из регистра ST(3), то после выполнения операции и размещения результата в этот регистр его номер относительно новой вершины стека принимает значение ST(2).

Команды обратных операций FSUBR, FSUBRP, FDIVR, FDIVRP обеспечивают изменение порядка следования операндов при вычитании и делении.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,254,928 уникальных посетителей