Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лекция №6. Работа с сопроцессором. Команды для работы с FPU. Работа с FPU.Содержание книги
Поиск на нашем сайте
Вещественные форматы, используемые в процессорах Intel: · короткое вещественное ( Single ): бит 31 — знак мантиссы, биты 30 –23 — 8-битный порядок + 127 (27-1), биты 22–0 — 23-битная мантисса без первой цифры; · длинное вещественное ( Double ): бит 63 — знак мантиссы, биты 62–52 — 11-битный порядок + 1023 (210-1), биты 51 – 0 — 52-битная мантисса без первой цифры; · расширенное вещественное ( Extended ): бит 79 — знак мантиссы, биты 78–64 — 15-битный порядок + 16 383 (214-1), биты 63–0 — 64-битная мантисса с первой цифрой (то есть бит 63 равен 1). Регистры FPU FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров. Регистры данных (R0 – R7) рассматриваются как стек, вершина которого называется ST(0), а более глубокие элементы — ST(1), ST(2) и так далее до ST(7).
Рис. 13. Регистры FPU
К регистрам R0 – R7 нельзя обращаться напрямую, по именам, но если процессор поддерживает расширение ММХ, то мантиссы, находящиеся в этих регистрах, становятся доступны, как ММ0 – ММ7. Регистр состояний SR содержит слово состояния FPU: Регистр управления CR: Биты 15 – 13 — зарезервированы. Бит 12 «IC» — управление бесконечностью (поддерживается для совместимости с 8087 и 80287 — вне зависимости от значения этого бита > ). Биты 11 – 10 «RC» — управление округлением. Биты 9 – 8 «PC» — управление точностью. Биты 7 – 6 — зарезервированы. Бит 5 «РМ» — маска неточного результата. Бит 4 «UM» — маска антипереполнения. Бит 3 «ОМ» — маска переполнения. Бит 2 «ZM» — маска деления на ноль. Бит 1 «DM» — маска денормализованного операнда. Бит 0 «IM» — маска недействительной операции. Биты RC определяют способ округления результатов команд FPU до заданной точности (табл. 10). Таблица 10. Способы округления
Биты PC определяют точность результатов команд FADD, FSUB, FSUBR, FMUL, FDIV, FDIVR и FSQRT (табл. 11). Таблица 11. Точность результатов
Регистр тегов TW содержит восемь пар бит, описывающих содержание каждого регистра данных. Регистры FIP и FDP содержат адрес последней выполненной команды (кроме FINIT, FCLEX, FLDCW, FSTCW, FSTSW, FSTSWAX, FSTENV, FLDENV, FSAVE, FRSTOR и FWAIT) и адрес ее операнда соответственно и используются в обработчиках исключений для анализа вызвавшей его команды. Команды пересылки данных FPU 1)
Команда помещает в стек содержимое источника (32-, 64- или 80-битная переменная или ST(n)). Команда FLD ST(0) делает копию вершины стека.
2)
Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой).
3)
Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат и помещает в вершину стека.
4)
Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой).
5)
Обмен местами содержимого регистра ST(0) и приёмника (регистр ST(n)). Если операнд не указан, обменивается содержимое ST(0) и ST(1). Базовая арифметика FPU Сопроцессор использует шесть основных типов арифметических команд:
Строка "xxx" может принимать следующие значения: ADD Сложение
SUB Вычитание
SUBR Обратное вычитание, уменьшаемое и вычитаемое меняются местами
MUL Умножение
DIV Деление
DIVR Обратное деление, делимое и делитель меняются местами 1)
Команда выполняет сложение источника и приемника и помещает результат в приемник. Команда FADDP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды сложения могут принимать следующие формы: · FADD источник, когда источником является 32- или 64-битная переменная, а приемником — ST(0); · FADD ST(0),ST(n), FADD ST(n),ST(0), FADDP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU; · FADD без операндов — эквивалентно FADD ST(0),ST(1); FADDP без операндов — эквивалентно FADDP ST(1),ST(0); · FIADD источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0). 2)
Выполняет вычитание источника из приемника и сохраняет результат в приемнике. Команда FSUBP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды вычитания могут принимать следующие формы: · FSUB источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0); · FSUB ST(0),ST(n), FSUB ST(n),ST(0), FSUBP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU; · FSUB без операндов — эквивалентно FSUB ST(0),ST(1); FSUBP без операндов — эквивалентно FSUBP ST(1),ST(0); · FISUB источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0). Если один из операндов — бесконечность, результат — бесконечность соответствующего знака. Если оба операнда — бесконечности одного знака, результат не определен (происходит исключение «недопустимая операция»). 3)
Команды эквивалентны FSUB/FSUBP/FISUB, но выполняют вычитание приемника из источника, а не источника из приемника. 4)
Выполняет умножение источника и приемника и помещает результат в приемник. Команда FMULP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды умножения могут принимать следующие формы: · FMUL источник, когда источником является 32- или 64-битная переменная, а приемником — ST(0); · FMUL ST(0),ST(n), FMUL ST(n),ST(0), FMULP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU; · FMUL без операндов — эквивалентно FMUL ST(0),ST(1); FMULP без операндов — эквивалентно FMULP ST(1),ST(0); · FIMUL источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0). 5)
Выполняет деление приемника на источник и сохраняет результат в приемнике. Команда FDIVP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды могут принимать следующие формы: · FDIV источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0); · FDIV ST(0),ST(n), FDIV ST(n),ST(0), FDIVP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU; · FDIV без операндов — эквивалентно FDIV ST(0),ST(1); FDIVP без операндов — эквивалентно FDIVP ST(1),ST(0); · FIDIV источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0). 6)
Изменяет знак ST(0), превращая положительное число в отрицательное, и наоборот. 7)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 365; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.95.236 (0.007 с.) |