Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт май 26, 2017 8:33 am

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




Начать новую тему  Ответить на тему  [ 124 сообщения ]  На страницу 1 2 3 4 59 След.
Автор Сообщение
 Заголовок сообщения: Колибри PE
СообщениеДобавлено: Ср окт 24, 2007 8:14 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Сделал загрузку РЕ DLL-модулей в ядро. DLL должна линковаться с базовым адресом 0х0000. Модуль грузится функцией load_PE stdcall, file_name:dword. Возвращаемое значение - адрес точки входа в DLL. Связывание с функциями из kernel_export: происходит автоматически при загрузке. Ложка дёгтя: только часть экспортируемых функций ядра можно напрямую вызывать из С программ. В exports.inc они помечены ;stdcall, для остальных нужен промежуточный код ( в основном передача параметров и сохранение регистров).
Ещё можно можно сделать загруку PE программ с автоматической линковкой DLL и общесистемные DLL. Для программ на C и других ЯВУ одну sys.dll c экспортом всех системных вызовов, только надо определиться с синтаксисом и передачей параметров.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 9:00 am 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
Хорошая новость.
Может вместо sys.dll выбрать другое имя (kos.dll, ksys.dll, kolibri32.dll и т.п.), что бы при "случайном" запуске программы в Windows было бы понятно по имени отсутствующей динамической библиотеки что за дела.

..bw


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 2:15 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Название не принципиально и расширение может быть любым, только lib плохо подходит потому что будет путаница со статическими библиотеками и implib.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 2:53 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Вау, вот это новость! Респект!

>Ещё можно можно сделать загруку PE программ с автоматической линковкой DLL и общесистемные DLL.
Если я правильно понимаю, то теперь можно будет реализвать dll в которой будут обертки для системных вызовов колибри. Реализовать такую же для винды. И полноценно пускать и там и там?


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

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
k@sTIg@r писал(а):
Если я правильно понимаю, то теперь можно будет реализвать dll в которой будут обертки для системных вызовов колибри. Реализовать такую же для винды. И полноценно пускать и там и там?

А нафига?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 2:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 7:57 pm
Сообщения: 834
Например, чтобы программы Колибри могли использовать плагины от виндовых программ.

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 3:02 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Атауальпа
1. Возможность загрузки PE-exe и PE-dll - разные вещи. Не вижу причин, мешающих Колибри-программе загружать PE-dll при условии поддержки ядра.
2. Для использования плагинов другой программы абсолютно необходима похожесть внутреннего строения - или потребуется очень трудоёмкие усилия по эмуляции plugin api.

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 3:03 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
ИМХО, так удобней чем через эмулятор, точнее эмулятор в виде экзешки. И не надо вешать никакие обработчики, а сразу же писать это все дело в виде ф-ций. Возможно даже под WINE'ом удастся поднять.
Но опять же, врядли согласитесь писать приложения которые будут не через syscall'ы работать а через обертки. Насколько помню vectoroc уже предлагал такую схему, но никто не поддержал.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 3:05 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Мне почему-то упорно кажется, что мы пишем свою операционную систему со своими форматами исполняемых файлов и своими системными вызовами...


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 3:39 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
мне тоже так казалось.....раньше
Но после обсуждения "расширение запускаемых файлов" я увидел что большинство пользуются эмулятором и основным аргументом было "удобно запускать под эмулятором"...
Но не о том разговор. Стоит ли создавать обертки для системных вызовов?


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 4:13 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Проблема в том что никто больше наш стандарт исполняемых файлов не поддерживает. Даже портированному Фасму надо его прописывать в двоичном виде. Никакого format KOLIBRI там нет в отличие от COFF ELF и т.п. Так же и в ktcc. Собственно и никаких форматов исполняемых файлов у нас нет. Есть два варианта заголовков 'MENUET00' и 'MENUET01'. Сами заголовки очень примитивны. Там нет таблицы секций, значит нельзя защитить код от переписывания, данные от исполнения и т.д. Выбор coff.obj для драйверов был не совсем удачным решением потому что на практике кроме Фасма такой драйвер больше ни чем не скомпилировать. Не знаю, может это кого-то радует, меня нет. Что касается системных вызовов то сейчас каждый пишет для них свои обёртки. ИМХО стоит разработать общий API для программ на ЯВУ. Вообще лучшим вариантом было бы делать все обращения к ядру только через DLL, скинуть туда всю черновую работу по проверке параметров и таким образом разгрузить ядро и уменьшить код выполняющийся в привилегированном режиме, но это уже другая тема.
Что касается загрузки pe.exe то технически нет никакой разницы. Загрузка .exe даже проще потому что там нет релокаций.


Последний раз редактировалось Serge Ср окт 24, 2007 5:53 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 4:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 4:16 pm
Сообщения: 426
Serge> Название не принципиально и расширение может быть любым
Не скажи.
Если это именно виндовый по формату DLL, то он и должен иметь расширение DLL, что бы небыло лишней путаницы и вопросов. Другое дело, что pe dll для KOS не будут работать в винде, если они используют системные вызовы KOS или не реализованные в винде динамические библиотеки и поэтому лишний раз "светиться" расширением бестолковым в отличных от KOS системах, наверное, не стоит. Тем не менее, я вижу удобство использования существующих форматов в том, что ничего не надо придумывать, существуют сторонние инструменты для работы с ними, существуют компиляторы и линковщики выдающие код в этих форматах, т.е. отсутствует необходимость конвертирования в родной KOS формат (в частности я говорю про компиляторы, которые в KOS ничего сами не сделают).

..bw


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 5:01 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
>скинуть туда всю черновую работу по проверке параметров и таким образом разгрузить ядро
ИМХО это не правильно, проверки в ядре должны быть, иначе будут дыры через которые можно убить систему. Либо придется ограничить программы на прямой вызов ядреных функций, что тоже не очень.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 5:49 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
bw
По формату виндовый но есть отличия. Раньше секции в файле выравнивались на 512 байт. Сейчас большинство линковщиков выравнивает секции в файле на границу страницы. Такой модуль загружается в память как memory-mapped что упрощает и ускоряет весь процесс загрузки но увеличивает размер файла, особенно если там много секций. ld c ключом --file-alignment 16 уменьшит размер файла но очень вероятно что он не загрузится в Win. Ещё базовый адрес приложений в Колибри 0x0000 а в Win 0x400000. Наконец в Колибри программа и DLL могут быть упакованы так что бинарно они совсем не будут выглядеть как MS PE.

k@sTIg@r
Я не говорил что все проверки, но правильность указателей, строк, путей к файлам и прочие санитарные мероприятия можно проводить и в user-mode. Разумеется в таком случае вызовы ядра должны быть защищены от прямого доступа что не так и сложно. Вообще сначала проверками параметров пренебрегают, а потом жалуются что всё плохо работает.


Вернуться к началу
 Заголовок сообщения: Re: Новая модель ядра
СообщениеДобавлено: Ср окт 24, 2007 6:27 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
А поддержка dll формата MS COFF останется ? Меня интересует, не придётся ли переделывать libGUI под формат PE dll ?

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


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

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


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

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


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

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