FLAGS

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 bitu Skrót Opis Kategoria[a]
FLAGS
0 CF flaga przeniesienia (carry flag) S
1 1 zarezerwowane  
2 PF flaga parzystości (parity flag) S
3 0 zarezerwowane  
4 AF flaga wyrównania (adjust flag) S
5 0 zarezerwowane  
6 ZF flaga zera (zero flag) S
7 SF flaga znaku (sign flag) S
8 TF flaga pracy krokowej (trap flag / single step flag) X
9 IF flaga przerwań (interrupt enable flag) X
10 DF flaga kierunku (direction flag) C
11 OF flaga przepełnienia (overflow flag) S
12, 13 IOPL poziom uprzywilejowania we/wy (I/O privilege level, 286+) X
14 NT flaga zadania zagnieżdżonego (nested task flag; 286+) X
15 0 zarezerwowane  
EFLAGS
16 RF flaga wznowienia (resume flag, 386+) X
17 VM flaga trybu wirtualnego 8086 (virtual 8086 mode flag; 386+) X
18 AC sprawdzenie wyrównania (alignment check; 486SX+) X
19 VIF flaga przerwania wirtualnego (virtual interrupt flag; Pentium+) X
20 VIP oczekujące przerwanie wirtualne (virtual interrupt pending; Pentium+) X
21 ID identyfikacja (identification; Pentium+) X
22 0 zarezerwowane  
23 0 zarezerwowane  
24 0 zarezerwowane  
25 0 zarezerwowane  
26 0 zarezerwowane  
27 0 zarezerwowane  
28 0 zarezerwowane  
29 0 zarezerwowane  
30 0 zarezerwowane  
31 0 zarezerwowane  
RFLAGS
32-63 0 zarezerwowane  

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

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Kembali kehalaman sebelumnya