Вопрос в следующем: каков механизм/алгоритм создания импорта в PE файле с помощью линкера и библиотек импорта. В фасме структуры импорта я создаю вручную/макросами. В масме за меня все делает линкер, и вот интересно как он это делает.
Asvald Ну названия функций и библиотеки-то у него есть, почему-бы и не сделать импорт. А FASM видимо не заморачивается на поиске функций в либах. В принципе в нём из-за этого линковка должна идти пошустрее.
Asvald Библиотеки импорта pe-coff состоят из обьектников практически ничем не отличающихся от обычных обьектников, за исключением одного слабодокументированного свойства. На каждый импортируемый символ приходится один обьектник + ещё несколько обьектников для создания директории импорта, директории конкретной DLL и заглушки для завершения всех этих директорий нулями. Линкер просто достаёт соответствующие обьектники из библиотеки импорта и помещает их в экзешник точно также как он поступает с любым обычным обьектником. Никакого специального алгоритма у него нет. Это справедливо для библиотек импорта pe-coff. У библиотек omf действительно существует специальный формат и алгоритм компоновки.
Asvald Алгоритм зависит от конкретного линковщика и человека, написавшего его. Метод очевидно следующий - для каждой подгружаемой библиотеки построить список импортируемых функций и из данных списков создать импорт. Формат таблицы импорта и откуда загрузчик узнает ее RVA есть в любом описании PE-формата.