Ich weiß nicht, wie die CPU weiß, welchen Speicherplatz sie in den Programmzähler (Befehlssatz) einfügen muss, bevor diese bestimmte Anweisung tatsächlich ausgeführt wird.
Eigentlich ist es nicht so kompliziert.
Das Register des Programmzählers (auch als PC bezeichnet) enthält die Speicheradresse der (nächsten) Anweisung zum (Abrufen und) Ausführen.
(Angenommen, wir verwenden eine CPU mit Stack-Architektur.)
Beim Zurücksetzen des Prozessors (z. B. nach dem Einschalten) wird der PC automatisch mit einer vordefinierten Adresse geladen, von der erwartet wird, dass sie der Ort des ersten Befehls eines Bootstrap-Programms ist.
Wenn der auszuführende Befehl irgendeine Art von Verzweigungs-, Sprung- oder Aufrufoperation ist, wird die Zieladresse berechnet und in das PC-Register geladen. Die nächste Anweisung wird von dieser Zieladresse abgerufen und ausgeführt.
Wenn die ausgeführte Anweisung eine Rückgabeoperation ist, wird die Rücksprungadresse vom Stapel abgehoben und in das PC-Register geladen. Der nächste Befehl wird von dieser Rücksprungadresse ausgeführt (abgerufen und ausgeführt).
Für alle anderen Anweisungen wird das PC-Register einfach inkrementiert (dh " Zählungen "), um zur nächsten Anweisung im Speicher zu gelangen. Das heißt, die Anweisungen werden sequentiell ausgeführt (abgerufen und ausgeführt) (bis eine Anweisung vom Verzweigungstyp ausgeführt wird oder eine Unterbrechung auftritt).
Wenn ein Interrupt auftritt, wird der Inhalt des aktualisierten PC-Registers nach Abschluss des aktuellen Befehls auf den Stack gelegt (zur späteren Verwendung als Rücksprungadresse). Das PC-Register wird mit der Adresse eines Interrupt-Handlers geladen, der dann ausgeführt wird.