Page 8 of 20

Re: Tiny C Compiler

Posted: Mon Oct 15, 2007 5:24 pm
by andrew_programmer
Вышла новая версия библиотеки libC для использования в TinyC и GCC.

Что нового:
Исправлены ошибки в функциях работы с файлами и с системными вызовами KolibriOS.
Добавлены новые функции для работы с системными вызовами KolibriOS. Добавлены функции для
форматированного вывода : printf(), fprintf(), sprintf(), snprintf(), vsnprintf().
Для вещественных чисел пока что поддерживается только форматированный вывод (%f ), а
експоненциальный вывод(%e) ещё не реализован.

Функции форматированного вывода корректно работают только в GCC, потому что TinyC
неправильно работает с функциями, содержащими переменное число аргументов.
Компилятор TinyC(для KolibriOS) вместе с собранными библиотеками(libC, libm) вы можете
загрузить отсюда:
ftp://kolibrios.org/upload/ktcc.7z

The new version of library libC for use in TinyC and GCC has left.

That new:
Mistakes in functions of work with files and with system calls KolibriOS are corrected.
New functions for work with system calls KolibriOS are added. Functions for format output
are added: printf (), fprintf (), sprintf (), snprintf (), vsnprintf (). For material
numbers it is meanwhile supported only format output the (%f), and exponential output a (%e)
is not realized yet.
Functions for format output correctly work only in GCC because TinyC incorrectly works with
the functions containing variable number of arguments.

Compiler TinyC (for KolibriOS) together with the collected libraries (libC, libm) you can
load from here:

ftp://kolibrios.org/upload/ktcc.7z

Re: Tiny C Compiler

Posted: Mon Oct 15, 2007 5:44 pm
by bw
Хорошая новость. Надеюсь ты будешь постоянно поддерживать libc, а так же возмешься за другие образующие си библиотеки, например pthread.

..bw

Re: Tiny C Compiler

Posted: Mon Oct 15, 2007 7:21 pm
by vectoroc
Неверю что TinyC
неправильно работает с функциями, содержащими переменное число аргументов.
На офсайте
Currently implemented ISOC99 features:
- Variadic macros: __VA_ARGS__ can be used for function-like macros:

#define dprintf(level, __VA_ARGS__) printf(__VA_ARGS__)
dprintf can then be used with a variable number of parameters.
http://fabrice.bellard.free.fr/tcc/tcc-doc.html

Re: Tiny C Compiler

Posted: Sat Oct 20, 2007 7:16 pm
by andrew_programmer
vectoroc

Ты смотриш на TinyC с наблюдательской точки зрения и не проводиш никаких тестов этого компилятора.
Я провел сотни тестов этого компилятора и выяснил всякие особенности этого компилятора. Что он поддерживает, а что неподдерживает.Что поддерживает частично.И что в нём поддерживается, но работает некорректно.
Вот тест на работу с переменным числом параметров. Скомпилируй его при помощи ktcc.kex .Параметры для компиляции такие: ktcc.kex -o test.kex test.c -lck
Запусти доску отладки и запусти test. А потом сравни то, что выведено на неё,с тем, что должно было быть выведено.

Code: Select all

#include <stdio.h>
#include <stdlib.h>


int test_func(const char *format,...)
{
        va_list         ap;
        int             integer_digit;
        long            long_digit;
        float           real_digit;
        char            c;

        va_start(ap,format);

        debug_out_str("\nbegin test...\n");

        c=va_arg(ap,int);
        if (c=='A') {debug_out_str("simbol test ok\n");}

        integer_digit=va_arg(ap,int);
        if (integer_digit==12345) {debug_out_str("int test ok\n");}

        long_digit=va_arg(ap,long);
        if (long_digit==123456789) {debug_out_str("long test ok\n");}

        real_digit=va_arg(ap,double);
        if (real_digit==123.45) {debug_out_str("float test ok\n");}

        c=va_arg(ap,int);
        if (c=='B') {debug_out_str("next simbol(B) test ok\n");}

        debug_out_str("test finished\n");
}

int main(int argc, char **argv)
{
  int           a;
  long          b;
  float         c;

   a=12345;
   b=123456789;
   c=123.45;
   test_func("Test %c,%d,%d,%f,%c",'A',a,b,c,'B');

}

Re: Tiny C Compiler

Posted: Sun Oct 21, 2007 7:28 pm
by vectoroc
Ты смотриш на TinyC с наблюдательской точки зрения и не проводиш никаких тестов этого компилятора.
В этом ты прав...
Попробуем разобраться. На первый взгляд
test_func("Test %c,%d,%d,%f,%c",'A',a,b,c,'B'); - c=va_arg(ap,int);
почему int? Мне до сих пор кажется что ты сделал поспешный вывод.
Посмотри файл tcctest.c в programs\develop\metcc\trunk\source на svn, там есть пример работы на данную тему. Проверять мне лень, но мне так кажется разрабы постарались бы в тестовый файл только рабочий код ложить ;)

Re: Tiny C Compiler

Posted: Mon Oct 22, 2007 2:52 pm
by vectoroc

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

