Online: 0x03A (58)
haker.info  — 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.