Ну, проект ведь сугубо добровольный и даже выбор инструментов сугубо добровольный. Однако к сожалению под саму Колибри ничего нет кроме Fasm (великого и могучего как Русский язык). Так что в данный момент и обсуждать в этом плане относительно Колибри бессмысленно. Все что не может быть скомпилировано в самой ОС - навязывает зависимость от сторонних программ и систем.Serge wrote:А вот писать на асме обычный код имхо тратить время впустую.
Либы на ЯВУ
Mario
С этим тоже согласен. Попробую как нибудь собрать gcc для Колибри. Тогда не отвертитесь
С этим тоже согласен. Попробую как нибудь собрать gcc для Колибри. Тогда не отвертитесь
Serge
А че не отвертитесь то? Я бы рад был получить библиотеку распаковки Видео и Звука. Если бы это была работа уровня распаковки картинок как в zSea, то видеоплеер был бы не за горами, даже учитывая что пишу на ассемблере. А уж как работать с RAW данными кодом на ассемблере - это я умею.
К тому же работа будет считаться 100% зачтенной лишь в случае, если собранный GCC соберет себя сам под Колибри, как в свое время FASM собрал себя сам у Томаша (не под Колибри и не под Menuet было дело правда, хотя хз каким путем Вилле портировал).
А че не отвертитесь то? Я бы рад был получить библиотеку распаковки Видео и Звука. Если бы это была работа уровня распаковки картинок как в zSea, то видеоплеер был бы не за горами, даже учитывая что пишу на ассемблере. А уж как работать с RAW данными кодом на ассемблере - это я умею.
К тому же работа будет считаться 100% зачтенной лишь в случае, если собранный GCC соберет себя сам под Колибри, как в свое время FASM собрал себя сам у Томаша (не под Колибри и не под Menuet было дело правда, хотя хз каким путем Вилле портировал).
Mario
Так есть оно все. И mpg123 и ffpmeg. Первый в PE DLL, вторые пока в обычной либе для статической компоновки. C ffmpeg проблема в том что нормально он работает только в виде DLL. Под винду статику уже давно не выкладывают. Сделал специальный лаунчер чтобы запускать PE приложения с прилинковкой DLL. Всё работает в usermode. Но теперь в Колибри библиотеки расшарены и такой вариант проигрывает по расходу памяти. Хотя у многих сейчас памяти больше, чем может использовать ядро.
Так есть оно все. И mpg123 и ffpmeg. Первый в PE DLL, вторые пока в обычной либе для статической компоновки. C ffmpeg проблема в том что нормально он работает только в виде DLL. Под винду статику уже давно не выкладывают. Сделал специальный лаунчер чтобы запускать PE приложения с прилинковкой DLL. Всё работает в usermode. Но теперь в Колибри библиотеки расшарены и такой вариант проигрывает по расходу памяти. Хотя у многих сейчас памяти больше, чем может использовать ядро.
Serge
Статические для меня лично не удобны не тем, что их приходится ликовать при компиляции, а FASM это не кушает. Столкнулся этим при прикручивании OpenDialog к kpack - код под Tasm я переписал на Fasm, а вот со статической библиотекой упаковки LZMA облом. Была мысль "линковать" через опцию file, но как оказалось сама библиотека LIB имеет хитрую структуру и при линковке в Tasm значительно модернизируется. Все хитрости относительно LIB я узнал у diamond'a через мессенджер.
В общем при любом раскладе мне нужно получить используемый в Колибри MS COFF OBJ для работы с ним в Fasm и было бы здорово придумать и отладить универсальную и достаточной простую методику получения. Или в текущем яре есть возможность загружать не только MS COFF OBJ? Позиция по этому вопросу не принципиальная, лишь бы была возможность простого вызова из приложения.
Статические для меня лично не удобны не тем, что их приходится ликовать при компиляции, а FASM это не кушает. Столкнулся этим при прикручивании OpenDialog к kpack - код под Tasm я переписал на Fasm, а вот со статической библиотекой упаковки LZMA облом. Была мысль "линковать" через опцию file, но как оказалось сама библиотека LIB имеет хитрую структуру и при линковке в Tasm значительно модернизируется. Все хитрости относительно LIB я узнал у diamond'a через мессенджер.
В общем при любом раскладе мне нужно получить используемый в Колибри MS COFF OBJ для работы с ним в Fasm и было бы здорово придумать и отладить универсальную и достаточной простую методику получения. Или в текущем яре есть возможность загружать не только MS COFF OBJ? Позиция по этому вопросу не принципиальная, лишь бы была возможность простого вызова из приложения.
Mario
Дохлый номер. В больших библиотеках тысячи файлов. Часто пишут так что одна функция - один файл и соответственно один *.obj. Не случайно компоновщики несколько сот килибайт занимают и памяти требуют много. Вообще идея использовать COFF.obj для длл была крайне неудачной. Надо было сразу делать PE. А все это дурацкое общее стремление сэкономить пару байт. Теперь оно выходит боком. С одной стороны DLL вроде и есть и даже расшарены, а с другой попробуй скомпилируй freetype, ffmpeg или mesa в один файл.
Дохлый номер. В больших библиотеках тысячи файлов. Часто пишут так что одна функция - один файл и соответственно один *.obj. Не случайно компоновщики несколько сот килибайт занимают и памяти требуют много. Вообще идея использовать COFF.obj для длл была крайне неудачной. Надо было сразу делать PE. А все это дурацкое общее стремление сэкономить пару байт. Теперь оно выходит боком. С одной стороны DLL вроде и есть и даже расшарены, а с другой попробуй скомпилируй freetype, ffmpeg или mesa в один файл.
Serge
Но ведь есть утилиты которые собирают LIB из OBJ - неужели нельзя написать обратную процедуру, чтобы распотрошила LIB на кучу OBJ?
Но ведь есть утилиты которые собирают LIB из OBJ - неужели нельзя написать обратную процедуру, чтобы распотрошила LIB на кучу OBJ?
Mario
Те же самые утилиты и потрошат. Это ведь архив. ar -x имя_библиотеки. Извлекает все объекты. Только их там сотни и между ними прекрёстные ссылки. Один тянет за собой десяток других. Вот для примера список объектов в libavcodec.a
Те же самые утилиты и потрошат. Это ведь архив. ar -x имя_библиотеки. Извлекает все объекты. Только их там сотни и между ними прекрёстные ссылки. Один тянет за собой десяток других. Вот для примера список объектов в libavcodec.a
- Attachments
-
-
libavcodec.txt (3.48 KiB)Downloaded 365 times
-
Serge
Т.е. линковщик эти самые перекрестные связи анализирует и оставляет только нужные?
Т.е. линковщик эти самые перекрестные связи анализирует и оставляет только нужные?
Mario
Да. Строятся списки имён переменных и функций по всем объектным файлам и дерево зависимостей. Если на переменные и функции из объектного файла нет ссылок он не включается в конечную программу. Eщё проводится масса различных оптимизаций. Последние версии компоновщиков вообще сами генерируют окончательный код (Link-time code generation). Компилятор создаёт промежуточный псевдокод для программы и библиотечных функций из которого компоновщик собирает программу. Bochs после такой компиляции получается процентов на 20 меньше и заметно быстрее.
Да. Строятся списки имён переменных и функций по всем объектным файлам и дерево зависимостей. Если на переменные и функции из объектного файла нет ссылок он не включается в конечную программу. Eщё проводится масса различных оптимизаций. Последние версии компоновщиков вообще сами генерируют окончательный код (Link-time code generation). Компилятор создаёт промежуточный псевдокод для программы и библиотечных функций из которого компоновщик собирает программу. Bochs после такой компиляции получается процентов на 20 меньше и заметно быстрее.
Serge
Вопрос тогда такой: те OBJ которые в LIB - они имеют формат подобный Колибри OBJ или отличаются, т.е. их нельзя загрузить и использовать в Колибри без переделки?
Вопрос тогда такой: те OBJ которые в LIB - они имеют формат подобный Колибри OBJ или отличаются, т.е. их нельзя загрузить и использовать в Колибри без переделки?
Если там MS COFF то формат файла совпадает. Но в библиотеке Колибри должна быть самодельная таблица экспорта и метка EXPORTS. Без неё импорт из библиотеки невозможен.
> мне нужно получить используемый в Колибри MS COFF OBJ
diamond же сделал утиль по конвертации DLL в OBJ, чуть ли не по моей просьбе (kex, без сорцев). Работает, я проверял. Костыль конечно, но лучше чем ничего.
..bw
diamond же сделал утиль по конвертации DLL в OBJ, чуть ли не по моей просьбе (kex, без сорцев). Работает, я проверял. Костыль конечно, но лучше чем ничего.
..bw
DLL в OBJ это конечно замечательно, но мне в конкретном случае надо kpack доковырять с уже имеющейся LIB библиотекой.
Спасибо за сведения - в любом случае пригодится.
Спасибо за сведения - в любом случае пригодится.
Надеюсь к драйверам это отношения не имеет.Serge wrote: Вообще идея использовать COFF.obj для длл была крайне неудачной. Надо было сразу делать PE.
Who is online
Users browsing this forum: No registered users and 13 guests