компилятора никто не пишет
Хз, для меня лично Си как язык крайне неудобен
мне удобно писать на нем, вот только я не понимаю хейта в его сторону
ООПа нет -> в топку
в основном хейт про компиляторы
Ну а компилятор... Компилятор пихает в бинарник всякое
Тебе ответили аргументированно, ты сказал "мне удобно, я не понимаю". Так это твои проблемы, что не понимаешь. Нравится - пиши. Как тебе чужой человек объяснит твоё непонимание?
почему не любят компилятор, я не особо шарю как он переводит в ассемблерный код(алгоритмы оптимизации и т.п), поэтому и спросил
тебе же не нравится компиляторы си
я и спросил почему
Я и отвечаю - потому что.
нормальные компиляторы, главное у людей с расстройствами ничего не проси
если они пропускают UB код или что-то в таком духе, то это не делает их плохими. задумка самого языка такая, где разработчику все дозволено. хочешь писать более безопасный код? есть плюсы или всякие анализаторы. а про бинарники бред, там никакого мусора нет.
А почему же тогда хелловорлд на сях в разы больше ассемблерного?)
ХВ на фасм 2кб. ХВ на С, ну килобайт 5. за то на С экзешник лучше структурирован, и эти ХВ и пару килобайт в 2024 - бред. найди что-то получше чем ХВ для сравнения, ибо считать байтики смешно как-то
Итак, ты поднял конфликт в чате. Кто будет отвечать?
Ну вообще не 2, а 1
Да не конфликт это, просто очередной виток старого доброго спора на тему асм против си
И на Си я не видел хелловорлдов прям на 5 килобайт)
Эта тема 5 лет уже шелушится, меня она лично задолбала.
Потому что полтора. tcc hello.c, пример в комплекте.
у тебя устройство, на котором ты сейчас пишешь, держится на легаси коде С. ну, будь бы язык такой плох, у тебя ОС давно еще упал бы. я не помню каких-то новостей, чтобы корпорации теряли миллионы из-за этого языка. все работает (даже с UB), все держится, вопросы?
Ты в флудилке есть?
Отлично, получили наконец-то 1 килобайт ассемблерного кода. Правда компилятор оптимизирует намного хуже gcc, но кого волнует. Наконец-то догоним ассемблер.
А ещё не полтора. Всего-лишь в ... 2400 раз больше FASM'а, но да. Загадили оптимизацию, в размер не осилили, но круто, круто!
Да, в байтах.
А, забавно, я вообще говорил про размер экзешника🤣
Кто-то математику забыл
Ну, а это elf'ы, потому что там интереснее. В Windows tcc может быть и осилил в полтора байта, а в Linux всё, сдулось.
Я её и не знал)
Он вообще не оптимизирует, в этом его смысл. То же самое можно сделать с MSVC, который уже оптимизирует. cl /MD hello.c 8к.
Опять транзистор сравнивает разные вещи с гордым видом. У тебя сисколлы, у тцц либц. Напиши на Си с сисколлами, будет столько же.
gcc оптимизирует хуже clang, clang иногда тоже выдаёт ересь. Оба ни в размер, ни в скорость. И тут такой брутальный tcc, в размер, но вообще как бревно по скорости. А потом MSVC такой, и хуже по оптимизации, чем clang. Я требую БОЛЬШЕ компиляторов!
Хочешь маленький размер, попробуй SCC
Нет, у меня там просто ret :)
Он тоже не оптимизирует?
Не, ну что-то оптимизирует (типа деления на константу), но очень немного.
Ну, то есть это просто PureBasic, который будет генерировать код, который даже новичок лучше напишет. Шикарное решение, надеюсь ты это будешь использовать в своих проектах, ну чтоб помедленнее было.
Я использую в своих проектах, чтобы побыстрее было. Мне во время разработки нужны не оптимизации, а скорость сборки.
Так я не понял, а что-то нормально заточенное у Сишников есть? Одни костыли по итогу. Ни в размер, ни в скорость. Даже ни в скорость компиляции, потому что FASM быстрее компилирует. Когда Сишники уже объединят clang какой-то с tcc, и сделают адекватный компилятор?
Кста, а у тебя с моими макросами быстро компилировалось?
Да, меньше секунды.
Это называется инструмент под задачу. Мне не нужен объединённый clang с tcc. У меня есть clang, есть tcc. Я их оба использую. Они оба адекватные. Ну ладно, tcc чуть менее ок, потому что полтора живых разработчика.
1 секунда на: 1) твои макросы 2) 2 директивы file в сумме на 4 мегабайта 3) макрос шифрования кода на этапе компиляции 4) сам код
Клиенту надо маленький размер и отличная оптимизация. Что делать? Clang, или tcc?
Этот клиент сейчас рядом с тобой в одной комнате? Ни разу в жизни никто не просил у меня маленький размер. Никогда. Всем абсолютно пофигу, сколько весит программа, пока она работает. Скорость иногда имеет значение (иногда, не для хелловорлдов, не для морд, которые апи дёргают и ничего не считают), и часто именно размер помогает тебе этой скорости добиться. И на него всё равно никто не смотрит.
Ну и пофиг тогда. А меня клиент никогда не просил писать на С. Я пишу на ассемблере, и клиенту вообще пофиг, цена от этого никак не меняется.
Ладно, но все равно больше чем 1 килобайт)
Всё ещё больше ассемблера. Не угонится, не осилит. Не создан ещё такой С компилятор, который бы выиграл ассемблер по размеру. Машина тупее человека, была и будет.
А меня просили писать и на C89 обязательно (хотя C11 уже был), и на C++ разных, и на новых и старых питонах до какой-то версии или от какой-то версии. Конечно, если ты делаешь одноразовый тул, и исходник никому не нужен, никто на язык не смотрит. Если это кусок функциональности или будет развиваться — всё просят, и за кодстайл ругают.
где может примениться 1 кБ проги в данных услловиях?
Нигде, ты же сам такой скинул. Скинь что-то очень большое на tcc, а мы это перепишем на ассемблер, получится меньше в 2 раза.
Конечно получится. Оно вообще не оптимизирует. Даже простые вещи. Не пытается даже. Ты лучше иди fftw обгони. И чтобы поменьше получилось, вот тогда будет повод хвастаться.
zydis ты знаешь что это за программа
Потому что это стартовая точка, не? Старт у FASM от 1 килобайт, у tcc - 2. Пишем большой проект, получаем у тсс около 60 килобайт, у FASM - 40-50.
ок, если два раза вызову хелловорд в 1 коде размер увеличится в 2 раза?
Нет, это не так работает. Это 1+n и 2+n соответственно. Математика, понимаешь.
Что такое fftw? Снова кто-то компилятор написал? Плодятся как кролики.
https://www.fftw.org/
Ты тоже неправильно посчитаешь. Надо на реальных условиях проверять, как я предложил. А я по опыту знаю, что будет разница в 10-20 килобайт, если у тсс - 60. Опыт, а не математика!
Да там одни асмовставки небось.
Асм там конечно есть. И мегабайты кода тоже.
Так не интересно, это не Сишный код, это асмосишный. И разработчики когда это писали, были вынуждены в слезах учить ассемблер, чтобы писать нормальный код на С. Давай что-то полностью чисто Сишное!
у тсс старт с 1кб, +1кб дает секция данных, не надо тут 4.13.
Как только ты напишешь что-то, что не использует сишный код, так сразу.
Я не использую Сишный код. Я использую какие-то байты инструкции, которые были скомпилированы кем-то каким-то msvc... Не знаю, что это язык.
Но при этом интринсики почему-то ассемблер.
Ну, по обратной аналогии Сишник использует ассемблерную инструкцию. Как если бы я использовал Сишный .с код. Логично?
Нет. Интринсик — это такая специальная функция. Она не на ассемблере, ты её не видишь, но она где-то есть. Это просто байтики, которые компилятор включает в объектник. Это могут быть байтики одной инструкции или нескольких. Никто не знает. Инструкций не существует, существует функция.
Я не понимаю, почему это вообще проблема. Если мы говорим про большие проекты, то константа на размер ничтожна, если про хелловороды, то какая разница, один килобайт или сто?
я про это и говорю, сейчас время, когда десятки гб вообще ни о чем
Причем здесь десятки гб? Речь идет о килобайтах. Когда оператива измеряется в гигабайтах, а разме диска в сотнях гигабайт, то разница в ресурсах даже на порядки ничего не значит. Будет процес потреблять 2мб озу или 20 - какая разница?
Так сразу, как только сишка начинает использовать асмовставку, ломается переносимость)
асм изначально непереносим
Ну частично переносим
Ну я говорил про ограниченно возможную переносимость
Обсуждают сегодня