Online: 0x066 (102)
haker.iиfø  — Etyczny hacking_
Spreading knowledge like a virus.

 haker.info Baza wiedzy

Asembler x86/x64 » Rejestry procesora

Rejestr znaczników (flag)

Rejestr znaczników, nazywany też rejestrem flag procesora przechowuje bieżący stan procesora. Można w nim wyróżnić flagi kontrolne, statusu oraz systemowe. W architekturze 16 bitowej rejestr ten miał nazwę FLAGS i miał rozmiar 16 bitów. Natomiast w 32-bitowej był już EFLAGS. A tryb 64 bitowy rozszerzył ten rejestr do 64 bitów i nazywany jest RFLAGS.

Poszczególne znaczniki to po prostu bity. Określenie flagi pasuje tutaj, gdyż określony bit tak jak tradycyjna flaga może być podniesiony (wartość 1) lub opuszczony (wartość 0).

Każda flaga coś sygnalizuje. Można to też porównać do diody, która jest zaświecona lub zgaszona. Bity zaznaczone na szaro są zarezerwowane i jeśli się je odczyta to będą miały wartość zero.

rflags

Przy programowaniu typowych aplikacji w języku Asembler należy znać następujące flagi:

  • CF (ang. carry flag) – flaga przeniesienia. Ustawiana jest, gdy ostatnia operacja arytmetyczna spowodowała przeniesienie (ang. carry) poza najstarszy bit wyniku lub pożyczenie (ang. borrow) z najstarszego bitu wyniku. W przeciwnym wypadku jest zerowana.
  • PF (ang. parity flag) – flaga parzystości. Ustawiana jest, gdy liczba bitów o wartości jeden w najmłodszym bajcie rezultatu niektórych operacji jest parzysta. W przeciwnym wypadku flaga jest zerowana.
  • AF (ang. auxiliary carry flag) – flaga przeniesienia pomocniczego. Ustawiana jest, gdy ostatnia operacja arytmetyczna spowodowała przeniesienie (ang. carry) poza trzeci bit wyniku lub pożyczenie (ang. borrow) z trzeciego bitu wyniku. W przeciwnym wypadku jest zerowana.
  • ZF (ang. zero flag) – flaga zerowa. Ustawiana jest, gdy ostatnia operacja arytmetyczna lub logiczna zwróciła w wyniku wartość zero. W przeciwnym wypadku flaga jest zerowana.
  • SF (ang. sign flag) – flaga znaku. Ustawiana jest, gdy ostatnia operacja arytmetyczna zwróciła liczbę ujemną. W przeciwnym wypadku jest zerowana. W prostych słowach flaga ta jest ustawiana zgodnie z najstarszym bitem wyniku (bitem znaku).
  • DF (ang. direction flag) – flaga kierunku. Ustawiana jest przez programistę, zależnie od tego w którym kierunku chce przetwarzać ciągi znaków (napisy). Związana jest z rozkazami operującymi na napisach.
  • OF (ang. overflow flag) – flaga przepełnienia. Ustawiana jest, gdy ostatnia operacja dała w wyniku wartość, która jest zbyt duża lub zbyt mała, aby zmieścić się w operandzie docelowym. W przeciwnym wypadku jest zerowana.

Pozostałe flagi przedstawione na rysunku to flagi systemowe i raczej nie używa się ich w typowych aplikacjach.

Dawid Farbaniec

Wykaz literatury (bibliografia)

  • Advanced Micro Devices Inc., 2017 – AMD64 Architecture Programmer's Manual
  • Intel Corporation, 2019 – Intel 64 and IA-32 Architectures Software Developer's Manual
  • Randall Hyde, 2010 – Asembler. Sztuka programowania. Wydanie II, ISBN: 9788324628544
Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki oraz politykę prywatności.