Artykuł opisuje rejestr stanu w architekturze x86. Ogólne informacje można znaleźć w artykule: rejestr stanu.

FLAGSrejestr procesorów zgodnych z architekturą x86 zaprojektowaną przez Intela w latach 70. XX wieku i modernizowaną do tej pory, na której opiera się zdecydowana większość współczesnych komputerów osobistych.

Nazwa FLAGS dotyczy zwykle 16-bitowego rejestru stanu procesorów do 80286 włącznie. W architekturze IA-32 (od 80386 do najnowszych 32-bitowych procesorów firmy Intel) rejestr ten jest 32-bitowy i nosi nazwę EFLAGS. W procesorach o architekturze 64-bitowej, zgodnej z x86 (x86-64, EM64T) rejestr stanu ma długość 64 bitów, przy czym opisuje się go symbolem RFLAGS.

Poszczególne rodzaje rejestrów są ze sobą zgodne: młodsza część 32-bitowego rejestru EFLAGS jest tożsama z 16-bitowym rejestrem FLAGS, z kolei młodsze 32 bity rejestru RFLAGS są tożsame z rejestrem EFLAGS.

Rejestr stanu architektury x86 firmy Intel
Nr bituSkrótOpisKategoria
FLAGS
0CFflaga przeniesienia (carry flag)S
11zarezerwowane 
2PFflaga parzystości (parity flag)S
30zarezerwowane 
4AFflaga wyrównania (adjust flag)S
50zarezerwowane 
6ZFflaga zera (zero flag)S
7SFflaga znaku (sign flag)S
8TFflaga pracy krokowej (trap flag / single step flag)X
9IFflaga przerwań (interrupt enable flag)X
10DFflaga kierunku (direction flag)C
11OFflaga przepełnienia (overflow flag)S
12, 13IOPLpoziom uprzywilejowania we/wy (I/O privilege level, 286+)X
14NTflaga zadania zagnieżdżonego (nested task flag; 286+)X
150zarezerwowane 
EFLAGS
16RFflaga wznowienia (resume flag, 386+)X
17VMflaga trybu wirtualnego 8086 (virtual 8086 mode flag; 386+)X
18ACsprawdzenie wyrównania (alignment check; 486SX+)X
19VIFflaga przerwania wirtualnego (virtual interrupt flag; Pentium+)X
20VIPoczekujące przerwanie wirtualne (virtual interrupt pending; Pentium+)X
21IDidentyfikacja (identification; Pentium+)X
220zarezerwowane 
230zarezerwowane 
240zarezerwowane 
250zarezerwowane 
260zarezerwowane 
270zarezerwowane 
280zarezerwowane 
290zarezerwowane 
300zarezerwowane 
310zarezerwowane 
RFLAGS
32-630zarezerwowane 

Przykłady

Niżej przedstawiono przykład ustawiania flagi DF (flaga kierunku), czyli jej zmiany z 0 na 1.

  mov bx, 400h  ; ustawienie flagi DF
pushf           ; położenie bieżącej zawartości flag na stos
  pop ax        ; zdjęcie flag ze stosu do rejestru ax
 push ax        ; położenie ich z powrotem na stos celem ich zachowania
  xor ax, bx    ; przełączenie flagi DF z zachowaniem stanu reszty flag
 push ax        ; położenie na stosie nowej zawartości
 popf           ; zdjęcie wartości ze stosu i ustawienie według niej rejestru FLAGS
; … kod …
 popf           ; przywrócenie starej zawartości FLAGS

W zastosowaniach praktycznych do ustawienia i czyszczenia flagi kierunku korzysta się odpowiednio z mnemoników std i cld.

Zobacz też

Uwagi

  1. S: Flaga stanu
    C: Flaga sterowania
    X: Flaga systemowa
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.