Привет!
Чтобы было понятно, что я имел в виду, лучше показать на примере. Для этого я модифицировал код crt0.asm (во вложении), при HDR_VER = 2 не нужно больше всовывать в каждое приложение загрузчик библиотек. В результате crt0.o, легче в 1,5 раза становится, соответственно все приложения, которые будут с ним линковаться тоже будут меньше по размеру. Т.е. все, что раньше было в dll.inc и, соответственно, в приложениях, теперь живет в dll.obj, которая грузится ядром автоматически если версия заголовка = 2. Dll.obj делает всю работу по загрузке библиотек и связыванию импортов. Следом за стандартным заголовком надо добавить заголовок KX (это совершенно другой формат, не тот, что предложил Kenshin), о котором знает пока только dll.obj. Описание заголовка KX см. тут
http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Flibraries%2Fdll%2FReadMe.txtЕдинственное, в crt0.asm я пока прописал __i_ptr__ как внешний символ. На самом деле это - адрес таблицы экспорта (т.е. по сути это метка если писать на fasm), аналогично как в случае применения dll.inc. Т.е. чтобы собрать итоговое приложение вместо символа __i_ptr__ надо просто прописать адрес начала таблицы импорта.
Еще комментарии по коду:
1. сисфункцию 68.11 не нужно вызывать, т.к. сисфункции 68.18 и 68.19 делают это неявно
2. memmove наверное тоже можно отключить если HDR_VER = 2, тогда размер будет еще меньше
3. Комментарии рекомендую писать на английском языке. На русском у меня текст в одном редакторе не распознал кодировку.
И да, dll.obj в дистибутиве будет понимать KX заголовок, когда заработает автосборка, пока все так, как описывал в топике про автозагрузку библиотек. Но никто не мешает собрать dll.obj самостоятельно
