1. One of a small number of high-speed memory locations in a computer's CPU . Registers differ from ordinary random access memory in several respects:
There are only a small number of registers (the "register set"), typically 32 in a modern processor though some, e.g. SPARC , have as many as 144. A register may be directly addressed with a few bits. In contrast, there are usually millions of words of main memory (RAM), requiring at least twenty bits to specify a memory location. Main memory locations are often specified indirectly, using an indirect addressing mode where the actual memory address is held in a register.
Registers are fast; typically, two registers can be read and a third written -- all in a single cycle. Memory is slower; a single access can require several cycles.
The limited size and high speed of the register set makes it one of the critical resources in most computer architectures. Register allocation , typically one phase of the back-end , controls the use of registers by a compiled program.
See also accumulator , FUBAR , orthogonal , register dancing , register allocation , register spilling .
2. An addressable location in a memory-mapped peripheral device. E.g. the transmit data register in a UART .