От: Связь с разработчиком - косвенная адресация
Косвенная адресация - это имя метода генерации кода, который позволяет ссылаться на символы, определенные в одном файле, из другого файла, не требуя, чтобы ссылочный файл имел явное знание макета файла, который определяет символ. Следовательно, определяющий файл может быть изменен независимо от ссылочного файла. Косвенная адресация сводит к минимуму количество местоположений, которые должны быть изменены динамическим компоновщиком, что облегчает совместное использование кода и повышает производительность.
Когда файл использует данные, определенные в другом файле, он создает ссылки на символы. Ссылка на символ идентифицирует файл, из которого импортируется символ, и ссылочный символ. Существует два типа ссылок на символы: неряхи и ленивцы.
Нелинейные ссылки на символы разрешаются (привязываются к их определениям) динамическим компоновщиком при загрузке модуля
Неполная ссылка на символ - это, по сути, указатель символа - часть данных размером с указатель. Компилятор генерирует ссылки без задержек для символов данных или адресов функций.
Ленивые ссылки на символы разрешаются динамическим компоновщиком при первом использовании (не во время загрузки). Последующие обращения к ссылочному символу переходят непосредственно к определению символа.
Ленивые ссылки на символы состоят из указателя символа и заглушки символа, небольшого количества кода, который непосредственно разыменовывается и перепрыгивает через указатель символа. Компилятор генерирует ленивые ссылки на символы, когда сталкивается с вызовом функции, определенной в другом файле.