Зантересовался я проектом Wine так как он уже в стадии beta версии.
Почитал про него. Оказывается Wine просто перехватывает вызовы из exe файла Windows и переводит их в функции *nix. Следовательно возникает вопрос. Коль у нас есть TinyGL, то почему бы не заставить работать под Коллибри простое Windows OpenGL приложение так, как это делает Wine
Нужно перехватить вызов окна и нарисовать своё и перехватить вызов OpenGL функции и перенаправить на TinyGL.
Если идея верна, то как минимум Quake 2 можно заставить работать, а это открывает большие перспективы для Колибри.
Вопрос главный: Как перехватить вызовы?
Конечно, языком трепать - не код писать.
TinyGL, KolibriOS, Wine, Windows, PE (очередная идея %)
1) Quake2 не простое OpenGL приложение. И для него id software написала свой программный OpenGL драйвер.
2) Wine перехватывает вызовы импортируемых функций. Это не сложно. Информация о всех импортируемых функциях заносится в секцию ".idata" PE файла.
3)Kolibri не умеет загружать PE программы и DLL.
2) Wine перехватывает вызовы импортируемых функций. Это не сложно. Информация о всех импортируемых функциях заносится в секцию ".idata" PE файла.
3)Kolibri не умеет загружать PE программы и DLL.
3)Ну теоретически(!) можно запустить PE под Kolibri. Но для этого придется писать эмулятор статической или динамической рекомпиляции.
# Статическая рекомпиляция:
Такой эмулятор переписывает весь код программы, используя инструкции вашего компьютера. Таким образом вы запускаете программу безо всяких примочек. В результате, несомненно, высокая скорость работы. К сожалению, не всегда возможно использовать данный приём, например для самомодифицирующихся програм.
# Динамическая рекомпиляция:
Схожа со статической, но перекомпилирует программу налету, т.е. изменяет небольшие участки кода во время выполнения программы. Наверное это самый сложный способ
Veliant
Рекомпиляция не нужна. Загрузка РЕ не сильно отличается от загрузки COFF. У PE другой формат релокаций. Если написать PE программу без импортируемых функций то она сразу заработает. А для импорта потребуется подгружаемая ДЛЛ которая будет эмулировать вызовы как в Wine.
Рекомпиляция не нужна. Загрузка РЕ не сильно отличается от загрузки COFF. У PE другой формат релокаций. Если написать PE программу без импортируемых функций то она сразу заработает. А для импорта потребуется подгружаемая ДЛЛ которая будет эмулировать вызовы как в Wine.
Who is online
Users browsing this forum: No registered users and 5 guests