En términos de hardware de computadora, un registro de instrucciones es un elemento en la unidad central de procesamiento (CPU) de una computadora u otro dispositivo que contiene la instrucción de programación que se ejecutará al comienzo del siguiente ciclo de reloj según lo dicten otras partes de la UPC. Otros elementos de la CPU, como el decodificador de instrucciones, se basan en el registro de instrucciones para contener esta información de modo que pueda decodificarse, resolverse y finalmente ejecutarse. Con algunos tipos de arquitectura de microprocesador, puede haber más de un registro de instrucciones, por lo que se pueden procesar varias instrucciones al mismo tiempo, formando un estilo de lógica de línea de montaje que se conoce como canalización. Generalmente, se dan nuevas instrucciones al registro de instrucciones a través de otra parte de la CPU conocida como contador de programa, que tiene un propósito muy similar pero puede avanzar a la siguiente instrucción mientras se ejecuta la información que contiene el registro de instrucciones.
Un registro es una serie de interruptores físicos en un microprocesador o placa de circuito que se puede encender o apagar, lo que hace que cada interruptor sea equivalente a un bit. Cuando varios de los interruptores, también llamados pestillos, están vinculados, pueden almacenar datos binarios como números, que se pueden convertir en direcciones de memoria o códigos de instrucción. Dentro de la CPU, el registro de instrucciones puede contener la dirección en la memoria de la computadora de la instrucción que se está ejecutando o, por razones de eficiencia, puede contener la instrucción en sí. Esta información se pasa al registro a través de otro registro conocido como contador de programa, que en la mayoría de los casos salta a la siguiente instrucción que se ejecutará después de transmitir la instrucción actual.
Los tipos de instrucciones procesadas por los registros generalmente son comandos de lenguaje ensamblador de bajo nivel que eventualmente se traducen a código de máquina o código de bytes. Estos son claramente diferentes de las instrucciones en lenguajes de programación de nivel superior, porque las instrucciones de ensamblaje operan en una escala directa muy pequeña. Un ejemplo es una línea de código de alto nivel que suma dos números y almacena los resultados en una variable, que solo necesita una línea de código de alto nivel para expresarse. Cuando se compila el código, se pueden generar una docena o más de instrucciones para completar la tarea, y cada instrucción es algo simple, como mezclar valores entre la memoria de acceso aleatorio (RAM) de la computadora y un registro de utilidad.
Una vez que el registro de instrucciones hace referencia a una instrucción, se pasa al decodificador de instrucciones para que la instrucción se pueda convertir en código de máquina. Las referencias a ubicaciones de memoria que pueden contener variables u otra información se resuelven y esa información a veces se coloca en otros registros. Finalmente, se ejecutará la instrucción real. Durante este tiempo, el contador del programa será incrementado por la CPU para apuntar a la siguiente instrucción que será retenida por el registro de instrucción para que el proceso pueda repetirse hasta que se haya ejecutado todo el programa.