OSDev
http://osdev.su/

Своя ОС - свой компилятор
http://osdev.su/viewtopic.php?f=6&t=355
Страница 1 из 2

Автор:  qeos [ 29 ноя 2010, 04:41 ]
Заголовок сообщения:  Своя ОС - свой компилятор

В результате метаний по разным компиляторам понял, что существующие не дают того, что мне нужно.

Кто-нибудь писал компилятор? Покажите, что у вас есть?

Автор:  SII [ 29 ноя 2010, 12:28 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

Писал, но давно. Транслятор Паскаля написать несложно (если без оптимизации, конечно, она сама по себе может быть очень сложной вещью, но к языку как таковому уже не привязана), Си и тем более Си++ -- повесишься, у них абсолютно невменяемый синтаксис, что серьёзно усложняет разбор и формирование промежуточного представления.

Сейчас пишу транслятор ассемблера, причём в двух разновидностях -- под АРМ (поскольку существующие -- разная степень отстойности, самым вменяемым из испробованных оказался Кейловский) и под ИА-32 (тоже ни одного, который меня целиком удовлетворял, не обнаружил). В планах на будущее имеется свой Паскаль и, возможно, Ада -- существующие ФриПаскаль и ГНАТ (Ада из ГЦЦ) достаточно глючные, причём мне совершенно непонятно, в каком направлении развиваются эти трансляторы, ну а к ФриПаскалю ещё и претензии в части самого языка есть.

Автор:  Himik [ 29 ноя 2010, 21:20 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

qeos, я не понимаю тех, кому легче написать свой компилятор, чем изучить существующий, созданный людьми однозначно не глупее. Хочется странного, смотри C--.

SII, я вас умоляю, не гоните на Си. Трудности разработчиков компилятора программистов не волнуют :)

Автор:  qeos [ 29 ноя 2010, 23:26 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

chizh писал(а):
qeos, я не понимаю тех, кому легче написать свой компилятор, чем изучить существующий, созданный людьми однозначно не глупее. Хочется странного, смотри C--.

есть два пути, один трудный и громоздкий, другой тяжелый и легковесный.

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

кстати мое `овно уже умеет компилировать это:
Код:
main(2,3);
exit();

method main(parametrA, parametrB){
    parametrN = 111 * d(2*parametrB) + (222 + 333 / 444) + parametrA;
}

method d(ps){
    p = ps*ps;
}

method exit(){
    //
}

Автор:  Himik [ 29 ноя 2010, 23:40 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

qeos, частичную компиляцию осуществляет утилита make (и различные виды cmake, nmake, wmake). Ей на вход подаётся конфигурационный файл, в котором список исходников. Она автоматически отслеживает какой файл изменился, а какой нет, и компилирует только изменённые файлы. Функции естественно надо располагать по разным файлам, т.к. "разделение" происходит на уровне файлов.

Автор:  phantom-84 [ 30 ноя 2010, 12:34 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

Можно просто откомпилировать исходник с функцией. Я считаю, что достаточно написать свой компоновщик и то только в том случае, если используются оригинальные форматы исполняемых файлов.

Автор:  qeos [ 30 ноя 2010, 19:04 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

phantom-84 писал(а):
Можно просто откомпилировать исходник с функцией. Я считаю, что достаточно написать свой компоновщик и то только в том случае, если используются оригинальные форматы исполняемых файлов.

а потом мучаться с портированием?

Автор:  phantom-84 [ 30 ноя 2010, 21:24 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

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

Автор:  ZarathustrA [ 30 ноя 2010, 21:46 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

Товарищ, по своему опыту могу посоветовать - не пиши компилятор. Оно того не стоит.
Они пишутся и сложно и легко одновременно. Сначала вникаешь в литературу, неделями хреначишь модели конечных автоматов. Все проверяешь и т.д. Потом за день кодирования - вуаля и один из анализаторов готов. Оптимизация - это свои вилы. Я за них даже не брался.
Не веришь, читай книгу красного дракона. Получишь большое наслаждение.
Есть простой вариант использовать генераторы анализаторов типа YACC, Бизон и других. На них эту бороду писать в десятки если не в сотни раз проще, но можешь сразу забыть про все рюшки типа динамической компиляции своего формата исполнимых файлов и т.д.

Советую этим заниматься только в том случае, если твоя основная цель написание компилятора (своего ЯП), а не разработка ОС. За двумя зайцами.

Автор:  qeos [ 03 дек 2010, 06:50 ]
Заголовок сообщения:  Re: Своя ОС - свой компилятор

Вот всегда так у русскоязычных.. Чего-нить спросишь и тебе 150 доводов, что так делать не надо.. Ну товарищи, я ж не просил рассказать какие вы и какие у вас проблемы. Если вы что-то делали, то я прямо и сказал "покажите"..

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

Так никогда ничего не сделать толкового. Ни Бил, ни Гейтс, ни их общий друг - Джопс тоже не знают всего что написано в виндовсе.. Что ж они теперь не должны были делать очередной гомнопродукт? И тем не менее со временем он приобрел нормальный вид.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/