System coders zone Board.sysbin.com
Здесь говорят правду!   RSS   Файловый хостинг #1

 ПоискПоиск   ПользователиПользователи   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Express - запуск программы
На страницу 1, 2, 3, 4, 5, 6, 7, 8  След.
 
Начать новую тему   Ответить на тему    Список форумов Board.sysbin.com -> Express OS
Предыдущая тема :: Следующая тема  
Автор Сообщение
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Чт Апр 21, 2005 1:14 pm    Заголовок сообщения: Express - запуск программы Ответить с цитатой

Теперь можно запускать программы формата PE. В проекте есть простенькая программка Hello, которая печатает на экране приветствие. Чтобы увидеть динамику параллельной работы нескольких программ, можно скомпилировать несколько разных прог, которые циклически чего нибудь печатают. Тип exe-шника Windows NT console application, поэтому его можно создавать любым компилятором. Рантайм программы использует несколько функций библиотек kernel32 и user32, поэтому пришлось сделать эти либы и функции, большинство которых просто заглушки. Из программы можно вызывать функции библиотек kernel32, user32 и eosdll. Изза того что в программах для Express-а кроме Windows функций будут использоваться функции Express-а, программы не являются Windows-приложениями.
Реализация запуска. Программы запускаются из ДОС задач. Т.к. запуск осуществляется прерыванием Int 21 ah 4B, ОС его перехватывает и посылает сообщение в eosdll. Основной поток Eosdll в процессе ожидания сообщения находится в заблокированном состоянии. Поэтому ядро сначала устанавливает в специальной ячейке флаг запуска программы и указатель на имя программы, и разблокирует поток eosdll. Поток eosdll проверяет флаг запуска и создаёт новую задачу, задав ей в качестве точки старта специальную стартовую функцию из eosdll. Та функция загружает и запускает программу с помощью функции LoadLibrary. Используется функция LoadLibrary, потому что формат библиотек и программ одинаков.
Просмотреть профиль
CodeWorld
Гуру четвертой степени
Гуру четвертой степени


Зарегистрирован: 26.10.2003
Сообщения: 4426
Откуда: UA

СообщениеДобавлено: Пн Апр 25, 2005 7:25 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
в программах для Express-а кроме Windows функций будут использоваться функции Express-а

Можешь привести полный список эмулируемых функций?

Цитата:
поток Eosdll в процессе ожидания сообщения находится в заблокированном состоянии.

Это типо интерфейс к ядру Express? Он поток? Т.е. ядро однопоточное?
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Пн Апр 25, 2005 8:40 pm    Заголовок сообщения: Ответить с цитатой

Нет, список наверно будет формироваться по ходу дела, в порядке необходимости. Совместимость с Windows будет ограничена только функциями библиотек kernel32 и user32, за вычетом функций GUI, поэтому Windows приложения будут работать только консольные, по крайней мере пока. GUI будет какое-нибудь другое, не Win32. Основная кодировка будет Unicode, а Ansi функции в основном исключены.

>Это типо интерфейс к ядру Express? Он поток? Т.е. ядро однопоточное?

Это скорее простенький пробный способ запуска программы Hello. Это не готовый интерфейс, над ним ещё надо работать. Нет принципиальных проблем запуска нескольких потоков ядра, просто пока не понадобилось. Я пока что поддержкой Unicode занят.
PS А про какую ОС ты в аське писал?
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Пн Апр 25, 2005 11:48 pm    Заголовок сообщения: Ответить с цитатой

У кого какие-нибудь наработки по кодировкам есть? Интересует разбор формата файлов *.nls. В сырцах ReactOS и виндовс как-то размазанно и без комментариев, как говорится - без бутылки не разберёшься Smile
Просмотреть профиль
Freeman
Эксперт
Эксперт


Зарегистрирован: 27.11.2003
Сообщения: 849

СообщениеДобавлено: Вт Апр 26, 2005 12:10 am    Заголовок сообщения: Ответить с цитатой

Chizh писал(а):
У кого какие-нибудь наработки по кодировкам есть? Интересует разбор формата файлов *.nls.

