Page 1 of 2

Компилятор с C++ для Minuet

Posted: Tue Apr 03, 2007 4:10 pm
by SHREDER
Короче, пробывал я тут переписать все ядро Minuet в С++. Даже беглый обзор лиснигов говорит о том что это задача трудно разрешаемая вернее откровенно будем говорить вообще не разрешима. Основная причина - компилятор, ни GCC ни лбой другой из мне известных такие фокусы как перевод процессора в защищенный режим после того как часть программы уже отработало не разрешает. Ну хотя наверно возможно но слишком уж мудрено ыйдет.
Тогда я решил испробовать написать хоть несколько программ на С++ для Minuet, воспользовался статьями котрыйе месные юзеры в изобилии запостили. Большинство подходов кроме GCC, основываются на получении от компилятора ассемблерного кода, преобразования его в FASM и ассемблирования полученого.
Не мне вам говорить что приятного в таком способе мало, особенно в отладке.
Потому думаю что надо написать компилятор с С++ для колибри, тут пока все кричат ( и даже делают) про паскаль, яву переделывают убогие полуучебные С компилеры для С, юзают диалекты вроде С--. При этом самый распространенный на сегодня язык (в том числе и для системного программирования) отается как бы за кадром. Посему предлагаю создать компилятор С++ для minuet причем способный компилировать и сам себя, интегрированый с FASM, с утилитой make вроде ANT и полноценной IDE на подобие скажем CBuilder или Eclipse IDE.

Posted: Tue Apr 03, 2007 5:16 pm
by CEHO
Я знаю что тебе ответят ;)

Posted: Tue Apr 03, 2007 8:15 pm
by Serial
SHREDER, я не так уж давно на этом форуме, но суть усвоил четко :)
Идей хороших и плохих много, а вот программистов очень мало.. а так как проект open source (бесплатный), то каждый делает то, что ему интересно, что ему нравится, чем ему хочется заниматься.
Тебе хочется c++ компилятор? ..пожалуйста, пиши :)

Да и по секрету скажу, что Menuet и Kolibri - это уже разные вещи..

Posted: Wed Apr 04, 2007 1:57 pm
by SHREDER
Serial wrote:SHREDER, я не так уж давно на этом форуме, но суть усвоил четко :)
Да и по секрету скажу, что Menuet и Kolibri - это уже разные вещи..
Ну ты посмотри исходный код, по сути все основное из Minuet.

Я бы с удовольствием сам написал компилятор сам года этак за полтора, если бы временем располагал. Но с моей нынешней работой и уходить -темно и приходить - темно.
Посему поставить бы где нить SVN и начать потихоньку. Можно првда поробывать уболтать руководство моей компании на девелоп компилера, но на опен сурс они никогда не согласятся.

У кого какие идеи есть по компилеру постите, а не флеймерите типа нах нужен С++ и т.д. То что он нужен это очевидный факт.

Posted: Wed Apr 04, 2007 2:07 pm
by Tom Sawyer
http://meos.sysbin.com/viewtopic.php?t=447 "Компилятор Си"
http://meos.sysbin.com/viewtopic.php?t=565 "Tiny C Compiler"
http://meos.sysbin.com/viewtopic.php?t=648 "Open Watcom и Kolibri SDK"
http://meos.sysbin.com/viewtopic.php?t=658 "nasm, vc, gcc и другие"

Давайте создадим ещё 10 тем.

Posted: Wed Apr 04, 2007 2:57 pm
by mike.dld
Хочешь компилятор Си++ - помоги портировать тот, что уже доказал свою эффективность и работоспособность. Давно пора понять, что 3 одинаковых проекта всё равно когда-нибудь станут одним целым, там почему не слиться сразу, не подумать наперёд.

Posted: Thu Apr 05, 2007 10:37 am
by zhenya_k
А кстати почему именно C++? Почему бы не сделать компилятор для языка D, например.
http://ru.wikibooks.org/wiki/%D0%AF%D0% ... B8%D1%8F_D

Posted: Thu Apr 05, 2007 11:14 am
by SHREDER
Короче говоря дело в следующем. На самом деле компиляторов с С++ не такое уже и великое множиство, сегодня
обще известные MSVC++, Borland, Intel, GCC. Исследования показывают что самый высококачественный код создает как не странно Borland, однако из собственного опыта замечу что сам компилятор содержит массу ошибок и посему генерирует баги в логически совершенно верном коде. Майкрософт и интел приблизительно на одном уровне (несмотря на распространенное мнение что интел лучше), а гну самый плохой (минимальная программа для Windows например просто с Win 32 API составляет аж 1 МБ тогда как борланд 13 КБ а MSVC++ 17 КБ) . Все выше перечисленное имеет свобдные версии (интел правда только для линукс). Исходный код доступен только GCC, хотя на самом деле он тоже собственность Red Hat и разрабатывается его подразделением Cygnus. Кто смотрел исходники GCC поймет что их даже собрать с помощью make тяжело, сложнее даже чем ядро линукса и намного сложнее чем Kolibri. В общем его портация и интеграция с FASM практически смысла не имеет никакого.
Watcom умер так давно что и вспоминать не хочется, после чего и стал открытым. Компилер не подерживает много чего нового например шаблоны типа (templeate). Без этого получается не С++ а скороее С с классами.

