Page 1 of 2

Вариант создания компиляторa Си

Posted: Mon Feb 27, 2006 1:20 am
by mike.dld
В свете происходящих вокруг нас событий, и из-за нескрываемой личной заинтересованности, возник вопрос: нужен ли нам Си-компилятор. Не для ядра, а именно для приложений. И не Си++, а именно Си. Реализация его не должна быть сложной (взять для примера хотя бы SmallC), и даже если с первого раза он не будет генерить супер-оптимальный код, это позволит ускорить разработку программ. Причём программ несколько более высокого уровня, чем сейчас: текстовых процессоров (!не редакторов!), СУБД и т.п.
Если кто-то соберётся с мыслями, и решит, как и я, что это нужно, - буду рад помочь.
Надеюсь, вы не подумаете обо мне как об отступнике... Я подумал, что это нездОрово - когда есть спрос, но нет предложения.
Чтобы никто не подумал, что я один такой - нас 4 человека.

Posted: Mon Feb 27, 2006 2:10 am
by Andryuha
Компилятор языка высокого уровня, который работает непосредственно под МеОС/Колибри, конечно нужен. Это сильно ускорит написание программ. Мне, правда, больше нравятся языки подобные Паскалю. Их удобнее читать даже когда нет коментариев. Созданием транслятора некого гибрида Модулы и С для МеОС я сейчас занимаюсь. Но если С вам нужнее, то могу переключится на С. Кстати, Майк, ты не мог бы прислать мне исходники своего Паскаля. Уж больно мне они интересны.

Posted: Mon Feb 27, 2006 3:42 am
by mike.dld
Конечно могу, только вот комментариев там не густо. Написан он на Си (MSVC).

Posted: Mon Feb 27, 2006 10:59 am
by sid1333
А есть у ковонить спецификация ANSI C?? Желательно на великом и могучем...

Posted: Mon Feb 27, 2006 5:08 pm
by halyavin
Andryuha
Я могу дать тебе статью, в которой описывается как можно программировать под Menuet на Free Pascal 2.0.0 (я использовал этот подход для тестирования менеджера памяти - тестирующая часть была на паскале и легко проверяла все инварианты, а тестируемая часть была на ассемблере). Компилировать программы (точнее паскалевскую часть программы) приходится в windows.

Posted: Mon Feb 27, 2006 7:14 pm
by Mario79
mike.dld
А кто запрещает писать? Я никогда не был против идеи писать на СИ приложения (хотя сам вряд ли буду это делать). Пусть пишут люди, если это будет хорошая вещь и не будет страшно раздутая по объему конечного генерируемого кода, то я совсем не против. Другой вопрос, что тут же появятся некоторые "умные" люди и будут канючить "а почему у вас нету библиотек из: Windows, Linux и тд." А вот это уже будет форменное свинство с их стороны. Так как в этом случае не только нарушается лицензия (в некоторых случаях), но и код раздувается неимоверно. Придется тогда вам и библиотеки самим писать.
А так я совсем не против, даже интересно во что это выльется, если в приток программистов то весьма хорошо. :-)

Posted: Tue Feb 28, 2006 2:40 pm
by Andryuha
to halyavin
Попробовать писать на Free Pascal программы для Menuet мне интересно. Давай статью сюда:
an007[at]bk[dot]ru

Posted: Wed Mar 01, 2006 4:49 am
by mistifi(ator
Если можно сюда тоже :)
bendik@bk.ru

Posted: Wed Mar 01, 2006 7:18 am
by ipr
Ну и мне за компанию: slackofil [at] gmail [dot] com

Posted: Wed Mar 01, 2006 7:43 am
by mike.dld
Прошу не засорять тему. Насчёт FPC Халявин прожужжал мозги всем, кому только можно, и если вы не видели, например, этого поста, найти статью можно было бы и в гугле по запросу MenuetOS "Free Pascal" ассемблер

Posted: Wed Mar 01, 2006 8:14 am
by ipr
Миша не ругайся :-)
Дык ващето да, тема то про Си когдато была ;-)

Posted: Wed Mar 01, 2006 2:16 pm
by FreGL
почему не С++?

Posted: Wed Mar 01, 2006 4:01 pm
by mike.dld
Потому что пока что не C++. Не хочется слишком уходить от реальности. Думаю, ты согласишься, что C - более низкоуровневый язык. К тому же, результат должен быть получен довольно быстро, а если начать реализовывать С++ - можно и не дождаться окончания. По моим оптимистическим расчётам, рабочая версия может появиться в течение 3-4 месяцев слаженной работы. Сразу захотелось об этом сказать, чтобы не задавали вопросы каждый день.

Posted: Wed Mar 01, 2006 6:12 pm
by halyavin
mike.dld
Та статья устарела с выходом новой версии компилятора... Послал всем интересующимся простейший пример для новой версии.

На счет С++ - подход правильный. Вспомните о шаблонах и исключениях (а также о автоматическом вызове деструкторов при выходе из области видимости).

Думаю, лучше всего писать компилятор на С (используя кросс-платформенную компиляцию, благо есть аж 2 метода сделать это) - потом можно будет уже разрабатывать компилятор на самом себе. Однако есть еще одна проблема, которую надо решить сразу - кто-нибудь знает формат объектных файлов? А так же нужно будет написать линкер (на иностранном форуме была ссылка, но она уже не действительна :( ) ...

Так же интересно знает ли кто-нибудь устройство GCC (я не знаю)? Использование кода из него значительно повысило бы шансы на успех.

PS А кто эти 4 человека, которые готовы начать писать компилятор?

Posted: Wed Mar 01, 2006 6:22 pm
by diamond
Формат объектных файлов? Есть несколько разных форматов. В частности, лично мне известны форматы COFF и OMF (оба - по документации от Microsoft).