Tiny C Compiler

...
  • Дмитрий, помогите с BoxLib, пожалуйста !
  • Я не специалист и не знаю поможет или нет:
    примеры использования библиотек в СИ из console.obj
    из box_lib.obj
  • Всё верно, нужно взять console.obj и заменить функции console на функции box_lib. Может потребоваться объявление stdcall, дополнительных функций и использование dll.asm - модуля загрузки dll на fasm. Предлагаю посмотреть тут:
    http://websvn.kolibrios.org/filedetails ... s%2Fhttp.c
    Странно, почему-то в репозитарии нет dll.asm; добавлю по возможности. Он основан на dll.inc, но немного отличается - он в ELF и с экспортом.
  • Допустим есть некая библиотека написанная на ассемблере (хотябы теже самые console.obj
    и box_lib.obj ). Как узнать как я должен вызывать эти функции на языке СИ - какие параметры нужно передавать и что эта функция возвращает, т.е. какой у функции должен быть заголовок (или у указателя)?
  • z525, для console.obj есть описание, например, здесь http://websvn.kolibrios.org/filedetails ... ole_en.txt
    console.obj exports the following functions

    typedef unsigned long dword; /* 32-bit unsigned integer */
    typedef unsigned short word; /* 16-bit unsigned integer */

    void __stdcall con_init(dword wnd_width, dword wnd_height,
    dword scr_width, dword scr_height, const char* title);
    [...]
    void __stdcall con_exit(bool bCloseWindow);
    [...]
    void __stdcall con_set_title(const char* title);
    [...]
    void __stdcall con_write_asciiz(const char* string);
    [...]
  • А это, батенька, смотрите в документации к библиотеке. Например,
    http://websvn.kolibrios.org/filedetails ... ttp_en.txt - здесь сразу указано, какие функции и какой формат.

    А вот в network.obj смотрим:
    http://websvn.kolibrios.org/filedetails ... lookup.asm
    Здесь параметры передаются через стек, возвращаются в eax - видим обычный stdcall. О, и правда: http://www.opennet.ru/man.shtml?topic=g ... &russian=2

    Code: Select all

    int getaddrinfo(const char *node, const char *service,
                    const struct addrinfo *hints,
                    struct addrinfo **res);
    
  • [deleted by author]
    Last edited by Косинус on Wed Apr 23, 2014 8:29 pm, edited 1 time in total.
  • Держите. Work in progress. Файл tcckos.c просто внаглую скопирован из старого порта, и ещё не приведен в соответствие с остальным кодом - и не используется.
    Attachments
    tcc-pe.7z (607.78 KiB)
    Downloaded 320 times
  • [deleted by author]
    Last edited by Косинус on Wed Apr 23, 2014 8:30 pm, edited 1 time in total.
  • SoUrcerer wrote:А это, батенька, смотрите в документации к библиотеке.
    0CodErr wrote: для console.obj есть описание, например, здесь
    Для console.obj описание есть а вот для box_lib.obj такого описания я не нашел. Или искал плохо? Или в этой библиотеке все функции одинаково вызываются и поэтому нет особого описания. Но что тогда за схема вызова? Это нужно как-то самому отследить читая коды функций?
  • Там все управляется через структуры в основном. Я не особо разбирался; рекомендую проверить примеры, они реально выглядят простыми.
  • z525, там должно быть stdcall. Кроме lib_init. А lib_init нужна при использовании tree_list или text_editor.
    Также есть примеры на ЯВУ:
    XDS Modula-2/Oberon-2 compiler: viewtopic.php?f=33&t=2280#p47919
    FreeBasic: viewtopic.php?f=33&t=2202#p47749
  • Как в консольном приложении, которое пишу на Tiny C, осуществить ввод с клавиатуры? Какой функцией воспользоваться и как её подключить?
  • Who is online

    Users browsing this forum: No registered users and 2 guests