Memory address

addressaddressesmemory locationmemory addressingabsolute addressmemory locationsaddress spaceaddressablememory addressesmemory model
In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware.wikipedia
254 Related Articles

Physical address

addressbinary addressPhysical
A digital computer's main memory consists of many memory locations. Each memory location has a physical address which is a code.
In computing, a physical address (also real address, or binary address), is a memory address that is represented in the form of a binary number on the address bus circuitry in order to enable the data bus to access a particular storage cell of main memory, or a register of memory mapped I/O device.

Processor register

registersregistergeneral purpose register
Generally only system software, i.e. the BIOS, operating systems, and some specialized utility programs (e.g., memory testers), address physical memory using machine code operands or processor registers, instructing the CPU to direct a hardware device, called the memory controller, to use the memory bus or system bus, or separate control, address and data busses, to execute the program's commands.
Registers are typically addressed by mechanisms other than main memory, but may in some cases be assigned a memory address e.g. DEC PDP-10, ICT 1900.

Program counter

instruction pointerPCprogram counter (PC)
Such numerical semantic bases itself upon features of CPU (such as the instruction pointer and incremental address registers), as well upon use of the memory like an array endorsed by various programming languages.
Usually, the PC is incremented after fetching an instruction, and holds the memory address of ("points to") the next instruction that would be executed.

Computer data storage

main memorystoragememory
A digital computer's main memory consists of many memory locations. Each memory location has a physical address which is a code.
The CPU firstly sends a number through an address bus, a number called memory address, that indicates the desired location of data.

Virtual memory

virtual storagememoryswap
In early computers logical and physical addresses corresponded, but since the introduction of virtual memory most application programs do not have a knowledge of physical addresses.
The computer's operating system, using a combination of hardware and software, maps memory addresses used by a program, called virtual addresses, into physical addresses in computer memory.

Bus (computing)

buscomputer busdata bus
Generally only system software, i.e. the BIOS, operating systems, and some specialized utility programs (e.g., memory testers), address physical memory using machine code operands or processor registers, instructing the CPU to direct a hardware device, called the memory controller, to use the memory bus or system bus, or separate control, address and data busses, to execute the program's commands.
A microprocessor conventionally is a single chip which has a number of electrical connections on its pins that can be used to select an "address" in the main memory and another set of pins to read and write the data stored at that location.

Memory address register

address registersmemory address register (MAR)memory-address register
Such numerical semantic bases itself upon features of CPU (such as the instruction pointer and incremental address registers), as well upon use of the memory like an array endorsed by various programming languages.
In a computer, the Memory Address Register (MAR) is the CPU register that either stores the memory address from which data will be fetched from the CPU, or the address to which data will be sent and stored.

Word (computer architecture)

wordwordsword size
There exist word-addressable computers, where the minimal addressable storage unit is exactly the processor's word.
The largest possible address size, used to designate a location in memory, is typically a hardware word (here, "hardware word" means the full-sized natural word of the processor, as opposed to any other definition used).

Virtual address space

virtual addressvirtual addressesaddress space
Rather, they address logical addresses, or virtual addresses, using the computer's memory management unit and operating system memory mapping; see below.
When a new application on a 32-bit OS is executed, the process has a 4 GiB VAS: each one of the memory addresses (from 0 to 2 32 − 1) in that space can have a single byte as a value.

32-bit

32-32 bit32
For instance, a computer said to be "32-bit" also usually allows 32-bit memory addresses; a byte-addressable 32-bit computer can address 2 32 = 4,294,967,296 bytes of memory, or 4 gibibytes (GiB).
One important consequence is that a processor with 32-bit memory addresses can directly access at most 4 GiB of byte-addressable memory (though in practice the limit may be lower).

Data (computing)

datacomputer datadata representation
A computer program uses memory addresses to execute machine code, and to store and retrieve data. Some segments are implicitly treated as code segments, dedicated for instructions, stack segments, or normal data segments.
In general main memory or RAM is arranged as an array of "sets of electronic on/off switches" or locations beginning at address 0 (hexadecimal 0).

64-bit computing

64-bit64 bit64
In theory, modern byte-addressable 64-bit computers can address 2 64 bytes (16 exbibytes), but in practice the amount of memory is limited by the CPU, the memory controller, or the printed circuit board design (e.g. number of physical memory connectors or amount of soldered-on memory).
In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits (8 octets) wide.

Operand

operandsimmediate
Generally only system software, i.e. the BIOS, operating systems, and some specialized utility programs (e.g., memory testers), address physical memory using machine code operands or processor registers, instructing the CPU to direct a hardware device, called the memory controller, to use the memory bus or system bus, or separate control, address and data busses, to execute the program's commands.
The operand may be a processor register, a memory address, a literal constant, or a label.

Pointer (computer programming)

pointerpointerspointer arithmetic
A computer program can access an address given explicitly – in low-level programming this is usually called an, or sometimes a specific address, and is known as pointer data type in higher-level languages.
In computer science, a pointer is a programming language object that stores the memory address of another value located in computer memory.

Addressing mode

indirect addressingconditional executionindirect address
There are many more addressing modes.
An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.

Logical address

logical memoryaddresslocator
Rather, they address logical addresses, or virtual addresses, using the computer's memory management unit and operating system memory mapping; see below.

Flat memory model

linear addressingLinear address spaceLinear
In the flat memory model all segments (segment registers) are generally set to zero, and only offsets are variable.
Flat memory model or linear memory model refers to a memory addressing paradigm in which "memory appears to the program as a single contiguous address space."

Call stack

stackstack pointerstack frame
Some segments are implicitly treated as code segments, dedicated for instructions, stack segments, or normal data segments.
To accomplish this, the address following the instruction that jumps to, the return address, is pushed onto the call stack with each call.

Endianness

big-endianlittle-endianbig endian
This is analogous to the lowest address of memory being used first.

Memory-mapped file

memory-mappedmemory mapped filememory mapped files
Another drawback of memory-mapped files relates to a given architecture's address space: a file larger than the addressable space can have only portions mapped at a time, complicating reading it.

Base address

base
But a program can also use relative address which specifies a location in relation to somewhere else (the base address).
In computing, a base address is an address serving as a reference point ("base") for other addresses.

Harvard architecture

HarvardHarvard computer architectureHarvard memory architecture
However, many early computers did not support such a flat memory model — in particular, Harvard architecture machines force program storage to be completely separate from data storage.
In particular, the word width, timing, implementation technology, and memory address structure can differ.

X86 memory segmentation

segmentsegmented memorymemory segment
Early x86 computers use the segmented memory model addresses based on a combination of two numbers: a memory segment, and an offset within that segment.
The effective 20-bit address space of real mode limits the addressable memory to 2 20 bytes, or 1,048,576 bytes (1 MB).

Data type

typedatatypetypes
Its interpretation, as data of some data type or as an instruction, and use are determined by the instructions which retrieve and manipulate it.
The main non-composite, derived type is the pointer, a data type whose value refers directly to (or "points to") another value stored elsewhere in the computer memory using its address.

Offset (computer science)

offsetrelative addressrelative
But a program can also use relative address which specifies a location in relation to somewhere else (the base address). Early x86 computers use the segmented memory model addresses based on a combination of two numbers: a memory segment, and an offset within that segment.
In computer engineering and low-level programming (such as assembly language), an offset usually denotes the number of address locations added to a base address in order to get to a specific absolute address.