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 (мне наконец удалось синхронизировать звук и видео. Таки можно смотреть, если есть звук :lol: ) и все исходники.

Никто не запрещает писать под 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 (мне наконец удалось синхронизировать звук и видео. Таки можно смотреть, если есть звук :lol: ) и все исходники.
Замечательно, а то я уже в депрессию скатываться начал. :)
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. Я же переделываю именно упаковщик на асм. Распаковщик то вообще с полпинка заработал - там код простой.

Кстати чистый Си имеет режимы оптимизации компиляции? Нам бы максимальную скорость, чтобы на старых машинах шло. :mrgreen:

З.Ы, Да, кстати порекомендуйте кто-нибудь хорошую, годную книгу. Где разжеван Си также, как разжеван ассемблер у Юрова, Зубкова и Пирогова. Могу честно сказать если бы не эти три автора, то я бы много и долго плюхался когда начинал. Особенно помог именно Юров. Желательно электронную версию.

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? О_о
Не-а, наша... 8)

Re: Newlib

Posted: Fri Oct 29, 2010 5:09 pm
by Mario
Asper wrote:
Mario wrote:Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Asper wrote:Наверное придётся всё-таки восстановить Win :)
Asper wrote:да и Линукс я не очень-то люблю.
Собственно мой мозг не переваривает эти два параграфа. Неужели BSD? О_о
Не-а, наша... 8)
О_О
???
Че правда? О_О