In termini di hardware del computer, un registro di istruzione è un elemento nell’unità di elaborazione centrale (CPU) di un computer o altro dispositivo che contiene l’istruzione di programmazione che verrà eseguita all’inizio del ciclo di clock successivo come dettato da altre parti del PROCESSORE. Altri elementi della CPU, come il decodificatore delle istruzioni, si affidano al registro delle istruzioni per contenere queste informazioni in modo che possano essere decodificate, risolte ed eventualmente eseguite. Con alcuni tipi di architettura di microprocessori, può esserci più di un registro di istruzioni in modo che più istruzioni possano essere elaborate contemporaneamente, formando uno stile di logica a catena di montaggio noto come pipeline. Generalmente, le nuove istruzioni vengono fornite al registro delle istruzioni attraverso un’altra parte della CPU nota come contatore di programma, che ha uno scopo molto simile ma può passare all’istruzione successiva mentre vengono eseguite le informazioni che il registro delle istruzioni conserva.
Un registro è una serie di interruttori fisici su un microprocessore o una scheda di circuito che possono essere attivati o disattivati, rendendo ogni interruttore equivalente a un bit. Quando più interruttori, detti anche latch, sono collegati, sono in grado di memorizzare dati binari come numeri, che possono essere trasformati in indirizzi di memoria o codici di istruzione. All’interno della CPU, il registro delle istruzioni può contenere l’indirizzo nella memoria del computer dell’istruzione che viene eseguita o, per efficienza, può contenere l’istruzione stessa. Queste informazioni vengono passate al registro attraverso un altro registro noto come program counter, che nella maggior parte dei casi salta in avanti all’istruzione successiva da eseguire dopo aver passato l’istruzione corrente.
I tipi di istruzioni elaborati dai registri sono generalmente comandi in linguaggio assembly di basso livello che vengono eventualmente tradotti in codice macchina o codice byte. Queste sono nettamente diverse dalle istruzioni nei linguaggi di programmazione di livello superiore, perché le istruzioni di assemblaggio operano su una scala molto piccola e diretta. Un esempio è una riga di codice di alto livello che somma due numeri e memorizza i risultati in una variabile, che richiede solo una singola riga di codice di alto livello per essere espressa. Quando il codice viene compilato, è possibile generare una dozzina o più di istruzioni per completare l’attività, ognuna delle quali è qualcosa di semplice, come mescolare i valori tra la memoria ad accesso casuale (RAM) del computer e un registro di utilità.
Una volta che un’istruzione viene referenziata dal registro delle istruzioni, viene passata al decodificatore dell’istruzione in modo che l’istruzione possa essere convertita in codice macchina. I riferimenti a locazioni di memoria che potrebbero contenere variabili o altre informazioni vengono risolti e tali informazioni vengono talvolta inserite in altri registri. Infine, verrà eseguita l’istruzione vera e propria. Durante questo tempo, il contatore del programma verrà incrementato dalla CPU per puntare all’istruzione successiva che verrà trattenuta dal registro delle istruzioni in modo che il processo possa ripetersi fino all’esecuzione dell’intero programma.