Общие вопросы по языку Си.

High-level languages programming questions
  • В C_Layer есть реализация и вызовы из lib_img

    http://websvn.kolibrios.org/filedetails ... on_files.c

    можно адаптировать для ТСС

    но я там не вижу инициализации функций памяти - и без них работали функции. может они там и не нужны?вызывались при загрузке DLL.Load

    похоже на то, для полной функциональности нужно вызвать (придется на встроенном ассемблере)
    lib_init при eax=mem.alloc, ebx = mem.free, ecx = mem.realloc, edx функция загрузки (нужна только для png) - можно поставить 0

    функции mem.alloc итп - получают параметр в eax, возвращают eax - простые обвязки системных вызовов

    слишком сложно, адаптация в топике ниже

    Упд. Впрочем, думаю, что можно сделать небольшую заготовочку на FASM только скомпилировать в ELF, и TCC подцепит объектник. Надо попробовать.
    Upd: Done
    Last edited by Siemargl on Tue Oct 09, 2018 10:14 pm, edited 1 time in total.
  • Siemargl Спасибо. Гляну, попробую, может чего выйдет. Но моих познаний в Си, боюсь не хватит. :mrgreen:
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:Siemargl Спасибо. Гляну, попробую, может чего выйдет. Но моих познаний в Си, боюсь не хватит. :mrgreen:
    Готов пример в приложении. Важное отличие от gcc - расположение __attrib__ в объявлениях

    Оказалось чуть сложнее, чем я думал.
    Но зато остальные либы будет проще импортировать
    Attachments
    libimgdemo.zip (122.04 KiB)
    Downloaded 326 times
  • Siemargl
    Большое спасибо за пример!

    Я тут попытался перекомпилировать твой пример, в Linux и Kolibri, но не компилируется.

    В Kolibri, tcc пишет это.
    Image
    Командная строка, такая:

    Code: Select all

    tcc libimgdemo.c loadlibimg.o -o libimgdemo -lck -I..\include -L..\lib -g
    В Linux, tcc пишет это.
    Image
    Командная строка, такая:

    Code: Select all

    tcc libimgdemo.c loadlibimg.o -o libimgdemo -lck -I./include -L./lib -g
    Компилятор для Kolibri, брал здесь (tcc_26_180925).

    Хотелось бы узнать, что я делаю не так.
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:Siemargl
    Большое спасибо за пример!

    Я тут попытался перекомпилировать твой пример, в Linux и Kolibri, но не компилируется.

    В Kolibri, tcc пишет это.
    Image
    Командная строка, такая:

    Code: Select all

    tcc libimgdemo.c loadlibimg.o -o libimgdemo -lck -I..\include -L..\lib -g
    В Linux, tcc пишет это.
    Image
    Командная строка, такая:

    Code: Select all

    tcc libimgdemo.c loadlibimg.o -o libimgdemo -lck -I./include -L./lib -g
    Компилятор для Kolibri, брал здесь (tcc_26_180925).

    Хотелось бы узнать, что я делаю не так.
    http://board.kolibrios.org/viewtopic.php?p=71753#p71753

    про линух - непонятно почему по другому
  • Siemargl
    Заменил строку "#include "kos32sys1.h" на "#include "kos32sys0.h".
    Теперь, пример в Колибри компилируется без ошибок, но не запускается получившийся бинарник.
    Доска отладки ничего не показывает. :(
    The Glass is Always Half Full! :mrgreen:
  • А скомпилированный мной - он тоже в архиве - запускает?

    Открой board - туда пишутся ошибки и вылеты - там если что есть кнопочка режима
  • Siemargl wrote:А скомпилированный мной - он тоже в архиве - запускает?
    Твой бинарник запускается. :roll:
    Siemargl wrote:Открой board - туда пишутся ошибки и вылеты - там если что есть кнопочка режима
    Да, чего-то про кнопочку забыл. :mrgreen:

    Вот скрин:
    Image
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:
    Siemargl wrote:А скомпилированный мной - он тоже в архиве - запускает?
    Твой бинарник запускается. :roll:
    Siemargl wrote:Открой board - туда пишутся ошибки и вылеты - там если что есть кнопочка режима
    Да, чего-то про кнопочку забыл. :mrgreen:

    Вот скрин:
    Image
    Версию компилятора (libck) обновил до tcc_26_180925.zip?

    Приложи сюда твой бинарник и .dbg файл, если версия новая
  • Siemargl wrote:Версию компилятора (libck) обновил до tcc_26_180925.zip?
    Я же уже написал выше...
    JohnXenox wrote:Компилятор для Kolibri, брал здесь (tcc_26_180925).
    Там же и libck.a находится. Или надо было отдельно, что-то закачивать или перекомпилировать?

    Чтобы было понятнее, что я делал, по шагам:
    1. Скачал tcc_26_180925.zip.
    2. Разархивировал файл tcc_26_180925.zip.
    3. Удалил файл kos32-tcc.exe (в Колибри, не требуется) в папке tcc_26_180925.
    4. Забросил в папку tcc_26_180925, всё содержимое папки libimgdemo.
    5. Удалил папку libimgdemo.
    6. Папку tcc_26_180925, переименовал в libimgdemo.
    7. Добавил shell скрипт для компиляции. Командную строку, уже публиковал выше.
    8. Бросил папку на раздел для Колибри.
    9. Загрузился в Колибри.
    10. Открыл файловый менеджер и перешёл в директорию libimgdemo.
    11. Запустил shell скрипт, для перекомпиляции.
    12. Попробовал запустить бинарник. Бенарник не запустился.
    13. Всё.
    Siemargl wrote:Приложи сюда твой бинарник и .dbg файл.
    Приложил.
    Attachments
    Downloaded 313 times
    The Glass is Always Half Full! :mrgreen:
  • JohnXenox wrote:
    Spoiler:
    Siemargl wrote:Версию компилятора (libck) обновил до tcc_26_180925.zip?
    Я же уже написал выше...
    JohnXenox wrote:Компилятор для Kolibri, брал здесь (tcc_26_180925).
    Там же и libck.a находится. Или надо было отдельно, что-то закачивать или перекомпилировать?

    Чтобы было понятнее, что я делал, по шагам:
    1. Скачал tcc_26_180925.zip.
    2. Разархивировал файл tcc_26_180925.zip.
    3. Удалил файл kos32-tcc.exe (в Колибри, не требуется) в папке tcc_26_180925.
    4. Забросил в папку tcc_26_180925, всё содержимое папки libimgdemo.
    5. Удалил папку libimgdemo.
    6. Папку tcc_26_180925, переименовал в libimgdemo.
    7. Добавил shell скрипт для компиляции. Командную строку, уже публиковал выше.
    8. Бросил папку на раздел для Колибри.
    9. Загрузился в Колибри.
    10. Открыл файловый менеджер и перешёл в директорию libimgdemo.
    11. Запустил shell скрипт, для перекомпиляции.
    12. Попробовал запустить бинарник. Бенарник не запустился.
    13. Всё.
    Siemargl wrote:Приложи сюда твой бинарник и .dbg файл.
    Приложил.
    Ты очень помог - оказывается в архив не попали два важных исправления из SVN

    заодно откатил kos32sys1.h до рабочей

    обновись до tcc_26_181012 - там же
  • На SVN/ISO версия работая?
    Из хаоса в космос
  • Leency wrote:На SVN/ISO версия работая?
    исходники верные, но в автосборке его нет.
    там нужно собрать компилятор (скрипт вижу), libck.a /start.o и еще и поскладывать всякие include и примеры
  • Siemargl wrote: Ты очень помог - оказывается в архив не попали два важных исправления из SVN

    заодно откатил kos32sys1.h до рабочей

    обновись до tcc_26_181012 - там же
    Ясно. Щя обновлюсь.
    The Glass is Always Half Full! :mrgreen:
  • Who is online

    Users browsing this forum: No registered users and 3 guests