October 18 2017 12:24:33
Навигация
Авторизация
Логин

Пароль



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

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

Команды этой группы реализуют операции загрузки, записи в память, обмена и загрузки констант (табл. 2.28).

Команды загрузки FLD, FILD, FBLD служат для передачи данных (вещественных чисел — real, целых чисел - int, двоично-десятичных чисел - bed) в ST(0) - верхний регистр арифметического стека FPU. Перед загрузкой производится декремент содержимого поля ТОР в регистре состояния FPSR, т. е. вершина стека перемещается на один регистр вверх. При этом проверяется значение тега для регистра, ставшего новой вершиной стека. Если для него значение tag = 11, т. е. этот регистр пустой, то производится его загрузка из адресуемой ячейки памяти или регистра ST(i), номер которого i указан в байте MODR/M команды. После загрузки в поле tag устанавливается код, соответствующий значению поступившего числа. Отметим, что регистр ST(i) после выполнения команды увеличивает свой номер на единицу, как и все остальные регистры арифметического стека. Если значение tag = 11, т. е. регистр не пустой, то устанавливается флаг 1Е=1 в регистре FPSR, указывающий на выполнение недействительной операции. Если этот флаг не маскирован, т. е. в регистре FPCR бит маски IM = 0, то загрузка не производится, и реализуется исключение типа #MF («ошибка FPU»). Загружаемые числа, принимаемые в форматах ОТ, ДТ (команда FLD), ЦС, КС, ДЦ (команда FILD), DD (команда FBLD), заносятся в арифметический стек в формате РТ.

Команды записи в память FST, FIST используются для передачи содержимого ST(0) в память с преобразованием данных из внутреннего формата РТ в ОТ, ДТ или ЦС, КЦ. При этом значение поля ТОР в регистре FPSR не меняется, т. е. состояние стека сохраняется. Команда FST позволяет также переписать содержимое ST(0) в любой другой регистр стека ST(i).

Команды записи с выталкиванием из стека FSTP, FISTP, FBSTP после передачи содержимого осуществляют инкремент значения ТОР в регистре FPSR. Таким образом, вершина арифметического стека перемещается на один регистр вниз. Для регистра ST(0), служившего старой вершиной стека, устанавливается значение tag = 11 (пусто), т. е. он освобождается. Отметим, что регистр ST(i) после команды FSTP также уменьшает свой номер i на единицу, как и остальные регистры стека. Если в этой команде задать ST(i) = ST(0), то выполняется сокращение заполненного стека без сохранения содержимого вершины. В соответствии с кодом команды выбираемые из стека числа преобразуются из формата РТ в форматы ОТ, ДТ (команда FSTP), ЦС, КЦ, ДЦ (команда FISTP), ДД (команда FBSTP). При этом производится округление чисел в соответствии со значением поля RC в регистре FPSR. Исключение составляет команда FBSTP, которая независимо от значения RC осуществляет округление путем прибавления числа 0,5 и отбрасывания дробной части.

Таблица 2.28 Команды пересылки данных FPU

Синтаксис команды Операция
FLD m(32,64,80) real m(32,64,80) ® ST(0)

ST(i) ST(i) ® ST(0)
FILD m(16,32,64)int m(16,32,64) ® ST(0)
FBLD m80bcd m80 ® ST(0)
FST m(16,32)real ST(0) ® m(32,64)

ST(i) ST(0) ® ST(')
FSTP m(32,64,80)real ST(0) ® 171(32,64,80), освобождение ST(0)

ST(i) ST(0) ® ST(i), освобождение ST(0)
FIST m(16,32)int ST(0) ® m(16,32)
FISTP m(16,32,64)int ST(0) ® m(16,32,64), освобождение ST(0)
FBSTP m80bcd ST(0) ® m80, освобождение ST(0)
FCMOVcc ST(0), ST(i) ST(i) ® ST(0), если (ее) = 1
FXCH
ST(0) ® ST(1)
FXCH ST(i) ST(0) ® ST(i)
FLDZ
0 ® ST(0)
FLDL
1 ® ST(0)
FLDPI
p ® st(0)
FLDL2T
log210 ® ST(0)
FLDL2E
log2e ® ST(0)
FLDLG2
lg2 ® ST(0)
FLDLN2
ln2 ® ST(0)

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

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

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

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