Befehlszähler
Der Befehlszähler, auch Programmzähler (englisch program counter, kurz PC),[1] ist ein spezielles Register innerhalb eines Hauptprozessors, das je nach Systemarchitektur die Speicheradresse des derzeitigen oder des nächsten auszuführenden Befehls enthält. Da dieser Zähler damit auf einen Speicherbereich zeigt, wird er auch als Befehlszeiger (englisch instruction pointer, kurz IP) oder Programmzeiger[1] bezeichnet.
Einzelheiten
Wurde ein Befehl erfolgreich ausgeführt, geht der Hauptprozessor in der Befehlsfolge des Programms weiter: Der Hauptprozessor liest von der im Programmschrittzähler angegebenen Speicheradresse den nächsten Befehl aus, erhöht den Zähler und führt den Befehl aus (vgl. Von-Neumann-Zyklus).
Handelt es sich dabei um einen Sprungbefehl, so wird der Zeiger entsprechend der (explizit oder implizit) angegebenen Sprungadresse gesetzt. Bei einem Sprung mit Rückkehrabsicht (etwa dem Aufruf eines Unterprogramms oder einer Unterbrechungsbehandlungsroutine) wird der Programmschrittzähler in einem bestimmten Register, an einer definierten Stelle im Hauptspeicher oder bei den meisten modernen Prozessorfamilien auf dem Returnstack gesichert und die Verarbeitung an der Einsprungadresse des Unterprogramms fortgesetzt. Nach Beendigung des Unterprogramms wird der Programmschrittzähler innerhalb eines Rücksprungbefehls wieder auf den vorherigen Wert (beispielsweise aus dem Returnstack) zurückgesetzt und damit die Ausführung an der ursprünglichen Stelle des „unterbrochenen“ Programms fortgesetzt.
Einzelbelege
- Handbuch PIC24/dsPIC-Mikrocontroller: Praxisbeispiele zur Anwendung der Module und Befehle – Franzis-Verlag, 2014, ISBN 3-645-65273-6; siehe auch in der Google-Buchsuche im Abschnitt 1.3.1: Adressierung des Programmspeichers, einmal mit ‚program counter‘ und ein weiteres Mal mit „Programmzeiger“