Befehlszähler

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Program Counter)
Wechseln zu: Navigation, Suche

Der Befehlszähler (engl. instruction counter) – auch Programmzähler (wohl wörtlich entlehnt aus dem englischen program counter, kurz PC)[1] oder auch Programmschrittzähler genannt – 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.

Weitere Einzelheiten[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

  1. a b Handbuch PIC24/dsPIC-Mikrocontroller: Praxisbeispiele zur Anwendung der Module und Befehle – Franzis-Verlag, 2014, ISBN 3645652736; siehe auch in der Google-Buchsuche im Abschnitt 1.3.1: Adressierung des Programmspeichers, einmal mit ‚program counter‘ und ein weiteres Mal mit „Programmzeiger“