OSDev

для всех
Текущее время: 09 май 2024, 06:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Своя ОС - свой компилятор
СообщениеДобавлено: 29 ноя 2010, 04:41 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
В результате метаний по разным компиляторам понял, что существующие не дают того, что мне нужно.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 29 ноя 2010, 12:28 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 29 ноя 2010, 21:20 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
qeos, я не понимаю тех, кому легче написать свой компилятор, чем изучить существующий, созданный людьми однозначно не глупее. Хочется странного, смотри C--.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 29 ноя 2010, 23:26 

Зарегистрирован: 30 янв 2010, 19:44
Сообщения: 63
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(){
    //
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 29 ноя 2010, 23:40 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 30 ноя 2010, 12:34 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Можно просто откомпилировать исходник с функцией. Я считаю, что достаточно написать свой компоновщик и то только в том случае, если используются оригинальные форматы исполняемых файлов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 30 ноя 2010, 19:04 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 30 ноя 2010, 21:24 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 30 ноя 2010, 21:46 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Своя ОС - свой компилятор
СообщениеДобавлено: 03 дек 2010, 06:50 

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

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB