Page 1 of 16
Newlib
Posted: Fri Oct 29, 2010 11:34 am
by Serge
Выкладываю обещанную многопоточную версию
Newlib для mingw32. В папке test исходники теста malloc для 8 потоков. Работа еще не завершена, но для компиляции fplay достаточно.
Updated 12.03.2001
Особенности реализации.
Библиотека использует TLS. fs:[0] хранит pid текущего потока , fs:[4] нижнюю границу стека, fs:[8] верхнюю границу стека, fs:[12] адрес служебной структуры _reent. Код для работы с TLS будет добавлен позднее. Вывод в stdout и stderr перенаправляется на доску отладки. stdin не реализован.
Линковать -nostdlib -static -T kos.ld --image-base 0 --stack <размер стека>
objcopy -O binary <имя приложения>.exe
Обязательно указывайте размер стека !
В многопоточных приложениях для создания новых потоков используйте библиотечную функцию int create_thread();
Re: Newlib
Posted: Fri Oct 29, 2010 11:57 am
by Mario
Я так понимаю библиотеку для распаковки видео в формате OBJ так не сотворить?
Просто мне не улыбается ради такой библиотеки еще Fplay дизассемблировать, одного kpack уже через край - три недели мозги в разнос.
Re: Newlib
Posted: Fri Oct 29, 2010 12:56 pm
by Serge
Mario
Зачем так извращаться ? Немного потерпите, выложу скомпилированные библиотеки ffmeg-0.6, патч для svn (заливать исходники на наш сервер imho лишнее), свежий fplay (мне наконец удалось синхронизировать звук и видео. Таки можно смотреть, если есть звук
) и все исходники.
Никто не запрещает писать под Libc на ассемблере.
Code: Select all
format MS COFF
section '.text' code readable align 16
_main:
push msg_Hello
call _printf
add esp, 4
xor eax, eax
ret
msg_Hello db 'Hello world', 0
Скомпилировать и слинковать ld -nostdlib -static -T kos.ld --image-base 0 --stack 0x4000 -o my_asm_app.exe main.o libc.a
objcopy -O binary my_asm_app.exe my_asm_app
Re: Newlib
Posted: Fri Oct 29, 2010 1:05 pm
by SoUrcerer
Здорово, обязательно попробую
Re: Newlib
Posted: Fri Oct 29, 2010 1:10 pm
by Mario
Serge wrote:Немного потерпите, выложу скомпилированные библиотеки ffmeg-0.6, патч для svn (заливать исходники на наш сервер imho лишнее), свежий fplay (мне наконец удалось синхронизировать звук и видео. Таки можно смотреть, если есть звук
) и все исходники.
Замечательно, а то я уже в депрессию скатываться начал.
Serge wrote:Никто не запрещает писать под Libc на ассемблере.
Ну, пока я еще C++ не освоил, но идея доставляет.
Re: Newlib
Posted: Fri Oct 29, 2010 1:21 pm
by Serge
Нафиг С++. Чистый Си, без всяких извращений. Если учесть что уже есть отлаженная malloc, строковые функции, файловый ввод-вывод, qsort, математическая библиотека (возможно с ошибками
), то есть смысл её использовать. Там есть распаковщик kpack!!!
Re: Newlib
Posted: Fri Oct 29, 2010 1:46 pm
by Mario
Serge
Распаковка LZMA уже есть давно в ассемблерном виде в приложении Desktop, впрочем то что я получил от дизассемблера имеет более компактный код. Есть еще библиотека Kfar_arc. Я же переделываю именно упаковщик на асм. Распаковщик то вообще с полпинка заработал - там код простой.
Кстати чистый Си имеет режимы оптимизации компиляции? Нам бы максимальную скорость, чтобы на старых машинах шло.
З.Ы, Да, кстати порекомендуйте кто-нибудь хорошую,
годную книгу. Где разжеван Си также, как разжеван ассемблер у Юрова, Зубкова и Пирогова. Могу честно сказать если бы не эти три автора, то я бы много и долго плюхался когда начинал. Особенно помог именно Юров. Желательно электронную версию.
Re: Newlib
Posted: Fri Oct 29, 2010 2:39 pm
by Serge
Я взял распаковщик из ядра. Режимов оптимизации у компилятора масса. Обычно компилируют с ключами -O2 или -O3 для скорости и -Os для размера. Полный список есть
здесь, раздел 3.10.
Была очень неплохая книга "Просто и ясно о Borland C++". Две главы посвящены С и там действительно всё расписано просто и ясно. В сети полно сканов
http://itbookz.ru/nodata/nodatalang/2391-.html. Главы 2 и 3 для начинающих Сишников. ++часть тоже неплоха.
Re: Newlib
Posted: Fri Oct 29, 2010 3:45 pm
by Mario
Serge
Спасибо за ссылку.
З.Ы. Может еще кому пригодиться (
тыцкать сюда), чтобы не качать с нестабильных хранилищ.
Re: Newlib
Posted: Fri Oct 29, 2010 4:38 pm
by Asper
Поздравляю! Отличная работа.
Думаю с
Newlib портировать программы в Колибри станет намного проще.
Особенно рад новости о новой версии
fplay c синхронизацией аудио и видео.
Наверное придётся всё-таки восстановить
Win
Re: Newlib
Posted: Fri Oct 29, 2010 4:42 pm
by Mario
Asper wrote:
Наверное придётся всё-таки восстановить
Win
Собственно зачем? Разве под Linux нельзя скомпилить?
Re: Newlib
Posted: Fri Oct 29, 2010 4:48 pm
by Asper
Mario
Я учил
С (а потом и
C++) тоже на
Borland C++. В нём нет лишних виндовских и линуксовых особенностей, которые усложняют понимание языка на первых порах. Думаю, что с него действительно проще всего начинать.
Mario wrote:Asper wrote:
Наверное придётся всё-таки восстановить
Win
Собственно зачем? Разве под Linux нельзя скомпилить?
Может и можно, но думаю, что нужно будет обновлять большинство пакетов (
Zenwalk довольно старой версии стоит), да и Линукс я не очень-то люблю.
Re: Newlib
Posted: Fri Oct 29, 2010 5:00 pm
by Mario
Asper wrote:Наверное придётся всё-таки восстановить
Win
Asper wrote:да и Линукс я не очень-то люблю.
Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Re: Newlib
Posted: Fri Oct 29, 2010 5:03 pm
by Asper
Mario wrote:Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Asper wrote:Наверное придётся всё-таки восстановить
Win
Asper wrote:да и Линукс я не очень-то люблю.
Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Не-а, наша...
Re: Newlib
Posted: Fri Oct 29, 2010 5:09 pm
by Mario
Asper wrote:Mario wrote:Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Asper wrote:Наверное придётся всё-таки восстановить
Win
Asper wrote:да и Линукс я не очень-то люблю.
Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Не-а, наша...
О_О
???
Че правда? О_О