int test_func(const char *format,...)
{
        va_list         ap;
        int             integer_digit;
        long            long_digit;
        double           real_digit;
        char            c;

        va_start(ap,format);

        printf("\nbegin test...\n");

        c = va_arg(ap,char);
        if (c=='A') {printf("simbol test ok\n");}

        integer_digit= va_arg(ap,int);
        if (integer_digit==12345) {
           printf("int test ok\n");
        }

        long_digit=va_arg(ap,long);
        if (long_digit==123456789) {printf("long test ok\n");}

        real_digit=va_arg(ap,double);
        if (real_digit==123.45) {printf("float test ok\n");}

        c=va_arg(ap,int);
        if (c=='B') {printf("next simbol(B) test ok\n");}

        printf("test finished\n");
        
        va_end(ap);
}

int main(int argc, char **argv)
{
  int           a;
  long          b;
  float         c;

   a=12345;
   b=123456789;
   c=123.45;
   test_func("Test %c,%d,%d,%f,%c",'A',a,b,c,'B');

}
Переборол свою лень, взял оригинальный tcc, скомпилил tcc.exe test.c -o test.exe -I"..\include" -L"..\lib"
И всё работает... собственно даже без изменений твой код работает, только прописать ещё stdargs.
Так что твои упрёки в сторону разрабов tcc безпочвенны

Re: Tiny C Compiler

Posted: Fri Jun 13, 2008 5:48 am
by maximYCH
Переложите куда нить пожалуйста, на FTP видимо файла уже нет, а на первом адресе что из первого поста темы - 404

Re: Tiny C Compiler

Posted: Wed May 16, 2012 11:13 pm
by XVilka
Взял исходники ktcc из subversion trunk, нашел версию оригинального tcc, из которого они сделаны. Скачал git-ом соответствующий тэг "release_0_9_23", cделал diff. Прикладываю его здесь.
Потом взял последний tcc из git-а (бранч "mob"), и смерджил предыдущий патч на современный распоследний tcc. Вот что получилось.
Сразу скажу, компилировать даже не пробовал, mingw еще компилится, но основная работа (вроде бы) сделана. Выкладываю сюда чтобы не забыть/потерять.

Для тех, кто хочет экспериментировать:

Code: Select all

git clone git://repo.or.cz/tinycc.git
cd tinycc
git checkout mob
patch -p0 < NEW-0001-Support-for-KolibriOS.patch

Re: Tiny C Compiler

Posted: Wed May 16, 2012 11:28 pm
by SoUrcerer
В чем разница между новым патчем и старым патчем?

Re: Tiny C Compiler

Posted: Wed May 16, 2012 11:34 pm
by XVilka
Старый - для древней версии tcc - 0.9.23 - выпущена в 2005-06-17.
Новый - для последнего среза tcc из git (последний коммит был 3 дня назад)

Re: Tiny C Compiler

Posted: Wed May 16, 2012 11:35 pm
by SoUrcerer
А чего он такой мелкий стал?

Re: Tiny C Compiler

Posted: Wed May 16, 2012 11:38 pm
by XVilka
Скачай да посмотри. Меньше править пришлось

Re: Tiny C Compiler

Posted: Thu May 17, 2012 10:03 am
by SoUrcerer
sourcerer@debian-laptop:~/Загрузки/tinycc/tinycc$ patch -p0 < ../../NEW-0001-Added-support-for-KolibriOS.patch
patching file b/Makefile
Hunk #1 FAILED at 285.
1 out of 1 hunk FAILED -- saving rejects to file b/Makefile.rej
patching file b/console.asm
patching file b/libtcc.c
Hunk #1 FAILED at 63.
Hunk #2 FAILED at 1327.
Hunk #3 FAILED at 1341.
Hunk #4 FAILED at 1623.
4 out of 4 hunks FAILED -- saving rejects to file b/libtcc.c.rej
patching file b/stab.def
Hunk #1 FAILED at 178.
1 out of 1 hunk FAILED -- saving rejects to file b/stab.def.rej
patching file b/start.asm
patching file b/tcc.c
Hunk #1 FAILED at 479.
Hunk #2 FAILED at 611.
2 out of 2 hunks FAILED -- saving rejects to file b/tcc.c.rej
patching file b/tcc.h
Hunk #1 FAILED at 35.
Hunk #2 FAILED at 58.
Hunk #3 FAILED at 110.
Hunk #4 FAILED at 169.
Hunk #5 FAILED at 188.
Hunk #6 FAILED at 1324.
6 out of 6 hunks FAILED -- saving rejects to file b/tcc.h.rej
patching file b/tccelf.c
Hunk #1 FAILED at 2189.
Hunk #2 FAILED at 2740.
Hunk #3 FAILED at 2834.
3 out of 3 hunks FAILED -- saving rejects to file b/tccelf.c.rej
patching file b/tcckos.c

Re: Tiny C Compiler

Posted: Thu May 17, 2012 12:48 pm
by XVilka
Тогда -p1 должен помочь, вместо -p0

Re: Tiny C Compiler

Posted: Sun Nov 25, 2012 1:40 am
by punk_joker
Киньте кто нибуть последнюю версию tcc под колибри