Page 3 of 7

Re: Загрузка библиотек

Posted: Thu Aug 18, 2011 1:04 am
by dunkaist
bzip2, xz - самые ходовые на сегодня, мне даже чаще, чем gz встречаются. Tar, конечно, прост, и я к нему присматриваюсь. Но если существующей реализации нет, то тем более следует добавлять код в библиотеку.

Я не о том, что это непосильный труд, просто фраза "не сложнее. чем написать плагин к kfar" показалась мне слишком уж вызывающей, будто каждый уважающий себя программист делает это в качестве упражнения.

Re: Загрузка библиотек

Posted: Fri Aug 19, 2011 2:01 pm
by Joaquin
Имхо, написать плагин к какой-нибудь программе (если имеется (толковая) документация и интерфейс стандартен) намного проще чем править ядро (о сложностях программирования в кёрнел-моуд, думаю, напоминать не надо).
З.Ы. KFAR я привёл в качестве примера, т.к. я не знаю других программ для Клибри, которые поддерживают плагины.

Re: Загрузка библиотек

Posted: Fri Aug 19, 2011 2:04 pm
by Mario
zSea

Re: Загрузка библиотек

Posted: Fri Aug 19, 2011 2:19 pm
by art_zh
Joaquin wrote:Имхо, написать плагин к какой-нибудь программе ... намного проще чем править ядро (о сложностях программирования в кёрнел-моуд, думаю, напоминать не надо).
Не надо бояться кернел-моды -- ядро КОС правится очень легко и быстро.
На полный цикл правки ядра с рестартом экспериментального кода (тестирую только на реальном железе) у меня в среднем уходит две-три минуты. В юзерспейсе трудно добиться более высокой производительности, особенно на ассемблере.

Попробуй и убедись сам.

Re: Загрузка библиотек

Posted: Fri Aug 19, 2011 2:34 pm
by Joaquin
Я имел в виду, что программирование в 0-м кольце требует опыта и знаний больших, чем при написании пркиладных программ.

Re: Загрузка библиотек

Posted: Fri Aug 19, 2011 5:09 pm
by XVilka
Все требует знаний. Юзерспейс - своих (большей частью алгоритмов и структур данных), Кернелспейс - своих (большей частью стандартов и особенностей железа)

Re: Загрузка библиотек

Posted: Sat Aug 20, 2011 9:41 am
by Joaquin
Flood, sweet flood...

Re: Загрузка библиотек

Posted: Sat Aug 20, 2011 6:43 pm
by s1n
Начни флуд @ Обзови всех флудерастами.

Re: Загрузка библиотек

