Keil Logo

far Pointers

Pointers to far objects are stored using four bytes (32 bits). The bytes are stored little endian or low to high order. The first word contains the 14-bit memory offset (bits 14 and 15 are always 0). The second word contains the page number (or segment number for function pointers). The memory address is calculated as follows:

Variable Address = (Page * 0x4000L) + Offset

Function Address = (Segment * 0x10000L) + Offset

A far pointer is stored in memory at a word boundary as follows:

  Address+0 Address+1 Address+2 Address+3
Contents Offset (LSB) Offset (MSB) Page (LSB)
Segment (LSB)
Page (MSB)
Segment (MSB)

A far pointer can access objects up to 16K in size in any memory area. Objects larger than 16K must be accessed using huge or xhuge pointers.

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.