Некоторые процессоры имеют два типа указателей: ближний указатель и дальний указатель. Ближний указатель уже (таким образом, имеет ограниченный диапазон), чем дальний указатель. Дальний указатель также может быть длинным указателем.
Некоторые процессоры предлагают относительную адресацию для вещей поблизости. Длинный указатель может указывать на то, что элемент не находится рядом и относительная адресация не может быть использована.
В любом случае длинные указатели относятся к конкретной платформе и могут не переноситься на другие ОС или платформы.
Редактировать: (дальнейшее объяснение и использование относительной адресации)
Адресные расстояния - это не концепция высокого уровня, а концепция ассемблера. Расстояние измеряется от счетчика программы (либо текущий адрес, либо следующий адрес) и начала объекта (функция или данные). Если местоположение превышает ограничение для небольшого относительного указателя, потребуется более длинный указатель.
Пример: дана система с 32-битной «длинной» адресацией и 8-битной относительной адресацией. Относительное расстояние учитывает как минимум 127 байтов в прямом (положительном значении) или предыдущем (отрицательном) направлении. Если цель находится на расстоянии 1024 байта, необходимо использовать полный 32-битный указатель.
Это функция оптимизации, основанная на концепции, что большинство инструкций и данных находятся рядом. Большинство циклов имеют небольшое расстояние между началом цикла и концом цикла. Они используют относительную адресацию для исполнения.
Большая часть данных находится рядом, будь то константа данных или переменная. Более подробно, данные находятся около кадра или контрольной точки. Локальные переменные размещаются в стеке относительно фрейма или базового адреса. Этот базовый адрес является началом стека до выполнения функции . Таким образом, к данным можно получить доступ, используя адресацию относительно начала кадра стека.
Процессоры позволяют компиляторам использовать специализированные инструкции для относительной (почти) адресации. На многих процессорах инструкции для использования относительной адресации меньше, чем инструкции с длинным адресом. Таким образом, процессор требует меньше выборки из кеша инструкций, а кеш инструкций может содержать больше инструкций.
Длинная и короткая, ближняя и дальняя адресация может зависеть от области действия данных или функции. Существуют и другие факторы, такие как PIC (незавершенный код позиции), виртуальная память и пейджинг.