|
In a segmented architecture computer, a far pointer is a pointer which includes a segment number, making it possible to point to addresses outside of the current segment. For example, in an Intel 8086, where an ordinary pointer is just a 16-bit offset within an implied segment, a far pointer has two parts: a 16-bit segment value and a 16-bit offset value. A linear address is obtained by shifting the binary segment value four times to the left, and then adding the offset value. Hence the effective address is 20 bits (actually 21-bit, which led to the address warparound and the Gate A20). Comparison and arithmetic on far pointers are problematic: there are potentially sixteen different segment-offset address pairs that point to the same address. To compare two far pointers, they must be converted to their 20-bit linear representation. On 8086 C compilers, far pointers were declared using a non-standard far qualifier. For example, "char far
| ||||||||
|
| |||||||||
![]() |
|
| |