ФЦМОВ

FCMOV — это код операции условного перемещения с плавающей точкой архитектуры Intel x86 , впервые представленный в процессорах Pentium Pro . Он копирует содержимое одного из регистров стека с плавающей точкой, в зависимости от содержимого регистра флага целого числа EFLAGS , в регистр ST(0) (вершина стека). Существует 8 вариантов инструкции, выбираемых кодами условий, которые необходимо установить для инструкции для выполнения перемещения.

Подобно инструкции CMOV , инструкция FCMOV позволяет выполнять некоторые условные операции без обычных накладных расходов на переходы . [1] Однако она имеет большую задержку , чем инструкции условного перехода. [2] Поэтому она наиболее полезна для простых, но непредсказуемых операций сравнения или условных операций, где она может обеспечить существенный прирост производительности.

Инструкция обычно используется вместе с инструкцией FCOMI или идиомой FCOM-FSTSW-SAHF для установки соответствующих кодов условий на основе результата сравнения с плавающей точкой.

Варианты

В этой таблице показаны варианты инструкций FCMOV. [1] Первый операнд всегда является регистром ST(0) (эквивалентно вершине стека с плавающей точкой). Столбец Opcode указывает двухбайтовую последовательность, где второй байт является базовым значением, указывающим номер регистра стека с плавающей точкой для использования во втором операнде. Добавьте нужное число, чтобы завершить соответствующее значение opcode.

Код операцииМнемоническийЗначениеСостояние
ДА С0+iФЦМОВБПереместить, если нижеНабор флагов для переноски
ДА С8+иFCMOVEПереместить, если равноУстановлен нулевой флаг
ДА Д0+иFCMOVBEПереместить, если ниже или равноФлаг переноса или нулевой флаг установлен
ДА Д8+иФЦМОВУПереместить, если не упорядоченоУстановлен флаг четности
БД C0+iФЦМОВНБПереместить, если не нижеФлаг переноса очищен
БД C8+iФЦМОВНЕПереместить, если не равноНулевой флаг снят
БД D0+iFCMOVNBEПереместить, если не ниже или равноФлаг переноса и флаг нуля сняты
ДБ D8+iФЦМОВНУПереместить, если не неупорядоченоФлаг четности очищен

Ссылки

  1. ^ ab Руководство разработчика программного обеспечения для архитектуры Intel, том 2: Справочник по набору инструкций. Доступно для загрузки по адресу [1]
  2. ^ Туман, А: Оптимизация подпрограмм на языке ассемблера. Руководство по оптимизации для платформ x86. Доступно для загрузки на [2]
  • Ресурсы оптимизации программного обеспечения
  • Страница загрузки официального набора инструкций Intel
Взято с "https://en.wikipedia.org/w/index.php?title=FCMOV&oldid=1131546924"