Гы, я только недавно ковырялся, правда несколько по другому поводу. Нарыл вот такую ссылку. Правильность инфы проверить еще не удалось - переключился на другое.
Просмотреть профиль
CodeWorld
Гуру четвертой степени
Гуру четвертой степени


Зарегистрирован: 26.10.2003
Сообщения: 4426
Откуда: UA

СообщениеДобавлено: Вт Апр 26, 2005 10:59 am    Заголовок сообщения: Ответить с цитатой

Цитата:
Нет принципиальных проблем запуска нескольких потоков ядра, просто пока не понадобилось.

Пока не понадобилось? А само ядро ты уже разсинхронизировал на одновременнный доступ? Расскажи че нить про саму реализацию ядра, а то в сырцах ковыряться не благородное дело Wink
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Вт Апр 26, 2005 11:38 am    Заголовок сообщения: Ответить с цитатой

>Пока не понадобилось? А само ядро ты уже разсинхронизировал на одновременнный доступ?

Ни многопоточностью ни синхронизацией я ещё пока что не занимался. Эти вещи конечно хорошие и нужные, но пока что я занят другими вещами. Короче здесь ещё не паханное поле Smile

>Расскажи че нить про саму реализацию ядра, а то в сырцах ковыряться не благородное дело Wink

Всё ядро - это обработчики исключений, прерываний и шлюзов. Все эти функции работают в монопольном режиме с запрещёнными прерываниями. Поверх всего этого "крутится" задача eosdll, которая является как бы менеджером. Посмотри в ней функцию _LibMain, вся работа делается в цикле for(). Там почти ничего нет Smile

Freeman, спасибо, посмотрю.
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Вт Апр 26, 2005 1:16 pm    Заголовок сообщения: Ответить с цитатой

Я нашёл кодировки в виде текстовых таблиц на сайте http://www.unicode.org/Public/MAPPINGS (например http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS и в прочих директориях). Можно ещё на http://www-106.ibm.com/developerworks/views/java/downloads.jsp ввести Keyword:Character Data Conversion. Таблица соответствия заглавных/приписных букв http://www.unicode.org/Public/UNIDATA/CaseFolding.txt. Для начала мне кажется лучше их использовать, так проще.
Ещё есть кодировки в сырцах Linux-а в директории \fs\nls, там таблицы прямо в сишном коде, из них в тоже можно сгенерировать таблицы.
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Сб Апр 30, 2005 12:09 am    Заголовок сообщения: Express - перезагрузка Ответить с цитатой

Меня не будет пару недель...
Предлагаю пока что тему для размышления. Приглашаю в команду писаталей ОС. Текущий план действий:
Я думаю настала пора писать загрузчик Very Happy На основе бут-менеджера GRUB. Во-первых надо сделать инсталятор бут-сектора и автоматическое подключение к GRUB-у. Старт ОС в реальном режиме, потом она всё делает сама. Надо разработать сценарий загрузки, и что нужно реализовать для этого. При разработке можно расчитывать на то, что после перехода в PM можно будет вызывать любые функции BIOS без проблем, например для чтения секторов. С начала нужно сделать загрузку с дискеты, соответственно загрузчик должен поддерживать файловую систему FAT12. Компиляторы проекта: Watcom Assembler (wasm.exe) и Watcom C++ (wpp.exe, wpp386.exe). Вся отладка в эмуляторе Bochs. Конечно же, помогу всем чем смогу.
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Чт Май 19, 2005 6:29 pm    Заголовок сообщения: Ответить с цитатой

У меня есть вопрос по вызову функций Win32 API из программы. Проблема вот в чём. Все функции имеют атрибут __stdcall, соответственно в объектнике их имена приобретают вид _Имя@. А хитрость в том, что модуль kernel32.dll экспортирует имена функций без декораций. Связывание этих разных имён происходит на этапе линковки программы, используя дополнительную библиотеку kernel32.lib, которая содержит преходники из одних имён в другие. Для меня это чёрный ящик, не пойму как мне сгененировать такой lib файл во время копмиляции собственного модуля kernel32.dll. Меня интересует не сам kernel32.lib - он есть в любом компиляторе, а механизм создания таких файлов с такими хитрыми именами-переходниками.
Просмотреть профиль
Chizh
Гуру второй степени
Гуру второй степени


