Создание .SO файлов в Linux без использования PIC (позиционно-независимый код) (x86 32bit)

Насколько я знаю, ассемблерный код x86 очень ограничен ограниченным количеством регистров.

Когда я узнал, что в Linux для создания файла .so необходимо указать аргумент командной строки -fPIC для gcc, чтобы создать независимый от позиции код, я сначала не мог поверить в это.

Насколько я знаю, формат файлов elf поддерживает перемещения, так же как - на мой взгляд, намного лучше - система Windows DLL работает: в Windows компоновщик перемещает все смещения в DLL, если это необходимо.

Я думаю, что время, необходимое для загрузки SO-файла или DLL-файла, а также объем памяти, используемый для хранения по-разному перемещенных .so-файлов, не так плох, как отсутствие целого регистра все время, что указывает на ПОЛУЧИЛ и имея все это косвенные скачки.

Мне также наплевать на ALSR и т. Д. На приложения, которые я имею в виду, если мне нужно только иметь максимально оптимизированный код в библиотеке.

1) Почему Linux не поддерживает более динамичную загрузку библиотек, как Windows, которая должна производить гораздо более производительный код?

До сих пор я не нашел реального объяснения этому. Просто некоторые вещи, как это, было бы очень плохо и медленно перемещать код (Конечно, для загрузки текстового процессора на настольном компьютере важно, насколько быстро он загружается, я полностью согласен с этим. Но для вычислительно интенсивного серверного процесса ( не обрабатывая вредоносные данные из интернета), я хотел бы иметь всю производительность и регистры, которые я могу получить!

2) Могу ли я создать скомпилированные НЕ -PPIC SO-файлы в Linux? Могу ли я просто оставить -fPIC? Есть ли какие-либо инструкции, руководства или проекты, которые работают по этой теме и позволяют не тратить впустую весь регистр и все же загружать библиотеки динамически?

Что произойдет, если я просто уроню -fPIC при компиляции .so-файла?

Ответы на вопрос(1)

Ваш ответ на вопрос