Лучший бесплатный С компилятор?

Тема в разделе "LANGS.C", создана пользователем LaoFremda, 7 июл 2010.

  1. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    Может есть на свете малоизвестный, но хороший С99 компилятор?
    VS Express урезанный (без SDK даже x64 не может компилить) и всё-равно bloatware. GCC очень медленный и под винду только в виде форка (не гуд). PellesC с первого взгляда казался идеальным, но его код ужасен
    Код (Text):
    1. fldz
    2. sub esp,4
    3. fstp esp
    Прочитал в вики про clang, но он распространяется только в виде исходников. Может кто-нибудь рассказать о нем, как он дружит с виндой?
    Cупероптимизация кода, как у интеловского компилера, не требуется. Но хотя бы без тупостей как в PellesC. И может быть работа с вещественными данными через SSE, без FPU?
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    А в пиратскую бухту уже пускают только по пропуску? :)
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    LaoFremda
    :)
     
  4. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    Понятно... Идеальных компиляторов не существует. :/
     
  5. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    lcc, tcc
    но они не оптимизируют почти ничего.
     
  6. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    Посмотрел... "Не оптимизируют" это мягко сказано. Пушить 0.0 они не умееют. tcc вообще проявляет верх изобретательности и достает 0.0 из памяти. Ну и просто смешной код:

    lcc:
    Код (Text):
    1. mov [dword 4023A8],eax
    2. mov eax,[dword 4023A8]
    tcc:
    Код (Text):
    1. mov [dword 402000],45
    2. mov edi,[dword 402000]
    3. mov [dword local.1],edi
     
  7. ivan2k2

    ivan2k2 New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2006
    Сообщения:
    95
    openwatcom?
     
  8. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    А это отличная штука! Ему не хватает только x64 и SSE кода. Но всё-равно самое близкое к моим требованиям. Спасибо.
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Зато компилирует приличнее всех из опенсорса, AFAIK.
    Так скачайте сдк
     
  10. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    LaoFremda
    Код (Text):
    1. mov [dword 4023A8],eax
    2. mov eax,[dword 4023A8]
    Это Вы смотрите код который с DEBUG INFORMATION.
    В RELEASE-е такого кода нет.
     
  11. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    WDK WDK WDK.
    Все остальное от лукавого :)
     
  12. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    Возможно... Но и его код иногда выглядит странно (MinGW-4.5.1):
    Код (Text):
    1. 00401753  |.  83EC 18            SUB ESP,18
    2. 00401756  |.  C74424 0C 04000000 MOV [DWORD SS:LOCAL.3],4                 ; /Type => MB_YESNO|MB_DEFBUTTON1|MB_APPLMODAL
    3. 0040175E  |.  C74424 08 70404000 MOV [DWORD SS:LOCAL.4],OFFSET 00404070   ; |Caption => "Test test?"
    4. 00401766  |.  C74424 04 70404000 MOV [DWORD SS:LOCAL.5],OFFSET 00404070   ; |Text => "Test test?"
    5. 0040176E  |.  C70424 00000000    MOV [DWORD SS:LOCAL.6],0                 ; |hOwner => NULL
    6. 00401775  |.  FF15 F0614000      CALL [DWORD DS:<&USER32.MessageBoxA>]    ; \USER32.MessageBoxA
    7. 0040177B  |.  83EC 10            SUB ESP,10
    И весь этот файл состоящий из одного MB и 2 операций с флоатами весит 98 килобайт. :\

    Но x64 это не единственный минус. Всё-таки M$ забило на C, поддержка C99 у них практически отсутвует.

    Попробовал снова. Да, кажется в прошлый раз ошибся. Но с пушами флоатов та же беда.

    Так это же MSVC++. Всё те же минусы.
     
  13. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    2LaoFremda

    >>Но и его код иногда выглядит странно (MinGW-4.5.1):
    ну он так передает параметры в функцию по умолчанию, отключается через какойто из параметров. непомню какой. Это нормально короче =)

    >>Всё-таки M$ забило на C, поддержка C99 у них практически отсутвует.
    что вам нужно такого из C99 чего нету в cl?
     
  14. icew0rm

    icew0rm New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2010
    Сообщения:
    7
    2 all, привет.

    Ох, не люблю я темы на грани холивара :)) Ну да ладно...

    ИМХО, под виндой лучше юзать WDK и его cl.exe. Это одна из немногих вещей которая у мелкомягких сделана хорошо.
    Я пользую ключик /Ox и качеством оптимизации доволен (под отладчиком проги вижу часто, на асме тоже "пописывал"). Плюс самые актуальные заголовочные файлы.

    А как писать: в си или си++ стиле - дело вкуса и личных предпочтений, компилятор никаких ограничений не накладывает.

    LaoFremda->"Так это же MSVC++. Всё те же минусы."
    Честно говоря минусов не вижу. Только два плюса;)
     
  15. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    А вспомнить можно? Я попробовал разные параметры - ничего не помогло. Даже -mpush-args ничего не делает.
    Особо не разбирался с cl. Только читал слова тех поддержки на мсдн, что они не поддерживают С99. Помню, stdbool.h в cl нет. Не представляю поддерживает ли он объявление переменных в любом месте, inline.
    Всё-таки языки не полностью совместимы, поэтому хочется нормальный C компиллер. А что требовать от разработчика, который сконцентрировался только на двух плюсах?
     
  16. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    ISO/IEC 9899:1999 7.16 Boolean type and values <stdbool.h>
     
  17. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    ага, вот она
    http://wasm.ru/forum/viewtopic.php?id=26814
     
  18. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    ух... Ужа начали переходить на личности. Не надо!
    Сойдемся на том, что лучшее это WDK, GCC и OpenWatcom. Отзывов о LLVM/CLang и PCC нет.
     
  19. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    LaoFremda
    ов - не с99.

    pcc (не пеллес, а другой), линейка кен-сс (не помню какой там С, но int c[10] = {[5] = 18}; понимает), аск интересны не столько оптимизатором, хотя базовый там есть, сколько малыми размерами и модифицируемостью.
    кен-сс - по линкеру совместим с го.
    аск - набор компилеров, интерпреров, оптимайзеров и асмо/кодогенераторов

    последний список - экзотика. если хватает стандарта - не спрашивайте меня "зачем оно надо?".
     
  20. LaoFremda

    LaoFremda New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    13
    http://www.openwatcom.org/index.php/C99_Compliance
    А полного c99 нигде нет, насколько мне известно.