[ The CPU REGISTER TYPES ]


The Register Types

* User-accessible Registers - The most common division of user-accessible registers is into data registers and address registers.

* Data registers are used to hold numeric values such as integer and floating-point values. In some older and low end CPUs, a special data register, known as the accumulator, is used implicitly for many operations.

* Address registers hold addresses and are used by instructions that indirectly access memory.

Some processors contain registers that may only be used to hold an address or only to hold numeric values (in some cases used as an index register whose value is added as an offset from some address); others allow registers hold either kind of quantity. A wide variety of possible addressing modes, used to specify the effective address of an operand, exist.

A stack pointer, sometimes called a stack register, is the name given to a register that can be used by some instructions to maintain a stack (data structure).

* Conditional registers hold truth values often used to determine whether some instruction should or should not be executed.

* General purpose registers (GPRs) can store both data and addresses, i.e., they are combined Data/Address registers.

* Floating point registers (FPRs) store floating point numbers in many architectures.

* Constant registers hold read-only values such as zero, one, or pi.

* Vector registers hold data for vector processing done by SIMD instructions (Single Instruction, Multiple Data).

* Special purpose registers hold program state; they usually include the program counter (aka instruction pointer), stack pointer, and status register (aka processor status word).

Instruction registers store the instruction currently being executed.

* Control and status registers - It has three types. Program counter, instruction registers, Program status word (PSW).
* Registers related to fetching information from RAM, a collection of storage registers located on separate chips from the CPU (unlike most of the above, these are generally not architectural registers):
Memory buffer register
Memory data register
Memory address register
Memory Type Range Registers