Зарегистрирован: 18.03.2005
Сообщения: 2041
Откуда: с Луны

СообщениеДобавлено: Чт Май 19, 2005 7:02 pm    Заголовок сообщения: Ответить с цитатой

Судя по отсутствию щелающих писать код для экспресса, у меня возникло желание провести на эту тему опрос - что делает для вас невозможным участие в этом проекте (и какие проблемы этим проектом не решаемы в принципе). Это не агитация, просто интересно кто чего думает, возможно это поможет решить какие-нибудь проблемы проекта.
Просмотреть профиль
CodeWorld
Гуру четвертой степени
Гуру четвертой степени


Зарегистрирован: 26.10.2003
Сообщения: 4426
Откуда: UA

СообщениеДобавлено: Пт Май 20, 2005 6:14 am    Заголовок сообщения: Ответить с цитатой

С возвращением! smile

Цитата:
Судя по отсутствию щелающих писать код для экспресса

Я думаю ты предоставляешь слишком мало информации, напиши доку, расскажи о планах, подробненько о сегодняшней реализации (хотя часть уже выпатана здесь) А так вообще трудно сказать к чему дело придёт.
Просмотреть профиль
Dron
Гуру третьей степени
Гуру третьей степени


Зарегистрирован: 12.01.2005
Сообщения: 3107
Откуда: Москва

СообщениеДобавлено: Пт Май 20, 2005 9:02 am    Заголовок сообщения: Ответить с цитатой

Насчет либ...
Если ты работаешь в Визуал студии - там это просто... называется интерфейсная либа...
Кстати никто не мешает вызывать функцию из DLL напрямую. Smile
Типа LoadLibrary, а потом GetProcAddress... и вызывай.
Я даже подозреваю что точно так же работают интерфейсные либы.

Насчет других компиляторов не скажу... в линухе никогда не приходилось делать такого.
Просмотреть профиль
Alexandoros
Эксперт
Эксперт


Зарегистрирован: 27.02.2005
Сообщения: 961
Откуда: Ukraine

СообщениеДобавлено: Пт Май 20, 2005 9:30 am    Заголовок сообщения: Ответить с цитатой

Чиж - не нута копаеш. Такая lib наверное компиллер специфик. Тебе не нужна вся эта хрень.

Вот что нужно

"Microsoft introduced __export in the 16-bit compiler version of Visual C++ to allow the compiler to generate the export names automatically and place them in a .LIB file. This .LIB file could then be used just like a static .LIB to link with a DLL.

In the 32-bit compiler version, you can export data, functions, classes, or class member functions from a DLL using the __declspec(dllexport) keyword. __declspec(dllexport) adds the export directive to the object file so you don't need to use a .DEF file."

ms-help://MS.MSDNQTR.2003APR.1033/vccore/html/_core_export_from_a_dll_using___declspec.28.dllexport.29.htm
// релиз April 2003

ps_by_cw: скрул боковой появился. ненавижу его! при цитатах и коде он пробелы не удаляет и по строкам переносит как то не по честному. отредактировал. ОК ? smile
Просмотреть профиль
Dron
Гуру третьей степени
Гуру третьей степени


Зарегистрирован: 12.01.2005
Сообщения: 3107
Откуда: Москва

СообщениеДобавлено: Пт Май 20, 2005 9:55 am    Заголовок сообщения: Ответить с цитатой

Свалка... одна ссылка чего стоит... Smile

Я примерно про это и говорил. интерфейсная либа.
Просмотреть профиль
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Board.sysbin.com -> Express OS Часовой пояс: GMT + 3
На страницу 1, 2, 3, 4, 5, 6, 7, 8  След.
Страница 1 из 8

Similar Topics
Тема Автор Форум
Нет новых сообщений Запуск Express Freeman Express OS
Нет новых сообщений Архитектура Express Freeman Express OS
Нет новых сообщений FreeBSD vs. Solaris Express CodeWorld News
Нет новых сообщений Выход Solaris Express 10/05 (Nevada Build 23) CodeWorld News
Нет новых сообщений Запуск веб-сервисов Windows Live и Office Live CodeWorld News




Powered by www.phpbb.com