Rejestr stanu
Operacja wykazu
Rejestr stanu lub rejestr flag (niepoprawnie: rejestr statusu) – rejestr procesora opisujący i kontrolujący jego stan. Zawartość tego rejestru może zależeć od ostatnio wykonanej operacji (zmiana pośrednia), bądź trybu pracy procesora, który można ustawiać (zmiana bezpośrednia). Budowa rejestru stanu zależy od modelu programowego danego procesora, w szczególności może on mieć różne rozmiary (zwykle jest to ściśle związane z rodzajem architektury), jednak zwykle ma długość będąca wielokrotnością bajtu, czyli najczęściej oktetu: 8, 16, 32 lub 64 bitów. Pojedynczy bit rejestru stanu nazywa się flagą bądź znacznikiem.
Popularne flagi
edytujFlaga | Nazwa | Opis |
---|---|---|
Z | Flaga zera (zero flag) | Wskazuje, że wynikiem operacji arytmetycznej bądź logicznej było zero. |
C | Flaga przeniesienia (carry flag) | Wskazuje, że wynik operacji zawiera się w większej niż dostępna liczbie bitów (flaga ta może być ustawiona przed operacjami arytmetycznymi jako dodatkowy argument pewnych instrukcji, np. „dodawania z przeniesieniem”). |
X | Flaga rozszerzenia (extend flag) | Ustawiona maskuje żądanie XIRQ. Jest ustawiana przez sprzęt i czyszczona przez oprogramowanie, ponadto jest ustawiana także przez niemaskowalne XIRQ. |
S / N | Flaga znaku / ujemności (sign flag / negative flag) | Wskazuje, że wynik operacji arytmetycznej był ujemny. W niektórych procesorach[1] flagi N i S mają różne znaczenia: flaga S wskazuje, czy zaszło odejmowanie lub dodawanie, z kolei flaga N wskazuje, czy ostatnia operacja była nieujemna, czy ujemna. |
V / O / W | Flaga przepełnienia (overflow flag) | Wskazuje, czy wynik operacji powoduje przepełnienie reprezentacji słowa procesora; flaga podobna do flagi przeniesienia, jednak odnosi się do operacji ze znakiem. |
I / E | Flaga przerwania (interrupt enable flag) | Ustawienie lub wyczyszczenie flagi umożliwia włączenie bądź wyłączenie przerwań; zmiana tej flagi może być ograniczona do programów działających w trybie nadzorcy (supervisor mode). |
P | Flaga parzystości (parity flag) | Wskazuje parzystość liczby ustawionych bitów wyniku. |
D / T | Flaga pracy krokowej (debug flag / trap flag) | Określa, czy po każdej wykonanej instrukcji generowany jest specjalne przerwanie śledzące bądź wyjątek; flaga wykorzystywana jest w implementowaniu debuggerów kodu. |