FLAGS
- Artykuł opisuje rejestr stanu w architekturze x86. Ogólne informacje można znaleźć w artykule: rejestr stanu.
FLAGS – rejestr 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.
| 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
- ↑ 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.
- 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:
- 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.
- 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.
- 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.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.