Флаг паритета
В компьютерных процессорах флаг четности указывает, является ли число установленных битов нечетным или четным в двоичном представлении результата последней операции. Обычно это один бит в регистре состояния процессора.
Например, предположим, что на машине установлен флаг четности, указывающий на четность. Если бы результатом последней операции было 26 (11010 в двоичном формате), флаг четности был бы равен 0, поскольку количество установленных битов нечетно . Аналогично, если бы результат был 10 (1010 в двоичном формате), то флаг четности был бы равен 1.
процессоры x86
[ редактировать ]В процессорах x86 флаг четности отражает четность только младшего значащего байта результата и устанавливается, если число установленных битов четно (другими словами, бит четности устанавливается, если сумма битов равна даже). Согласно 80386 руководству Intel , флаг четности изменяется в процессорах семейства x86 с помощью следующих инструкций:
- Все арифметические инструкции;
- Инструкция сравнения (эквивалент инструкции вычитания без сохранения результата);
- Логические инструкции – XOR, AND, OR;
- инструкцию TEST (эквивалент инструкции AND без сохранения результата).
- инструкция ПОПФ
- инструкция IRET
- инструкция или прерывание, вызывающее переключение аппаратной задачи
При условных переходах используется флаг четности, где, например, инструкция JP переходит к заданной цели, когда флаг четности установлен, а инструкция JNP переходит, если он не установлен. Флаг также можно прочитать напрямую с помощью таких инструкций, как PUSHF, которая помещает регистр флагов в стек.
Одной из распространенных причин проверки флага четности является проверка несвязанного флага x87-FPU. FPU . имеет четыре флага состояния (от C0 до C3), но их нельзя проверить напрямую, и вместо этого их необходимо сначала скопировать в регистр флагов Когда это происходит, C0 помещается во флаг переноса , C2 — во флаг четности, а C3 — в нулевой флаг . [1] Флаг C2 устанавливается, например, когда несравнимые значения с плавающей запятой ( NaN или неподдерживаемый формат) сравниваются с инструкциями FUCOM.
Ссылки
[ редактировать ]- ^ «Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура» . Январь 2011. стр. 97–98.