Index register
An
index register in a computer's
CPU is a
processor register used for modifying
operand addresses during the run of a program, typically for doing vector/
array operations. Index registers were first used in the
British Manchester Mark I computer, in
1949.
Before the invention of index registers, and without
indirect addressing, array operations had to be performed either by linearly repeating program code for each array element (i.e. over all address locations), or by using rather "dirty"
self-modifying code techniques – both alternatives leading to quite significant disadvantages in program flexibility and maintenance, as well as being wasteful of computer memory; the latter a very scarce resource in computer installations of the early era (as well as in early microcomputers several decades later).
In general, index registers became a standard part of computers during the technology's second generation (roughly 1955–1964). See, for example, the
IBM 700/7000 mainframes. Early "small machines" with index registers include the
AN/USQ-17, around
1960, and the real-time computers from
Scientific Data Systems. The first
microprocessor with an index register appears to have been the
Motorola 6800, whose upgraded clone
MOS Technology 6502 made good use of two such registers.