Думаю тут лучше поможет SoUrcererUnusual wrote:а как тогда использовать BoxLib с компилятором tcc и что писать в коде?
Tiny C Compiler
-
to infinity and beyond
Дмитрий, помогите с BoxLib, пожалуйста !
Я не специалист и не знаю поможет или нет:
примеры использования библиотек в СИ из console.obj
из box_lib.obj
примеры использования библиотек в СИ из 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 и с экспортом.
http://websvn.kolibrios.org/filedetails ... s%2Fhttp.c
Странно, почему-то в репозитарии нет dll.asm; добавлю по возможности. Он основан на dll.inc, но немного отличается - он в ELF и с экспортом.
Допустим есть некая библиотека написанная на ассемблере (хотябы теже самые console.obj
и box_lib.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
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 325 times
-
[deleted by author]
Last edited by Косинус on Wed Apr 23, 2014 8:30 pm, edited 1 time in total.
SoUrcerer wrote:А это, батенька, смотрите в документации к библиотеке.
Для console.obj описание есть а вот для box_lib.obj такого описания я не нашел. Или искал плохо? Или в этой библиотеке все функции одинаково вызываются и поэтому нет особого описания. Но что тогда за схема вызова? Это нужно как-то самому отследить читая коды функций?0CodErr wrote: для console.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
Также есть примеры на ЯВУ:
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 3 guests