register
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}.