ФКМОВ
FCMOV условного перемещения с плавающей запятой — это код операции архитектуры Intel x86 , впервые представленный в процессорах Pentium Pro . Он копирует содержимое одного из регистров стека с плавающей запятой, в зависимости от содержимого регистра целочисленного флага EFLAGS , в регистр ST(0) (верхняя часть стека). Существует 8 вариантов инструкции, выбранных по кодам условий, которые необходимо задать, чтобы инструкция выполнила ход.
Подобно инструкции CMOV , FCMOV позволяет выполнять некоторые условные операции без обычных затрат на ветвление . [ 1 ] Однако у него более высокая задержка , чем у инструкций условного перехода. [ 2 ] Поэтому он наиболее полезен для простого, но непредсказуемого сравнения или условных операций, где он может обеспечить существенный прирост производительности.
Инструкция обычно используется с инструкцией FCOMI или идиомой FCOM - FSTSW - SAHF для установки соответствующих кодов условий на основе результата сравнения с плавающей запятой.
Варианты
[ редактировать ]В этой таблице показаны варианты инструкций FCMOV. [ 1 ] Первым операндом всегда является регистр ST(0) (эквивалент вершины стека с плавающей запятой). Столбец «Код операции» указывает двухбайтовую последовательность, где второй байт — это базовое значение, указывающее номер регистра стека с плавающей запятой, который будет использоваться для второго операнда. Добавьте желаемое число, чтобы завершить соответствующее значение кода операции.
Код операции | Мнемоника | Значение | Состояние |
---|---|---|---|
ИЗ C0+i | ФКМОВБ | Переместитесь, если ниже | флагов для переноски Набор |
ИЗ C8+i | FCMOVE | Переместить, если равно | Установлен нулевой флаг |
ДА D0+я | ФКМОВБЕ | Переместить, если ниже или равно | Флаг переноса или флаг нуля. |
ДА D8+я | ФКМОВУ | Переместить, если не упорядочено | флаг четности Установлен |
БД C0+i | ФКМОВНБ | Переместить, если не ниже | Флаг переноса снят |
БД C8+i | ФЦМОВНЕ | Переместить, если не равно | Флаг нуля снят. |
БД Д0+я | ФКМОВНБЕ | Переместить, если не ниже или равно | Флаг переноса и флаг нуля очищены. |
БД D8+i | ФЦМОВНУ | Переместить, если не упорядочено | Флаг четности снят. |
Ссылки
[ редактировать ]- ^ Jump up to: а б Руководство разработчика программного обеспечения для архитектуры Intel, том 2: Справочник по набору команд. Доступно для скачивания по адресу [1]
- ^ Туман, А: Оптимизация подпрограмм на языке ассемблера. Руководство по оптимизации для платформ x86. Доступно для скачивания по адресу [2]