m ←Pagina sostituita con '{{S|componenti per computer}} {{F|componenti per computer|marzo 2013|Nessuna fonte}} {{Portale|informatica}} Categoria:Microprocessore'
{{F|componenti per computer|marzo 2013|Nessuna fonte}}
Nell'[[Architettura (computer)|architettura dei calcolatori]], il '''''program counter''''' (spesso abbreviato in '''PC''' e, nelle architetture prive di [[Segmentazione (memoria)|segmentazione]], detto '''''instruction pointer''''') è un [[registro (informatica)|registro]] della [[CPU]] la cui funzione è quella di conservare l'[[indirizzo di memoria]] della prossima [[istruzione (informatica)|istruzione]] (in [[linguaggio macchina]]) da eseguire. È un registro ''puntatore ''cioè 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'' è utilizzato nel [[ciclo di fetch-execute|ciclo ''fetch-execute'']] che costituisce la dinamica fondamentale nel funzionamento di un [[computer]]; tale ciclo è 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 più istruzioni che ''modificano'' esplicitamente il ''program counter'' se vale una certa condizione (per esempio se l'[[accumulatore (informatica)|accumulatore]] ha tutti i [[bit (informatica)|bit]] impostati a 0). Queste istruzioni consentono al programma di "saltare" a una istruzione di [[Programma (informatica)|programma]] che non sia quella immediatamente successiva a quella appena eseguita, e forniscono quindi lo strumento fondamentale sul quale sono realizzate le [[struttura di controllo|strutture di controllo]] dei [[linguaggio di programmazione|linguaggi di programmazione]].