"nasm, vc, gcc и другие" - это как раз подход программировать под Minuet, Kolibri и другие клоны из другой ОС вчем приятного очень мало.

Короче сейчас еть проект убогий компилер Tiny C Compiler у мну есть варианты исходников датирующихся аж 1982 годом за два года до мого рождения. Это на самом деле не компилятор а транслятор в ассемблер, уже переделаный для трансляции в FASM, посколку писать сам компилятор целиком на ассемблере уж больно долго почему бы не взять Tiny C Compiler и по пытатся написать на нем полноценный С++ компилятор? Собственно чем я по вечерам и обедам и займусь.

Касательно IDE довольнодавно мне попался на глаза проект http://www.codeblocks.org/ весьма хорошая вещь надо сказать, исходники открыты, работает с кучей разных компиляторов. Сам проект аналог Borland C++ Builder X только лучше. Среда легко подключается к любому компилятору. К тому же среда позволяет создавать шаблоны к
http://www.wxwidgets.org/ - отличная GUI библиотека примечательна тем что в отличие от QT интегрируется с системными компонентами GUI, а не рисует собственные. Среди девелоперов много наших (русско язычных). Можно будет портировать и для Minuet (думаю стоит об этом попросить самих девелоперов).

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

Posted: Thu Apr 05, 2007 1:04 pm
by Serge
SHREDER

Watcom поддерживает шаблоны. Для него написали много нового. Конечно качаство кода уступает MSVC, но за коммерческими угнаться сложно. А вот скорость компиляции очень хорошая. Дум компилируется и линкуется за 10-15 секунд

Posted: Thu Apr 05, 2007 1:38 pm
by SHREDER
zhenya_k wrote:А кстати почему именно C++? Почему бы не сделать компилятор для языка D, например.
http://ru.wikibooks.org/wiki/%D0%AF%D0% ... B8%D1%8F_D
Потому что это самый распространенный язык программирования. Конечно D может быть чем то и лучше, но кто на нем программирует?
Есть ли к нему такое же колличество тулзов и библиотек?
Сколько полезных программ и технологий, которые можно портировать в Minuet, доступны в исходника D?

Конечно С++ очень сложный язык как для изученя так и для реализации. К тому же содержит устаревшие описания из С. Стандарт языка ISO/IEC 14882 стремительно стремится к 1000 странриц. Тем не мение без С++ сегодня никак причем практически во всех областях программирования.

2 По поводу ваткома хорошая идея бы была портировать его под Minuet и интегрировать с FASM. А сами исходные коды модернизировать для полной поддержки стандарта ISO/IEC 14882 и лучшей производительности. Code::Blocks умеет с ним работать, остается только лиш перекомпилить ее исходные коды готовым компилятором и получить готовую версию для Minuet. Лучше начинать не же начинать не с нуля!
Кто за ?

Posted: Thu Apr 05, 2007 3:01 pm
by vectoroc
Я за :) (если это что то значит...)
Чем смогу помогу (в зависимости от свободного времени и настроения/желания)

Posted: Thu Apr 05, 2007 4:57 pm
by andrew_programmer
Тема с компиляторами языков высокого уровня поднималась много раз..........
А чем закончилось ?
А всё тем же - пустой болтовнёй.Делать как обычно некому.
Уж сколько раз говорили, что написать libC надо для полного портирования компилятора в Колибри.Некоторые говорили, что это не сложно.
Однако при этом ничего не писали,а просто созерцали, когда кто -нибудь другой займётся этим.

SHREDER., ты разбираешься в теории компиляторов ?
Ты когда- нибудь пробовал написать хоть простенький компилятор ?
Если нет, то ни о каком написании компилятора и речи быть не может.Будет только пустая болтовня.

Posted: Thu Apr 05, 2007 5:28 pm
by vectoroc
И внёс свой веский вклад в пустую болтовню...

Posted: Fri Apr 06, 2007 1:49 pm
by SHREDER
andrew_programmer

....ать еслиб не разбирался то тему не поднимал бы.

Я вот просто думаю как лучше:

Начить все писать с нуля написав нечто с рекурсивным спуском.

Сгенерировать YACC или FLEX лексический и синтаксический анализаторы
получить C код, после чего написть генератор внутренних представлений
и компоновщик. потом уже конечно нужны будут утилиты типа make и т.д.

Взять уже готовый компилятор в исходниках и перекрутить его под minuet и FASM
(не факт что самый простой метод).

P.S. Просьба ко всем не равнодушным с реальным IP и не лимитированным доступом к инету, поставте SVN и видилите URL я у себя не могу т.к. в инет выхожу через прокси.

Posted: Fri Apr 06, 2007 2:12 pm
by mike.dld
Чем же тебя не устраивает svn://kolibrios.org ? Нужен аккаунт - обращайся.

И кстати, хватит писать "Minuet". ОС называется "Menuet", а ОС, разрабатываемая тут - "Kolibri".