În ceea ce privește hardware-ul computerului, un registru de instrucțiuni este un element din unitatea centrală de procesare (CPU) a unui computer sau alt dispozitiv care deține instrucțiunea de programare care va fi executată la începutul următorului ciclu de ceas, așa cum este dictat de alte părți ale CPU. Alte elemente ale CPU, cum ar fi decodorul de instrucțiuni, se bazează pe registrul de instrucțiuni pentru a păstra aceste informații, astfel încât să poată fi decodificate, rezolvate și eventual executate. Cu unele tipuri de arhitectură de microprocesor, poate exista mai mult de un registru de instrucțiuni, astfel încât mai multe instrucțiuni pot fi procesate în același timp, formând un stil logic de linie de asamblare care este cunoscut sub numele de conductă. În general, instrucțiuni noi sunt date registrului de instrucțiuni printr-o altă parte a procesorului cunoscută sub numele de contor de programe, care servește un scop foarte similar, dar poate trece înainte la următoarea instrucțiune în timp ce informațiile pe care le deține registrul de instrucțiuni sunt executate.
Un registru este o serie de comutatoare fizice pe un microprocesor sau o placă de circuite care pot fi pornite sau oprite, făcând fiecare comutator echivalent cu un bit. Atunci când mai multe dintre comutatoare, numite și zăvoare, sunt conectate, acestea sunt capabile să stocheze date binare, cum ar fi numere, care pot fi transformate în adrese de memorie sau coduri de instrucțiuni. În interiorul CPU, registrul de instrucțiuni poate deține fie adresa în memoria computerului a instrucțiunii care se execută, fie, pentru eficiență, poate deține instrucțiunea în sine. Aceste informații sunt transmise registrului printr-un alt registru cunoscut sub numele de contor de program, care în cele mai multe cazuri sare înainte la următoarea instrucțiune care urmează să fie executată după transmiterea instrucțiunii curente.
Tipurile de instrucțiuni procesate de registre sunt, în general, comenzi în limbaj de asamblare de nivel scăzut, care sunt în cele din urmă traduse în cod mașină sau cod octet. Acestea sunt net diferite de instrucțiunile din limbaje de programare de nivel superior, deoarece instrucțiunile de asamblare funcționează la o scară foarte mică, directă. Un exemplu este o linie de cod de nivel înalt care adună două numere și stochează rezultatele într-o variabilă, care necesită o singură linie de cod de nivel înalt pentru a se exprima. Când codul este compilat, ar putea fi generate o duzină sau mai multe instrucțiuni pentru a finaliza sarcina, fiecare instrucțiune fiind ceva simplă, cum ar fi amestecarea valorilor între memoria cu acces aleatoriu (RAM) a computerului și un registru de utilitate.
Odată ce o instrucțiune este referită de registrul de instrucțiuni, aceasta este transmisă decodorului de instrucțiuni, astfel încât instrucțiunea să poată fi convertită în cod de mașină. Referințele la locațiile de memorie care ar putea deține variabile sau alte informații sunt rezolvate și acele informații sunt uneori plasate în alte registre. În cele din urmă, instrucțiunea propriu-zisă va fi executată. În acest timp, contorul de programe va fi incrementat de CPU pentru a indica următoarea instrucțiune care va fi reținută de registrul de instrucțiuni, astfel încât procesul să se poată repeta până când întregul program este executat.