Регістр стану (, , ) — це частина процесора, що зберігає важливу інформацію про стан обчислювальної системи, наприклад, біти-прапорці, які характеризують результати виконання арифметичних чи логічних операцій та порівняньDonald D. Givone, Robert P. Roesser Microprocessors/microcomputers An introduction. — McGraw-Hill Book Company, 1980 . Залежно від архітектурних особливостей, вміст регістра стану може бути частиною так званого контексту, що записується в стек при перериванні, або це покладено на плечі програміста.

Часто система команд передбачає спеціальні інструкції для читання та запису бітів регістра стану, оскільки вони застосовуються зі специфічною метою: для зміни природного порядку слідування команд та управління процесором.

Призначення прапорців Прапорці необхідні для визначення шляху виконання та використовуються командами переходів. Наприклад, якщо певна операція дала нульовий результат, виконується одна група інструкцій, інакше — інша. В наведеному нижче прикладі перехід здійснюється за умови активності ознаки нульового результату. MOV AX, 15 MOV BX, 0Fh CMP AX, BX JZ label ; if not zero label: ; if zero

Іншим випадком використання прапорців є управління режимами роботи процесора. Спеціалізовані біти можуть дозволяти чи забороняти переривання, активувати певний режим або керувати процесами.

Найчастіше вживані прапорці В таблиці нижче наведено найбільш вживані ознаки процесорів.

+ Мнемоніка Назва Опис Z Прапорець нуля () Встановлюється, якщо результат арифметичної чи логічної операції рівний нулю. C Прапор переносу () Використовується для додавання/віднімання чисел, більших за розрядну сітку мікропроцесора. Інколи застосовується для збереження витісненого біту при логічних, арифметичних та циклічних зсувах. S Прапорець знаку () Дублює старший біт машинного слова, що зазвичай використовується як знак. N Прапорець негативного результату () Встановлюється, якщо результат арифметичної операції від'ємний. O Прапорець переповнення () Використовується для позначення ситуації, коли двійкове число занадто велике для збереження в регістрі результату.

Інші прапорці Окрім вищезазначених, використовуються наступні прапорці:

+ Мнемоніка Назва Опис P Прапорець парності () Встановлюється, якщо кількість одиниць в результаті останньої операції була парною. I Прапорець переривання () Використовується для заборони/дозволу переривань. S Прапорець супервізора () Означає, що процесор знаходиться в режимі супервізора, і, на відміну від режиму простого користувача, відкрито доступ до спеціальної функціональності, необхідної для операційної системи. A Прапорець часткового переносу () Встановлюється, якщо в результаті останньої арифметичної операції з'явився перенос між тетрадами (між 4 та 5 бітом в байті). Найчастіше використовується для реалізації операції над числами в форматі BCD. F0 та F1 Прапорці користувача Зберігають певні ознаки, доступ забезпечується спеціальними командами.

Регістр стану в різних процесорних архітектурах

Архітектура x86

В даній архітектурі роль регістра стану виконує регістр EFLAGS.

Мікропроцесори RISC Процесори архітектури SPARC мають можливість працювати як з 32-х, так і з 64-х розрядними операндами. Ця архітектура особливість була відображена в регістрі стану (), що складається з двох частин — xcc ( — для 64-х розрядних чисел) та icc (для 32-х розрядних)Sivarama P. Dandamudi Guide to RISC processors for Programmers and Engineers. — Springer Science+Business Media, Inc., 2005. — ISBN 0-387-21017-2. . Якщо ж розглянути чотирибітні половинки цього регістра, то можна помітити, що вони ідентичні і складаються з прапорців переносу, переповнення, нуля та від'ємного результату.

Проте, наприклад, процесори PowerPC мають свої архітектурні особливості. Його 32-х розрядний регістр стану CR () поділяється на 8 чотирибітних груп — CR0..CR7. Кожна з них має в своєму складі біти, що визначають негативний, позитивний, нульовий результат та прапорець переносу. Іншою особливістю даної архітектури є наявність спеціальних бітів (в CR1), що визначають ознаки результату з плаваючою комою.

В архітектурі процесорів ARM існує 6 регістрів стану, що мають 32 біти, проте лише один — CPSR () доступний програмісту в усіх режимах. Він складається з прапорців негативного результату, переповнення, нуля, переносу та заборони переривань, а також зберігає номер режиму, в якому знаходиться процесор (для цього відводиться 5 біт).

Мікроконтролери

Мікроконтролер ATmega103 родини AVR має в своєму складі регістр SREG (), що зберігає 8 прапорців: переносу, нуля, від'ємного результату, переповнення, знаку, переносу між тетрадами, заборони переривань та біт користувачаБродин В. Б., Калинин А. В. Системы на микроконтроллерах и БИС программируемой логики. — М.: ЭКОМ, 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.