Nie rozumiem, jak CPU wie, kiedy musi wskazać lub spojrzeć na określone miejsce, w którym przechowywany jest jakiś format instrukcji maszyny? Dokładnie, nie wiem, w jaki sposób CPU wie, które miejsce w pamięci musi umieścić w liczniku programów (zestaw instrukcji), zanim faktycznie zacznie wykonywać tę konkretną instrukcję. Mam nadzieję, że to pytanie nie jest zbyt mylące, ponieważ przegrałem: D
-5
Odpowiedzi:
Właściwie to nie jest takie skomplikowane.
Rejestr licznika programów (aka PC) zawiera adres pamięci (następnej) instrukcji do wykonania (pobrania i).
(Zakładając, że używamy procesora z architekturą stosu).
W przypadku resetowania procesora (np. Po włączeniu zasilania) komputer PC jest automatycznie ładowany z predefiniowanym adresem, który ma być lokalizacją pierwszej instrukcji programu ładującego.
Gdy wykonywana instrukcja jest dowolnym rodzajem operacji rozgałęzienia, skoku lub wywołania, adres docelowy jest obliczany i ładowany do rejestru PC. Następna instrukcja jest (pobierana i) wykonywana z tego adresu docelowego.
Gdy wykonywana instrukcja jest operacją powrotu, adres zwrotny jest wyskakiwany ze stosu i ładowany do rejestru PC. Następna instrukcja jest (pobierana i) wykonywana z tego adresu zwrotnego.
Dla wszystkich innych instrukcji rejestr PC jest po prostu zwiększany (tzn. liczy się „), aby przejść do następnej instrukcji w pamięci. Oznacza to, że instrukcje są (pobierane i) wykonywane sekwencyjnie (dopóki nie zostanie wykonana instrukcja rozgałęzienia lub wystąpi przerwanie).
Jeśli wystąpi przerwanie, to po zakończeniu bieżącej instrukcji zawartość zaktualizowanego rejestru komputera jest wypychana na stos (do późniejszego wykorzystania jako adres zwrotny). Rejestr PC jest załadowany adresem programu obsługi przerwań, który jest następnie wykonywany.
źródło
Po kilku badaniach znalazłem odpowiedź. Na samym początku procesor otrzymuje adres inicjalizacji naszej aplikacji, gdy nasza aplikacja jest uruchomiona, na przykład adres ten jest zwykle 0x00000000 dla infrastruktury 32-bitowej, po tym jak początkowy mikroprogram zaczyna się i na podstawie adresu inicjalizacji dostarcza licznik programu z pamięcią, gdzie instrukcja jest przechowywany. Powiem tylko, że przepraszam, ponieważ tutaj postawiłem skomplikowane pytanie, zanim skończyłem badania. Mam nadzieję, że ktoś uzna to za przydatne.
źródło