Ответ 1
Принятый ответ в связанном вопросе очень упрощен и только вызывает одну вещь, которая отличается между ПОС и кодом, отличным от ПИК, генерированием прыжков, которые являются относительными, а не абсолютными.
Когда вы создаете код PIC, это не только код, который позиционируется независимо, но и данные. И не весь код или данные могут быть устранены просто с использованием относительных смещений, он должен быть разрешен при загрузке (когда библиотека/программа загружается в память) или даже во время выполнения.
Кроме того, использование относительной адресации означает, что ЦП должен переводить относительные смещения в абсолютные адреса, а не выполнять компилятор.
В системе с виртуальной памятью часто нет необходимости тратить нагрузку или время выполнения на эти относительные разрешения адресов, когда компилятор может сделать это раз и навсегда.