Posted: Fri Nov 22, 2013 8:50 pm
by 0CodErr
Скопировал из чата:
CleverMouse « Fri Nov 22, 2013 4:02 pm » "Загрузка PE уже есть в ядре, но для запуска приложений в PE надо решить ещё несколько вопросов." - пишет нам Serge из 2008 года
[...]
SoUrcerer « Fri Nov 22, 2013 6:41 pm » CleverMouse: интересно, каких. Кстати, переход на формат PE значительно упростил бы жизнь ЯВУшникам - проще было бы кросс-компилировать, проще делать библиотеки. Можно было бы впихнуть FreeType2 в минимальной сборке с менеджером шрифтов и юзать отовсюду.
[...]
Serge « Fri Nov 22, 2013 7:16 pm » CleverMouse: И к чему это ? Срочно понадобилось PE ?
CleverMouse « Fri Nov 22, 2013 7:18 pm » Во-первых, меня очень раздражает C-- и Leency, учащий детей плохому. Leency ведь C-- не из-за качества языка выбрал, а только потому, что автор компилятора подсуетился и сделал поддержку заголовка. Действия по компиляции ЯВУ должны быть как можно проще, чтобы даже Leency не пугался, а переход на PE, несомненно, упрощает жизнь в этом месте.
[...]
CleverMouse « Fri Nov 22, 2013 7:20 pm » Во-вторых, меня очень раздражают макросы с 9 аргументами и необходимость включать в каждую программу, использующую динамические библиотеки, свой собственный код загрузчика
[...]
Serge « Fri Nov 22, 2013 7:23 pm » CleverMouse: А нужен полноценный PE или подойдёт усечённый вариант с таблицей иморта, как в Fplay и моих последних демках ?
Unusual « Fri Nov 22, 2013 7:25 pm » CleverMouse: kolibrios на pe переходит?
Serge « Fri Nov 22, 2013 7:26 pm » Unusual: Ядро пока нет, а я уже перешёл.
Unusual « Fri Nov 22, 2013 7:27 pm » Serge: понятно
CleverMouse « Fri Nov 22, 2013 7:27 pm » полноценный PE - это сложно
Serge « Fri Nov 22, 2013 7:28 pm » Не чистый PE. А некий суррогат.
CleverMouse « Fri Nov 22, 2013 7:28 pm » что именно там усечённое?
CleverMouse « Fri Nov 22, 2013 7:28 pm » компиляторы его могут выдавать без дополнительных преобразований?
Serge « Fri Nov 22, 2013 7:28 pm » Но длл линкуются обчные PE.
Unusual « Fri Nov 22, 2013 7:32 pm » CleverMouse: ну если там PE http://miraculix.ru/ есть и псал то в колибри не сложно
Serge « Fri Nov 22, 2013 7:32 pm » CleverMouse: gnu ld со скриптом
Unusual « Fri Nov 22, 2013 7:32 pm » то есть разрабатывал один человек
Serge « Fri Nov 22, 2013 7:33 pm » fasm со стандартным инклюдом из пакета. Это обычное приложение Колибри с таблицей импорта из PE.
Serge « Fri Nov 22, 2013 7:34 pm » Потому требуется динамический линковщик, который встроен в libc.dll
CleverMouse « Fri Nov 22, 2013 7:36 pm » с msvc и остальными компиляторами проблемы
Unusual « Fri Nov 22, 2013 7:38 pm » msvc на фиг
Serge « Fri Nov 22, 2013 7:38 pm » Одной из проблем было "где держать всю это прорву дллок". Как только Марат её решил
Serge « Fri Nov 22, 2013 7:39 pm » так и появился прогресс
Serge « Fri Nov 22, 2013 7:42 pm » CleverMouse: Вопрос насколько нужны остальные компоновщики ? C fasm и ld проблем нет.
CleverMouse « Fri Nov 22, 2013 7:44 pm » libc.dll перемещает exe-шник на 0x400000?
Serge « Fri Nov 22, 2013 7:45 pm » Есть вариант и с запуском чистого PE. Яро грузит в вершину юзерспейса образ и динамический линковщик. И передаёт управление на него.
Serge « Fri Nov 22, 2013 7:46 pm » Зачем перемещать, image-base=0
CleverMouse « Fri Nov 22, 2013 7:46 pm » судя по скрипту, нет. То есть писать в [0] по-прежнему спокойно можно?
CleverMouse « Fri Nov 22, 2013 7:47 pm » что винда, что линух передают управление динамическому линковщику
Serge « Fri Nov 22, 2013 7:48 pm » Заголовок затрёшь. .text 0x000000:
CleverMouse « Fri Nov 22, 2013 7:49 pm » но PF не будет
Serge « Fri Nov 22, 2013 7:51 pm » CleverMouse: Не будет, обчное же приложение Колибри, с необычными возможностями. Скоро SDK выложу с примерами. Фасмовские на свн уже есть.

Re: Загрузка библиотек

Posted: Fri Nov 22, 2013 8:53 pm
by 0CodErr
CleverMouse « Пт ноя 22, 2013 9:28 pm » компиляторы его могут выдавать без дополнительных преобразований?
Serge « Fri Nov 22, 2013 7:34 pm » Потому требуется динамический линковщик, который встроен в libc.dll
Serge « Пт ноя 22, 2013 9:32 pm » CleverMouse: gnu ld со скриптом
Так это и сейчас так можно. Так что, шило на мыло.
CleverMouse « Пт ноя 22, 2013 9:20 pm » Во-вторых, меня очень раздражают макросы с 9 аргументами и необходимость включать в каждую программу, использующую динамические библиотеки, свой собственный код загрузчика
Можно разработать другой интерфейс.
Никто же не заставляет использовать именно такой способ.
Можно вынести код загрузчика в отдельную библиотеку и импортировать по ординалу.
Выносить код загрузки библиотек из приложений, разумеется, нужно, но не в ядро, а в системную user-mode библиотеку, которая будет грузиться автоматически, получать управление до основного приложения и всё настраивать. Например, это позволяет без проблем вызывать функции инициализации в библиотеках - которые, естественно, должны выполняться в user-mode - и существенно разгружает ядро от деталей, которые там не нужны.
SoUrcerer « Пт ноя 22, 2013 8:41 pm » CleverMouse: интересно, каких. Кстати, переход на формат PE значительно упростил бы жизнь ЯВУшникам - проще было бы кросс-компилировать, проще делать библиотеки. Можно было бы впихнуть FreeType2 в минимальной сборке с менеджером шрифтов и юзать отовсюду.
Это, конечно, всё удобно, но зачем подстраиваться под линкеры с компиляторами вместо того, чтобы ориентироваться в первую очередь на эту ОС?

Если не хочется грузить вручную — сделать готовые модули(которые сами загрузят необходимое им) и просто их прилинковывать. Но это уже давным-давно можно было так делать.

Re: Загрузка библиотек

Posted: Fri Nov 22, 2013 10:12 pm
by SoUrcerer
Это, конечно, всё удобно, но зачем подстраиваться под линкеры с компиляторами вместо того, чтобы ориентироваться в первую очередь на эту ОС?
Проще кодогенерация - проще портировать инструменты разработки. Так, у меня есть последний tcc, способный генерировать elf и pe из Колибри. Но он не умеет генерировать MENUET01 из Колибри - это еще предстоит перенести из старой версии порта.

Re: Загрузка библиотек

Posted: Fri Nov 22, 2013 10:37 pm
by 0CodErr
SoUrcerer, ну вот и я про то.
tcc не умеет — это проблемы tcc.
Можно по-другому перефразировать:
моему любимому компилятору\линкеру трудно генерировать программы для KolibriOS — давайте сделаем KolibriOS более удобной для него.
Хотя можно просто взять ld со скриптом и получить нужный формат.

Re: Загрузка библиотек

Posted: Fri Nov 22, 2013 10:39 pm
by SoUrcerer
Ну, тогда напиши мне скрипт для ld, который позволит использовать сторонние динамические библиотеки без написания километровых обёрток. :) FreeType экспортирует несколько сотен функций.

Re: Загрузка библиотек

Posted: Sat Nov 23, 2013 3:33 am
by Leency
Идея неплохая. В корень зрит, в идеале мне и правда нужен максимально простой компилятор, "чтобы даже я понял".

Примеры компиляции:

FASM.exe example.asm example.bin

C--.exe example.c example.kex

MSVC:
cl /c /O2 /Ox /Os /GL /Gr /Oi /nologo /GS- /GR- kosilka.cpp kosFile.cpp kosSyst.cpp mcsmemm.cpp
link /section:.bss,E /nologo /ltcg /map /entry:crtStartUp /subsystem:native /base:0 /fixed:no /nodefaultlib /merge:.data=.text /merge:.rdata=.text kosilka.obj kosFile.obj kosSyst.obj mcsmemm.obj
fasm doexe2.asm kosilka
+ проблемы с разными версиями компилятора

Re: Загрузка библиотек

Posted: Sat Nov 23, 2013 4:49 am
by Mario_r4
Leency
Максимально простой компилятор, который даже ты уже начал понимать - это FASM. :)