Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт апр 25, 2017 7:33 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу Пред. 1 2 3 4 5 След.
Автор Сообщение
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Чт авг 18, 2011 1:04 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Пн окт 19, 2009 10:58 am
Сообщения: 328
bzip2, xz - самые ходовые на сегодня, мне даже чаще, чем gz встречаются. Tar, конечно, прост, и я к нему присматриваюсь. Но если существующей реализации нет, то тем более следует добавлять код в библиотеку.

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


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт авг 19, 2011 2:01 pm 
Не в сети

Зарегистрирован: Сб авг 13, 2011 1:48 pm
Сообщения: 49
Имхо, написать плагин к какой-нибудь программе (если имеется (толковая) документация и интерфейс стандартен) намного проще чем править ядро (о сложностях программирования в кёрнел-моуд, думаю, напоминать не надо).
З.Ы. KFAR я привёл в качестве примера, т.к. я не знаю других программ для Клибри, которые поддерживают плагины.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт авг 19, 2011 2:04 pm 
zSea


Вернуться к началу
   
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт авг 19, 2011 2:19 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Joaquin писал(а):
Имхо, написать плагин к какой-нибудь программе ... намного проще чем править ядро (о сложностях программирования в кёрнел-моуд, думаю, напоминать не надо).

Не надо бояться кернел-моды -- ядро КОС правится очень легко и быстро.
На полный цикл правки ядра с рестартом экспериментального кода (тестирую только на реальном железе) у меня в среднем уходит две-три минуты. В юзерспейсе трудно добиться более высокой производительности, особенно на ассемблере.

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


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт авг 19, 2011 2:34 pm 
Не в сети

Зарегистрирован: Сб авг 13, 2011 1:48 pm
Сообщения: 49
Я имел в виду, что программирование в 0-м кольце требует опыта и знаний больших, чем при написании пркиладных программ.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт авг 19, 2011 5:09 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 786
Все требует знаний. Юзерспейс - своих (большей частью алгоритмов и структур данных), Кернелспейс - своих (большей частью стандартов и особенностей железа)


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Сб авг 20, 2011 9:41 am 
Не в сети

Зарегистрирован: Сб авг 13, 2011 1:48 pm
Сообщения: 49
Flood, sweet flood...


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Сб авг 20, 2011 6:43 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт янв 24, 2006 8:50 am
Сообщения: 249
Начни флуд @ Обзови всех флудерастами.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт ноя 22, 2013 8:50 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 910
Скопировал из чата:
Цитата:
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: Загрузка библиотек
СообщениеДобавлено: Пт ноя 22, 2013 8:53 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 910
Цитата:
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: Загрузка библиотек
СообщениеДобавлено: Пт ноя 22, 2013 10:12 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Цитата:
Это, конечно, всё удобно, но зачем подстраиваться под линкеры с компиляторами вместо того, чтобы ориентироваться в первую очередь на эту ОС?

Проще кодогенерация - проще портировать инструменты разработки. Так, у меня есть последний tcc, способный генерировать elf и pe из Колибри. Но он не умеет генерировать MENUET01 из Колибри - это еще предстоит перенести из старой версии порта.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт ноя 22, 2013 10:37 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 910
SoUrcerer, ну вот и я про то.
tcc не умеет — это проблемы tcc.
Можно по-другому перефразировать:
моему любимому компилятору\линкеру трудно генерировать программы для KolibriOS — давайте сделаем KolibriOS более удобной для него.
Хотя можно просто взять ld со скриптом и получить нужный формат.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Пт ноя 22, 2013 10:39 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Ну, тогда напиши мне скрипт для ld, который позволит использовать сторонние динамические библиотеки без написания километровых обёрток. :) FreeType экспортирует несколько сотен функций.


Вернуться к началу
 Заголовок сообщения: Re: Загрузка библиотек
СообщениеДобавлено: Сб ноя 23, 2013 3:33 am 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
Идея неплохая. В корень зрит, в идеале мне и правда нужен максимально простой компилятор, "чтобы даже я понял".

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

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: Загрузка библиотек
СообщениеДобавлено: Сб ноя 23, 2013 4:49 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Leency
Максимально простой компилятор, который даже ты уже начал понимать - это FASM. :)

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 62 сообщения ]  На страницу Пред. 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB