Microprocessor and Memory Basics

Registers

Registers are used as temporary storage for instructions and data within the microprocessor. In ARM processors:

    • Registers R0 to R14 are 32-bit general-purpose registers. These can be used by programmers for almost any purpose.
    • R15 is the Program Counter and is also 32-bits wide.
    • The Current Program Status Register contains conditional flags and other status bits that reflect computational results (such as arithmetic overflows, carry out results from the ALU, etc.) It is also 32 bits wide but only the first four and last eight bits are currently used. The other bits are reserved for future developments
    • The address register is an internal 32-bit register which can store either a future Program Counter address (so that the next instruction can be fetched in advance) or the address of a value (an operand needed for a computation
    • The data registers ("data in register" and "data out register") are used to hold data read from memory and data written to memory respectively. Naturally these are 32-bit registers. Other processor architectures have specialized registers known as accumulators which are used to store intermediate arithmetic results and their assembly languages have commands to enable programmers to utilize them.