Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Sep 17, 2019 12:13 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 65 posts ]  Go to page Previous 1 2 3 4 5 Next
Author Message
PostPosted: Thu Aug 18, 2011 1:04 am 
Offline
Mentor
User avatar

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

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


Top
   
PostPosted: Fri Aug 19, 2011 2:01 pm 
Offline

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


Top
   
PostPosted: Fri Aug 19, 2011 2:04 pm 
zSea


Top
   
PostPosted: Fri Aug 19, 2011 2:19 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1342
Joaquin wrote:
Имхо, написать плагин к какой-нибудь программе ... намного проще чем править ядро (о сложностях программирования в кёрнел-моуд, думаю, напоминать не надо).

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

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


Top
   
PostPosted: Fri Aug 19, 2011 2:34 pm 
Offline

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


Top
   
PostPosted: Fri Aug 19, 2011 5:09 pm 
Offline
User avatar

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


Top
   
PostPosted: Sat Aug 20, 2011 9:41 am 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
Flood, sweet flood...


Top
   
PostPosted: Sat Aug 20, 2011 6:43 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
Начни флуд @ Обзови всех флудерастами.


Top
   
PostPosted: Fri Nov 22, 2013 8:50 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Скопировал из чата:
Quote:
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 выложу с примерами. Фасмовские на свн уже есть.


Top
   
PostPosted: Fri Nov 22, 2013 8:53 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Quote:
CleverMouse « Пт ноя 22, 2013 9:28 pm » компиляторы его могут выдавать без дополнительных преобразований?
Quote:
Serge « Fri Nov 22, 2013 7:34 pm » Потому требуется динамический линковщик, который встроен в libc.dll
Quote:
Serge « Пт ноя 22, 2013 9:32 pm » CleverMouse: gnu ld со скриптом
Так это и сейчас так можно. Так что, шило на мыло.

Quote:
CleverMouse « Пт ноя 22, 2013 9:20 pm » Во-вторых, меня очень раздражают макросы с 9 аргументами и необходимость включать в каждую программу, использующую динамические библиотеки, свой собственный код загрузчика
Можно разработать другой интерфейс.
Никто же не заставляет использовать именно такой способ.
Можно вынести код загрузчика в отдельную библиотеку и импортировать по ординалу.
Quote:
Выносить код загрузки библиотек из приложений, разумеется, нужно, но не в ядро, а в системную user-mode библиотеку, которая будет грузиться автоматически, получать управление до основного приложения и всё настраивать. Например, это позволяет без проблем вызывать функции инициализации в библиотеках - которые, естественно, должны выполняться в user-mode - и существенно разгружает ядро от деталей, которые там не нужны.

Quote:
SoUrcerer « Пт ноя 22, 2013 8:41 pm » CleverMouse: интересно, каких. Кстати, переход на формат PE значительно упростил бы жизнь ЯВУшникам - проще было бы кросс-компилировать, проще делать библиотеки. Можно было бы впихнуть FreeType2 в минимальной сборке с менеджером шрифтов и юзать отовсюду.
Это, конечно, всё удобно, но зачем подстраиваться под линкеры с компиляторами вместо того, чтобы ориентироваться в первую очередь на эту ОС?

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


Top
   
PostPosted: Fri Nov 22, 2013 10:12 pm 
Offline

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

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


Top
   
PostPosted: Fri Nov 22, 2013 10:37 pm 
Offline

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


Top
   
PostPosted: Fri Nov 22, 2013 10:39 pm 
Offline

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


Top
   
PostPosted: Sat Nov 23, 2013 3:33 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5061
Идея неплохая. В корень зрит, в идеале мне и правда нужен максимально простой компилятор, "чтобы даже я понял".

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

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
+ проблемы с разными версиями компилятора

_________________
Через тернии к звездам


Top
   
PostPosted: Sat Nov 23, 2013 4:49 am 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Leency
Максимально простой компилятор, который даже ты уже начал понимать - это FASM. :)

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 65 posts ]  Go to page Previous 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited