Скачиваний:
57
Добавлен:
16.04.2013
Размер:
349.18 Кб
Скачать

5.3.4. Неарифметические инструкции

Неарифметические инструкции с плавающей точкой всегда используют полную точность регистра с плавающей точкой (82-бита), поэтому они не имеют расширений типа .pcи спецификаторов типа.sf.

Инструкция fclassиспользуется для классификации содержимого регистра с плавающей точкой. Инструкцияfmergeиспользуется для того, чтобы слить данные из двух регистров с плавающей точкой в один такой регистр. Инструкцииfmix, fsxt, fpackи fswapиспользуются для манипулирования параллельнымиFPданными в мантиссе регистра с плавающей точкой. Инструкцииfand, fandcm, forи fxorиспользуются для выполнения логических операций на мантиссе регистра с плавающей точкой. Инструкцияfselectиспользуется для условного выбора.

Псевдооперация fnegпросто реверсирует знаковый бит операнда и поэтому не эквивалентнаIEEEоперации отрицания. Для созданияIEEEоперации отрицания используетсяfnma, где сомножителем должен бытьFR1, а слагаемым –FR0.

В табл. 5.14 перечислены неарифметические инструкции с плавающей точкой, а в табл. 5.15 перечислены неарифметические псевдооперации.

Табл. 5.14. Неарифметические инструкции с плавающей точкой

Операция

Мнемоника

FPклассификация

fclass.fcrel.fctype

FPслияние со знаком

fmerge.s

Параллельное FPслияние со знаком

fpmerge.s

FPслияние с отрицанием знака

fmerge.ns

Параллельное FPслияние с отрицанием знака

fpmerge.ns

Смешивание левых FPчисел

fmix.l

Смешивание правых FPчисел

fmix.r

Смешивание левых и правых FPчисел

fmix.lr

Знак/порядок левого FPчисла

fsxt.l

Знак/порядок правого FPчисла

fsxt.r

Упаковка FPчисел

fpack

Обмен FPчисел

fswap

Обмен и отрицание левого FPчисла

fswap.nl

Обмен и отрицание правого FPчисла

fswap.nr

Логическое И для FP

fand

Логическое И с дополнением для FP

fandcm

Логическое ИЛИ для FP

for

Логическое Исключающее ИЛИ для FP

fxor

Выбор для FP

fselect

Табл. 5.15. Неарифметические псевдооперации с плавающей точкой

Операция

Мнемоника

Что реально используется

Абсолютное FPзначение

fabs

fmerge.sсо знаком изFR0

Абсолютное значение параллельного FP

fpabs

fpmerge.sсо знаком изFR0

FPотрицание

fneg

fmerge.ns

Параллельное FPотрицание

fpneg

fpmerge.ns

FPотрицание абсолютного значения

fnegabs

fmerge.nsсо знаком изFR0

Параллельное FPотрицание абсолютного знач.

fpnegabs

fpmerge.nsсо знаком изFR0

5.3.5. Инструкции поля состояния для регистра состояния с плавающей точкой (fpsr)

Спекуляции операций с плавающей точкой требуют, чтобы флаги состояния были временно сохранены в одном из дополнительных полей состояния (не в FPSR.sf0). После завершения выполнения спекулятивной цепочки, инструкцияfchkfможет быть использована для обновления флагов основного поля состояния (FPSR.sf0.flags). Эта операция сохранит корректностьIEEEфлагов. Инструкцияfchkfделает это путем сравнения флагов поля состояния сFPSR.sf0.flagsиFPSR.traps. Если флаги дополнительного поля состояния указывают, что произошел случай соответствующий разрешенному вFPSR.trapsисключению с плавающей точкой, либо случай, который не был ранее уже зарегистрирован вFPSR.sf0.flags(т.е. вFPSR.sf0.flagsсброшен флажок для этого случая), то инструкцияfchkfвыполняет переход к коду восстановления. Если ни один из этих случаев не произошел, то инструкцияfchkfничего не делает.

Инструкция fsetcпозволяет побитовую модификацию битов управления поля состояния. Чтобы выработать управляющие биты для поля состояния, делается операция И между битами управления поляFPSR.sf0и непосредственным 7-битным значением И-маски, а затем делается операция ИЛИ с непосредственным 7-битным значением ИЛИ-маски. Инструкцияfclrfсбрасывает все флаги поля состояния в ноль.

Табл. 5.16. Инструкции поля состоянияFPSR

Операция

Мнемоника

Проверка FPфлагов

fchkf.sf

Очистка FPфлагов

fclrf.sf

Управление установкой FPфлагов

fsetc.sf