KWALIFIKACJA INF1 + INF2 + INF8 - CZERWIEC 2011

PYTANIE NR 18.
W którym z rejestrów wewnętrznych procesor zapisuje dodatkowe cechy wyniku wykonywanej operacji?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Dodatkowe cechy wyniku (bity stanu, np. czy wynik jest zerowy, czy wystąpiło przeniesienie lub przepełnienie) są zapisywane w rejestrze flagowym. Licznik rozkazów przechowuje adres następnej instrukcji, wskaźnik stosu – pozycję stosu, a akumulator zwykle sam wynik obliczeń, nie jego cechy.

Pełne wyjaśnienie:

Procesor, wykonując instrukcje arytmetyczne i logiczne, oprócz samej wartości wyniku często potrzebuje informacji opisujących stan tego wyniku. Takie "dodatkowe cechy" to typowo bity informujące m.in. o tym, czy wynik jest równy zero, czy w operacji wystąpiło przeniesienie/pożyczka, czy wynik ma znak ujemny (w reprezentacji ze znakiem) albo czy pojawiło się przepełnienie.

Te informacje są przechowywane w rejestrze flagowym (rejestrze stanu). Dzięki temu kolejne instrukcje mogą na nich pracować, szczególnie instrukcje warunkowe: skoki, porównania i instrukcje ustawiające wartości w zależności od wyniku porównania.

Pozostałe odpowiedzi dotyczą innych ról rejestrów:

  • "W liczniku rozkazów." – licznik rozkazów (program counter) służy do wskazywania adresu następnej instrukcji do pobrania/wykonania. To rejestr sterujący przebiegiem programu, a nie przechowalnia cech wyniku.
  • "We wskaźniku stosu." – wskaźnik stosu przechowuje bieżące położenie stosu, wykorzystywanego np. przy wywołaniach funkcji, przerwaniach i zapisie adresów powrotu. Nie opisuje on wyniku operacji ALU.
  • "W akumulatorze." – akumulator (w ujęciu klasycznym) bywa rejestrem, w którym ląduje wynik operacji, ale pytanie dotyczy dodatkowych cech (flag), a nie samej wartości liczbowej. Cechy te są oddzielone w rejestrze flagowym.

W praktyce egzaminacyjnej warto zapamiętać prostą zasadę: wartość wyniku może trafić do rejestru ogólnego/akumulatora, natomiast informacje o wyniku (warunki, bity stanu) trafiają do flag.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Rejestr flagowy (rejestr stanu) przechowuje bity informujące o cechach wyniku ostatnich operacji, np. czy wynik był zerowy, czy wystąpiło przeniesienie albo przepełnienie. Te bity są potem wykorzystywane przez instrukcje warunkowe i porównania.
Flagi mogą sygnalizować m.in. zero wyniku, przeniesienie/pożyczkę w arytmetyce, znak wyniku w reprezentacji ze znakiem oraz przepełnienie. Dokładny zestaw zależy od architektury, ale idea jest stała: to "metryka" wyniku, nie sam wynik.
Licznik rozkazów służy do sterowania przebiegiem programu: wskazuje adres następnej instrukcji do wykonania. Nie opisuje skutków arytmetyki czy logiki. Cechy wyniku są potrzebne do decyzji warunkowych, więc trafiają do flag, a nie do rejestru adresowego.
Wskaźnik stosu przechowuje adres/bieżącą pozycję stosu, używanego np. przy wywołaniach funkcji, obsłudze przerwań i zapisie kontekstu. To mechanizm pamięciowy i organizacyjny, a nie rejestr opisujący wynik działań ALU, więc nie przechowuje flag stanu.
Akumulator (lub rejestr ogólnego przeznaczenia) zwykle przechowuje wartość wyniku, natomiast dodatkowe cechy (bity stanu) są rozdzielone do rejestru flagowego. Taki podział ułatwia wykonywanie skoków warunkowych i porównań bez "psucia" wartości wyniku.
Najczęściej wtedy, gdy występują instrukcje warunkowe: porównania i skoki zależne od wyniku (np. "jeśli równe", "jeśli większe"). Procesor najpierw ustawia flagi po operacji, a potem kolejna instrukcja interpretuje te bity, aby zdecydować o dalszym przebiegu programu.
Wskazówka: jeśli pytanie dotyczy "cech wyniku", "bitów stanu", "warunków" lub "przepełnienia/przeniesienia", myśl o flagach. Jeśli dotyczy "następnej instrukcji", "adresu rozkazu" lub "przebiegu programu", chodzi o licznik rozkazów.
Wiele debugerów udostępnia podgląd rejestrów, w tym rejestru flagowego, jako zestaw bitów lub nazw flag. Po wykonaniu instrukcji możesz obserwować, które flagi zmieniły stan. To pomaga zrozumieć działanie porównań, skoków warunkowych i błędów arytmetycznych.
Idea flag stanu jest bardzo powszechna, ale implementacja bywa różna: czasem jest to osobny rejestr, czasem część większego rejestru statusowego, a czasem mechanizm rozproszony. Na egzaminach zwykle przyjmuje się klasyczny model: cechy wyniku są w rejestrze flagowym.
Najczęstsze pomyłki to wybieranie rejestru "znanego z nazwy" zamiast zgodnego z funkcją (np. licznik rozkazów), mylenie wartości wyniku z jego cechami (akumulator vs flagi) oraz mieszanie ról rejestrów sterujących (PC, SP) z rejestrem stanu.
info

Około 58% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że dodatkowe cechy wyniku (bity stanu, np. czy wynik jest zerowy, czy wystąpiło przeniesienie lub przepełnienie) są zapisywane w rejestrze flagowym.

Źródła:

  • Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture, rozdział o rejestrze EFLAGS/RFLAGS (Flags Register) oraz opisie flag stanu, wersja dostępna na stronie Intel (dokumentacja architektury).
  • AMD64 Architecture Programmer’s Manual, tom dotyczący rejestru RFLAGS i opisu flag stanu (dokumentacja architektury AMD64).
  • David A. Patterson, John L. Hennessy, "Computer Organization and Design", rozdziały o CPU, ALU, rejestrach i bitach stanu (flagi).

Materiały:

  • Podręcznik z architektury komputerów (rozdziały o rejestrach i jednostce ALU)
  • Dokumentacja architektury x86/x86-64 (opis rejestru EFLAGS/RFLAGS)
  • Ćwiczenia z debugerem (np. śledzenie instrukcji i obserwacja zmian flag)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego