Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Processor register
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Types== <!-- written insufficiently about accessibility from the machine code, but it is the most important classification --> <!-- TODO - glossary format? term/defn templates? --> A processor often contains several kinds of registers, which can be classified according to the types of values they can store or the instructions that operate on them: * '''''User-accessible registers''''' can be read or written by machine instructions. The most common division of user-accessible registers is a division into data registers and address registers. ** '''''{{vanchor|Data register}}s''''' can hold [[Data (computer science)|numeric data value]]s such as [[integer (computer science)|integers]] and, in some architectures, [[floating-point numbers]], as well as [[character (computing)|characters]], small [[bit array]]s and other data. In some older architectures, such as the [[IBM 704]], the [[IBM 709]] and successors, the [[PDP-1]], the [[PDP-4]]/[[PDP-7]]/[[PDP-9]]/[[PDP-15]], the [[PDP-5]]/[[PDP-8]], and the [[HP 2100]], a special data register known as the [[accumulator (computing)|accumulator]] is used implicitly for many operations. ** '''''{{vanchor|Address register}}s''''' hold [[Memory address|addresses]] and are used by instructions that indirectly access [[primary 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 to hold either kind of quantity. A wide variety of possible [[addressing mode]]s, used to specify the effective address of an operand, exist. *** The '''''[[Call stack#Stack and frame pointers|stack and frame pointers]]''''' are used to manage the [[call stack]]. Rarely, other [[stack (abstract data type)|data stacks]] are addressed by dedicated address registers (see [[stack machine]]). ** '''''General-purpose registers''''' (''{{Vanchor|GPR}}''s) can store both data and addresses, i.e., they are combined data/address registers; in some architectures, the [[register file]] is ''unified'' so that the GPRs can store floating-point numbers as well. ** '''''{{vanchor|Floating-point register|FLOATING_POINT_REGISTER|floating point register}}s''''' (''FPR''s) store floating-point numbers in many architectures. ** '''''[[Constant (computer programming)|Constant]] registers''''' hold read-only values such as zero, one, or [[pi]]. ** '''''{{visible anchor|Vector registers}}''''' hold data for [[vector processing]] done by [[Single instruction, multiple data|SIMD]] instructions (Single Instruction, Multiple Data). ** '''''[[Status register]]s''''' hold [[truth value]]s often used to determine whether some instruction should or should not be executed. ** '''''Special-purpose registers''''' (''SPR''s) hold some elements of the [[program state]]; they usually include the [[program counter]], also called the instruction pointer, and the [[status register]]; the program counter and status register might be combined in a [[program status word]] (PSW) register. The aforementioned stack pointer is sometimes also included in this group. Embedded microprocessors, such as [[microcontrollers]], can also have ''[[special function register]]s'' corresponding to specialized hardware elements. ** '''''[[Control register]]s''''' are used to set the behaviour of system components such as the [[CPU]]. *** '''''[[Model-specific register]]s''''' (also called ''machine-specific registers'') store data and settings related to the processor itself. Because their meanings are attached to the design of a specific processor, they are not expected to remain standard between processor generations. *** '''''[[Memory type range register]]s''''' (''MTRR''s) * '''''{{Vanchor|Internal register}}s''''' are not accessible by instructions and are used internally for processor operations. ** The '''''[[instruction register]]''''' holds the instruction currently being executed. ** Registers related to fetching information from [[random-access memory|RAM]], a collection of storage registers located on separate chips from the CPU: *** '''''[[Memory buffer register]]''''' (''MBR''), also known as ''memory data register'' (''MDR'') *** '''''[[Memory address register]]''''' (''MAR'') * '''''Architectural registers'''''{{anchor|ARCHITECTURAL}} are the registers visible to software and are defined by an architecture. They may not correspond to the physical hardware if [[register renaming]] is being performed by the underlying hardware. '''[[Hardware register]]s''' are similar, but occur outside CPUs. In some architectures (such as [[SPARC]] and [[MIPS architecture|MIPS]]), the first or last register in the integer [[register file]] is a ''[[zero register|pseudo-register]]'' in that it is hardwired to always return zero when read (mostly to simplify indexing modes), and it cannot be overwritten. In [[DEC Alpha|Alpha]], this is also done for the floating-point register file. As a result of this, register files are commonly quoted as having one register more than how many of them are actually usable; for example, 32 registers are quoted when only 31 of them fit within the above definition of a register.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)