Der Befehlszähler, auch Programmzähler (englisch program counter, kurz PC), ist ein Register innerhalb eines Hauptprozessors, das je nach Systemarchitektur die Speicheradresse des derzeitigen oder des nächsten Befehls enthält. Da er damit auf einen Speicherbereich zeigt, wird er auch als Befehlszeiger (englisch instruction pointer, kurz IP) oder Programmzeiger bezeichnet.
Einzelheiten
Wurde ein Befehl erfolgreich ausgeführt, geht der Hauptprozessor in der Befehlsfolge des Programms weiter: Der Hauptprozessor liest von der im Programmzä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 auf die angegebenen Sprungadresse gesetzt. Bei einem Sprung mit Rückkehrabsicht (etwa dem Aufruf eines Unterprogramms oder einer Unterbrechungsroutine) wird der Programmschrittzähler in einem bestimmten Register, an einer definierten Stelle im Hauptspeicher oder bei den meisten modernen Prozessorfamilien auf dem Stack gesichert und die Verarbeitung an der Einsprungadresse des Unterprogramms fortgesetzt. Nach Beendigung des Unterprogramms wird der Programmzähler durch einen Rücksprungbefehl wieder auf den gespeicherten Wert zurückgesetzt und damit die Ausführung an der ursprünglichen Stelle des „unterbrochenen“ Programms fortgesetzt.
Einzelbelege
- 1 2 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“