Jump to content

Регистр состояния

(Перенаправлено с флага процессора )

Регистр состояния , регистр флагов или регистр кода состояния ( CCR собой набор флага битов состояния процессора ) представляет . Примеры таких регистров включают регистр FLAGS в архитектуре x86 , флаги в регистре слова состояния программы (PSW) в архитектуре IBM System/360 через z/Architecture и регистр состояния прикладной программы (APSR) в ARM Cortex-A архитектуре . . [1]

Регистр состояния — это аппаратный регистр , содержащий информацию о состоянии процессора . Отдельные биты неявно или явно считываются и/или записываются инструкциями машинного кода , выполняющимися на процессоре. Регистр состояния позволяет команде выполнять действие в зависимости от результата предыдущей инструкции.

Обычно флаги в регистре состояния изменяются в результате арифметических и битовых операций. Например, бит Z может быть установлен, если результат операции равен нулю, и сброшен, если он не равен нулю. Другие классы инструкций также могут изменять флаги для обозначения статуса. Например, строковая инструкция может делать это, чтобы указать, завершилась ли инструкция из-за того, что она обнаружила совпадение/несовпадение, или потому, что она обнаружила конец строки. Флаги считываются последующей условной инструкцией, так что указанное действие (в зависимости от процессора, переход, вызов, возврат и т. д.) происходит только в том случае, если флаги указывают на указанный результат предыдущей инструкции.

Некоторые архитектуры ЦП, такие как MIPS и Alpha , не используют выделенный регистр флагов. Другие не устанавливают и/или не читают флаги неявно. Такие машины либо вообще не передают неявную информацию о состоянии между инструкциями, либо передают ее в явно выбранном регистре общего назначения.

Регистр состояния часто может иметь и другие поля, такие как более специализированные флаги, биты разрешения прерывания и аналогичные типы информации. Во время прерывания состояние выполняющегося в данный момент потока может быть сохранено (а позже вызвано) путем сохранения текущего значения регистра состояния вместе со счетчиком программы и другими активными регистрами в машинном стеке или какой-либо другой зарезервированной области памяти.

Общие флаги

[ редактировать ]

Это список наиболее распространенных флагов регистров состояния ЦП, реализованных почти во всех современных процессорах.

Флаг Имя Описание
С Нулевой флаг Указывает, что результат арифметической или логической операции (или, иногда, загрузки) равен нулю.
С Нести флаг Позволяет складывать/вычитать числа, превышающие одно слово, путем переноса двоичной цифры от менее значимого слова к наименее значимому биту более значимого слова по мере необходимости. Он также используется для расширения битовых сдвигов и ротации аналогичным образом на многих процессорах (иногда это делается с помощью специального флага X ).
С / Н Знак флага
Отрицательный флаг
Указывает, что результат математической операции отрицательный. В некоторых процессорах [2] Флаги N и S имеют разные значения и способы использования: один указывает, был ли последний результат отрицательным, тогда как другой указывает, имело ли место вычитание или сложение.
В / О / Вт Флаг переполнения Указывает, что результат операции со знаком слишком велик, чтобы поместиться в ширину регистра с использованием представления дополнения до двух .

Другие флаги

[ редактировать ]

На некоторых процессорах регистр состояния также содержит такие флаги:

Флаг Имя Описание
Г / А / ДК Флаг полупереноса
Вспомогательный флаг
Цифровой перенос
Флаг десятичной корректировки
(обычно между 4-битными половинами байтового операнда) произошел перенос битов Указывает, что между полубайтами в результате последней арифметической операции. Такой флаг обычно полезен для реализации арифметических операций BCD на двоичном оборудовании.
П Флаг паритета Указывает, является ли количество установленных битов последнего результата нечетным или четным.
я Флаг прерывания На некоторых процессорах этот бит указывает, разрешены или замаскированы прерывания. [3] Если процессор имеет несколько уровней приоритета прерываний , например PDP-11 , несколько битов могут использоваться для указания приоритета текущего потока, что позволяет прерывать его только аппаратно, установленным на более высокий приоритет. В других архитектурах бит может указывать, что в данный момент активно прерывание и что текущий поток является частью обработчика прерывания .
С Флаг супервизора На процессорах, которые обеспечивают два или более колец защиты , один или несколько битов в регистре состояния указывают кольцо текущего потока (насколько ему доверяют или должен ли он использовать операционную систему для запросов, которые могут помешать другим потокам). На процессоре только с двумя кольцами один бит может отличить режим супервизора от режима пользователя.

