Pull to refresh

Comments 15

a == 5 и a > 5 и есть осложняющая часть в if и while соответственно

Не будет ли проще и понятнее назвать это "условием"?

Ну в таких примерах - да, но в microC есть и макросы, где осложняющая часть — это не условие

Для использования символа '!' как отрицание следует использовать '`'

а как использовать тильду как тильду? (~ -- это побитовое отрицание)

... Я только щас вспомнил что есть такая операция...

В старых версиях microC были макросы, но они были удалены

А вообще есть спец. синтаксис: все что записано между двумя обратными слэшами — включается в исходный файл без изменений

И это на 15 байт меньше чем оригинал!

А как это отразилось на скорости компиляции и скомпилированного? Никак? Или какие-нибудь отличия могут быть? Даёшь тест!

вообще, так как microC компилируется в Си (причем с неочень большими изменениями), то и итоговая скорость работы не будет отличаться, как и размер бинарника

Разница в размерах бинарника и скорости, соответственно, будет заметна только на очень больших и хитрых проектах

Вообще странный подход. Если вы пишите программу, которая генерирует код, то почему бы не ввести специальную команду "@" - которая означает "интерпретатор брейнфака". Вот вы и ужали всю программу до 1 символа!

вообще да, но такгда почему бы создателям Си не ввести такую же команду с таким же функционалом?
Си компилируется в асм, а microC в Си

Это забавный эксперимент, однако думаю, что лучше смотреть на размеры бинарника, а не исходного кода

Взяв первый попавшийся, неиспользуемый символ в Си - тильда (~)

Как это неиспользуемый, это же оператор побитового отрицания

Идея с microC крутая: макросы, тильды и всё это минималистичное безумие - прям мозговыносяще, но работает. Особенно понравилось, как типы через количество бит реализованы - странно, но логично.

Формат записи, конечно, не для слабонервных, но 145 байт - это уже серьёзно. По сути, это просто препроцессор для сжатия исходников, и это работает.

Вспомним, что сколько в С выделяется байт под каждый тип в памяти:

А ниже в таблице, почему-то, указаны биты.

int

32 (ну не всегда, но примем все-таки за 32)

char тоже не всегда 8 бит и short тоже не всегда 16 бит.

ну на размерность int наиболее частая к изменению

Говоря о размерах компилятора (и вообще любой программы), обычно имеют в виду размер скомпилированного бинарника. Потому что исходный код можно как раздуть комментариями, так и сжать до единственного символа, как справедливо заметил другой комментатор, и на свойствах компилятора это никак не отразится.

Ну в таком случае 160 байт – предел

Да и скомпилированный бинарник — тоже абстракция ОС

Sign up to leave a comment.

Articles