Этот вызов используется в позиционно-независимом коде на x86.Он загружает позицию кода в регистр %ebx
, что позволяет получить доступ к глобальным объектам (которые имеют фиксированное смещение от кода) как смещение от этого регистра.
Код, независимый от позиции, является кодомкоторые могут быть загружены и выполнены без изменений по разным адресам.Это важно для кода, который будет связан с общими библиотеками, поскольку они могут отображаться по разным адресам в разных процессах.
Обратите внимание, что для x86-64 требуется эквивалентный вызов , а не потому что эта архитектура имеет режимы IP-относительной адресации (то есть она может напрямую адресовать ячейки памяти как смещение от местоположения текущей инструкции).