COHERENT manpages
This page displays the COHERENT manpage for address [Definition].
List of available manpages
Index
address -- Definition An address is the location where an item of data is stored in memory. On the i8086, a physical address is a 20-bit number. The i8086 builds an address by left-shifting a 16-bit segment address by four bits, and then adding it to a 16-bit offset address. The segment address points to a particular chunk of memory. The i8086 uses four segment registers, each of which governs a different portion of a program, as follows: CS Address of code segment DS Address of data segment ES Address of ``extra'' segment SS Address of stack segment SMALL-model programs use only the offset address; hence, their pointers are only 16 bits long, equivalent to an int. LARGE-model programs use both segment and offset addresses. Their addresses are 20 bits long, which must be stored in a 32-bit pointer, equivalent to a long. COHERENT 286 supports SMALL model. On the i80386, addresses start as 32 bits. Segment registers are used to look up a segment descriptor. The descriptor's base then defines the address within a four-gigabyte virtual address space. The page tables are then used to translate this to a physical address. For details, see the Intel 386 Programmers Manual. On the M68000, an address is simply a 24-bit integer that is stored as a 32-bit integer. The upper eight bits are ignored; this is not true with the more advanced microprocessors in this family, such as the M68020. The M68000 uses no segmentation; memory is organized as a ``flat address space,'' with no restrictions set on the size of code or data. On machines with memory-mapped I/O, such as the 68000, some addresses may be used to control or communicate with peripheral devices. Example The following printes the address and contents of a given byte of memory. #include <stdio.h> main() { char byte = 'a'; printf("Address == %x\tContents == \"%c\"\n", &byte, byte); } See Also data formats, pointer, Programming COHERENT