A memory address is a number that identifies a unique location in memory. The processor uses addresses in load and store instructions to specify which byte (or word) to read or write.
Memory is conceptually a giant linear array indexed by address. Address is the first location, address the next, and so on up to the maximum address the processor can produce.
Address space
The set of all possible addresses the processor can generate is the address space. With address bits, the processor can address up to distinct locations:
| Address bits | Address space |
|---|---|
| 16 | 64 K = 65,536 |
| 20 | 1 M ≈ 1,048,576 |
| 32 | 4 G ≈ 4.3 billion |
| 64 | 16 E ≈ 1.8 × 10¹⁹ |
The address-space size limits how much memory the processor can address, regardless of how much physical RAM is actually installed. A 32-bit processor maxes out at 4 GB no matter what.
Byte addressability
Most modern computers are byte-addressable: each address picks one byte (8 bits). A 32-bit word occupies four consecutive byte addresses (e.g., addresses for the first word, for the second).
So word addresses are at byte addresses in a 32-bit machine. Each instruction in a fixed-length 32-bit ISA is also 4 bytes, which is why the PC increments by 4 per instruction.
How addresses get used
A load or store instruction names an address (directly or indirectly via base + offset arithmetic). The processor:
- Computes the effective address — base register + offset, or whatever the addressing mode says.
- Sends it to memory on the address bus.
- Asserts Read (for load) or Write (for store).
- Memory responds with data on the data bus, or stores data from the data bus.
See Memory Read and Write Operations for the cycle-level breakdown.
Multi-byte values
Once you have a word stored at consecutive byte addresses, the question of which byte goes first arises. That’s big-endian vs little-endian. Both conventions assign the same address to the word as a whole — the difference is only in which byte’s address is the lowest.
For instructions assumed to be word-aligned, the natural address is the address of the first byte. PC always points there.
Address bits and the address bus
Physically, the processor produces address bits on a parallel set of wires (the address bus). Each wire is one bit. A 32-bit address bus is 32 wires. The full address goes out simultaneously, then memory takes a few nanoseconds to respond.
In practice, the address bus might be narrower than the address space if the system uses multiplexed addressing — sending the address in two halves on a smaller bus. DRAM does this internally, splitting addresses into row and column halves to save package pins.