Архитектуры ЦП без арифметических флагов

[ редактировать ]

Флаги состояния позволяют инструкции действовать на основе результата предыдущей инструкции. В конвейерных процессорах, таких как суперскалярные и спекулятивные процессоры, это может создавать опасности , которые замедляют обработку или требуют дополнительного оборудования для их обхода. [4]

Некоторые текстовые процессоры с очень длинными командами обходятся без флагов состояния. Одна инструкция одновременно выполняет тест и указывает, по какому результату этого теста следует выполнить действие, например «Сравнить a с и «Перейти к c, если равно». Результат теста не сохраняется для последующих инструкций.

Другая альтернатива регистру состояния заключается в том, что инструкции процессора помещают информацию о состоянии в регистр общего назначения, когда программа ее запрашивает. MIPS , AMD 29000 , DEC Alpha и RISC-V являются примерами архитектур, которые предоставляют инструкции сравнения, которые сохраняют результат сравнения в регистре общего назначения в виде одного бита или числового значения 0 или 1. Условные переходы действуют на основе значение в регистре общего назначения.

Обычно инструкции сравнения проверяют равенство или величину со знаком/без знака. Для проверки других условий программа использует формулу эквивалентности. Например, в MIPS нет «бита переноса», но программа, выполняющая сложение нескольких слов, может проверить, не произошло ли переполнение регистров при сложении одного слова, проверив, меньше ли сумма, чем операнд: [4]

        # alow = blow + clow
	addu	alow, blow, clow
        # set tmp = 1 if alow < clow, else 0
	sltu	tmp, alow, clow
	addu	ahigh, bhigh, chigh
	addu	ahigh, ahigh, tmp

The sltu наборы команд tmp до 1 или 0 на основе указанного сравнения двух других операндов. (Здесь регистр общего назначения tmp не используется в качестве регистра состояния для управления условным переходом; скорее, к старшему слову добавляется возможное значение 1, указывающее на перенос от сложения младшего порядка.)

Эта схема становится менее удобной при сложении трех и более слов, так как при вычислении происходит два сложения. b + c + tmp, любой из которых может генерировать перенос, который должен быть обнаружен с помощью двух sltu инструкции. К счастью, эти два переноса можно добавлять друг к другу без риска переполнения, поэтому ситуация стабилизируется при добавлении пяти инструкций на слово.

См. также

[ редактировать ]
  1. ^ «Информационный центр АРМ» . infocenter.arm.com . Проверено 18 мая 2019 г.
  2. ^ «Руководство по эксплуатации Toshiba 900, глава 3» (PDF) . Архивировано из оригинала (PDF) 15 января 2006 г.
  3. ^ «8-битный микроконтроллер Atmel со встроенной программируемой флэш-памятью 4/8/16/32 КБ — техническое описание» (PDF) . Микрочиповая технология .
  4. ^ Перейти обратно: а б Маши, Джон (4 июня 1996 г.). «Носите биты; ловушка архитектора» . Проверено 5 октября 2013 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c7b10dcf0d0cc67af3d8e5568c9173d2__1671492240
URL1:https://arc.ask3.ru/arc/aa/c7/d2/c7b10dcf0d0cc67af3d8e5568c9173d2.html
Заголовок, (Title) документа по адресу, URL1:
Status register - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)