Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Sep 19, 2019 6:13 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 16 7 8 9 1016 Next
Author Message
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 15, 2007 5:24 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Вышла новая версия библиотеки 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

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 15, 2007 5:44 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
Хорошая новость. Надеюсь ты будешь постоянно поддерживать libc, а так же возмешься за другие образующие си библиотеки, например pthread.

..bw


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 15, 2007 7:21 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Неверю что TinyC
Quote:
неправильно работает с функциями, содержащими переменное число аргументов.


На офсайте
Quote:
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

_________________
Image


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Sat Oct 20, 2007 7:16 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
vectoroc

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

Code:
#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');

}

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Sun Oct 21, 2007 7:28 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Quote:
Ты смотриш на 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, там есть пример работы на данную тему. Проверять мне лень, но мне так кажется разрабы постарались бы в тестовый файл только рабочий код ложить ;)

_________________
Image


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Oct 22, 2007 2:52 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Code:
#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 безпочвенны

_________________
Image


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Fri Jun 13, 2008 5:48 am 
Offline

Joined: Sun Nov 04, 2007 2:46 am
Posts: 390
Переложите куда нить пожалуйста, на FTP видимо файла уже нет, а на первом адресе что из первого поста темы - 404


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed May 16, 2012 11:13 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Взял исходники ktcc из subversion trunk, нашел версию оригинального tcc, из которого они сделаны. Скачал git-ом соответствующий тэг "release_0_9_23", cделал diff. Прикладываю его здесь.
Потом взял последний tcc из git-а (бранч "mob"), и смерджил предыдущий патч на современный распоследний tcc. Вот что получилось.
Сразу скажу, компилировать даже не пробовал, mingw еще компилится, но основная работа (вроде бы) сделана. Выкладываю сюда чтобы не забыть/потерять.

Для тех, кто хочет экспериментировать:
Code:
git clone git://repo.or.cz/tinycc.git
cd tinycc
git checkout mob
patch -p0 < NEW-0001-Support-for-KolibriOS.patch


Attachments:
File comment: Новый патч
NEW-0001-Added-support-for-KolibriOS.patch.gz [5.84 KiB]
Downloaded 104 times
File comment: Старый патч
0001-Added-support-for-KolibriOS.patch.gz [12.49 KiB]
Downloaded 99 times
Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed May 16, 2012 11:28 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
В чем разница между новым патчем и старым патчем?


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed May 16, 2012 11:34 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Старый - для древней версии tcc - 0.9.23 - выпущена в 2005-06-17.
Новый - для последнего среза tcc из git (последний коммит был 3 дня назад)


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed May 16, 2012 11:35 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
А чего он такой мелкий стал?


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Wed May 16, 2012 11:38 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Скачай да посмотри. Меньше править пришлось


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Thu May 17, 2012 10:03 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Quote:
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


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Thu May 17, 2012 12:48 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Тогда -p1 должен помочь, вместо -p0


Top
   
 Post subject: Re: Tiny C Compiler
PostPosted: Sun Nov 25, 2012 1:40 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1150
Киньте кто нибуть последнюю версию tcc под колибри

_________________
я лишь учусь


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 16 7 8 9 1016 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited