Регістр стану (англ.Program State Word — PSW, англ.Flag Register — RF, англ.Condition Code Register — CCR) — це частина процесора, що зберігає важливу інформацію про стан обчислювальної системи, наприклад, біти-прапорці, які характеризують результати виконання арифметичних чи логічних операцій та порівнянь[1]. Залежно від архітектурних особливостей, вміст регістра стану може бути частиною так званого контексту, що записується в стек при перериванні, або це покладено на плечі програміста.
Часто система команд передбачає спеціальні інструкції для читання та запису бітів регістра стану, оскільки вони застосовуються зі специфічною метою: для зміни природного порядку слідування команд та управління процесором.
Призначення прапорців
Прапорці необхідні для визначення шляху виконання та використовуються командами переходів. Наприклад, якщо певна операція дала нульовий результат, виконується одна група інструкцій, інакше — інша[1]. В наведеному нижче прикладі перехід здійснюється за умови активності ознаки нульового результату.
MOVAX,15MOVBX,0FhCMPAX,BXJZlabel; if not zerolabel:; if zero
Іншим випадком використання прапорців є управління режимами роботи процесора. Спеціалізовані біти можуть дозволяти чи забороняти переривання, активувати певний режим або керувати процесами.
Найчастіше вживані прапорці
В таблиці нижче наведено найбільш вживані ознаки процесорів.
Означає, що процесор знаходиться в режимі супервізора, і, на відміну від режиму простого користувача, відкрито доступ до спеціальної функціональності, необхідної для операційної системи.
Встановлюється, якщо в результаті останньої арифметичної операції з'явився перенос між тетрадами (між 4 та 5 бітом в байті). Найчастіше використовується для реалізації операції над числами в форматі BCD.
F0 та F1
Прапорці користувача
Зберігають певні ознаки, доступ забезпечується спеціальними командами.
Процесори архітектури SPARC мають можливість працювати як з 32-х, так і з 64-х розрядними операндами. Ця архітектура особливість була відображена в регістрі стану (англ.Condition Code Register), що складається з двох частин — xcc (англ.Extended Condition Code — для 64-х розрядних чисел) та icc (для 32-х розрядних)[2]. Якщо ж розглянути чотирибітні половинки цього регістра, то можна помітити, що вони ідентичні і складаються з прапорців переносу, переповнення, нуля та від'ємного результату.
Проте, наприклад, процесори PowerPC мають свої архітектурні особливості. Його 32-х розрядний регістр стану CR (англ.Condition Register) поділяється на 8 чотирибітних груп — CR0..CR7[2]. Кожна з них має в своєму складі біти, що визначають негативний, позитивний, нульовий результат та прапорець переносу. Іншою особливістю даної архітектури є наявність спеціальних бітів (в CR1), що визначають ознаки результату з плаваючою комою[джерело?].
В архітектурі процесорів ARM існує 6 регістрів стану, що мають 32 біти, проте лише один — CPSR (англ.Current Program Status Register) доступний програмісту в усіх режимах[2]. Він складається з прапорців негативного результату, переповнення, нуля, переносу та заборони переривань, а також зберігає номер режиму, в якому знаходиться процесор (для цього відводиться 5 біт).
Мікроконтролер ATmega103 родини AVR має в своєму складі регістр SREG (англ.Status Register), що зберігає 8 прапорців: переносу, нуля, від'ємного результату, переповнення, знаку, переносу між тетрадами, заборони переривань та біт користувача[3].
↑ абDonald D. Givone, Robert P. Roesser Microprocessors/microcomputers An introduction. — McGraw-Hill Book Company, 1980 (англ.)
↑ абвSivarama P. Dandamudi Guide to RISC processors for Programmers and Engineers. — Springer Science+Business Media, Inc., 2005. — ISBN 0-387-21017-2. (англ.)
↑Бродин В. Б., Калинин А. В. Системы на микроконтроллерах и БИС программируемой логики. — М.: ЭКОМ, 2002. — 400 с. — ISBN 5-7163-0089-8. (рос.)
Література
Rafiquzzaman M. Microprocessors and microcomputer development systems. Designing microprocessor-based systems. — Harper & Row, Publishers, Inc., 1984. — ISBN 0-06-045312-5. (англ.)
Жабін В. І., Жуков В. А., Ткаченко В. В., Клименко І. А. Мікропроцесорні системи: Навчальний посібник. — К.: СПД Гуральник О. Ю., 2009. — 492 с. — ISBN 978-966-2340-00-6.