Nell'
architettura dei calcolatori
, il
program counter
(
PC
e, nelle architetture prive di
segmentazione
, detto
instruction pointer
) e un
registro
della
CPU
la cui funzione e quella di conservare l'
indirizzo di memoria
della prossima
istruzione
(in
linguaggio macchina
) da eseguire. E un registro
puntatore
cioe punta a un dato che si trova in memoria all'indirizzo corrispondente al valore contenuto nel registro stesso. Su alcune architetture il
program counter
conserva invece l'indirizzo dell'istruzione in via di esecuzione. Il
program counter
e utilizzato nel
ciclo
fetch-execute
che costituisce la dinamica fondamentale nel funzionamento di un
computer
; tale ciclo e una ripetizione infinita dei seguenti passi:
- caricamento dell'istruzione riferita dal program counter;
- aggiornamento (incremento) del program counter, in modo che contenga l'indirizzo dell'istruzione successiva;
- esecuzione dell'istruzione caricata.
Nel normale ciclo
fetch-execute
, quindi, il
program counter
viene incrementato automaticamente. In aggiunta, tutti i linguaggi macchina forniscono una o piu istruzioni che
modificano
esplicitamente il
program counter
se vale una certa condizione (per esempio se l'
accumulatore
ha tutti i
bit
impostati a 0). Queste istruzioni consentono al programma di "saltare" a una istruzione di
programma
che non sia quella immediatamente successiva a quella appena eseguita, e forniscono quindi lo strumento fondamentale sul quale sono realizzate le
strutture di controllo
dei
linguaggi di programmazione
.