Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
FCMOVcc
Влияние команды на флаги и форматы команды:
* |
|
|
|
|
|
|
DA C0+i |
FCMOVB ST,ST(i) |
ST(0) = ST(i), если ниже (CF=1) |
Pentium Pro |
DA C8+i |
FCMOVE ST,ST(i) |
ST(0) = ST(i), если равно (ZF=1) |
Pentium Pro |
DA D0+i |
FCMOVBE ST,ST(i) |
ST(0) = ST(i), если ниже или равно (CF=1 или ZF=1) |
Pentium Pro |
DA D8+i |
FCMOVU ST,ST(i) |
ST(0) = ST(i), если неупорядочено (PF=1) |
Pentium Pro |
DB C0+i |
FCMOVNB ST,ST(i) |
ST(0) = ST(i), если выше (CF=0) |
Pentium Pro |
DB C8+i |
FCMOVNE ST,ST(i) |
ST(0) = ST(i), если не равно (ZF=0) |
Pentium Pro |
DB D0+i |
FCMOVNBE ST,ST(i) |
ST(0) = ST(i), если не ниже и не равно (CF=0 или ZF=0) |
Pentium Pro |
DB D8+i |
FCMOVNU ST,ST(i) |
ST(0) = ST(i), если упорядочено (PF=0) |
Pentium Pro |
Описание:
Команды условного переноса проверяют значения флагов в регистре EFLAGS на предмет их соответствия условию, заданному командой. Если условие cc выполняется, производится копирование значения операнда-источника в операнд-назначение. Операндом-источником всегда является элемент регистрового стека ST(i), а операндом-назначением вершина регистрового стека ST(0).
Перед применением команды FCMOVcc программное обеспечение должно проверять, поддерживается ли она конкретной моделью процессора. Это делается с помощью команды CPUID.
Флаги C0, C2, C3 регистра SW после выполнения команды неопределены, флаг C1 устанавливается равным 0 в случае возникновения стековой ошибки #IS.
Операция:
IF condition TRUE
THEN
ST(0) = ST(i);
FI;
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru