Здравствуйте, compiler-dev, Вы писали:
CD>С чем или кем в реальной жизни у Вас ассоциируется компилятор?
С Виртом: в свое время понял, как устроен компилятор по его книжке.
С собой. Иногда приходится эти компиляторы писать.
(Правда, пока только для Си.)
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[2]: [Опрос] С чем у Вас ассоциируется компилятор?
Здравствуйте, AVC, Вы писали:
Большое спасибо за ответ.
AVC>С Виртом: в свое время понял, как устроен компилятор по его книжке.
А как звать книжку?
Может, подкините ссылку на электронный вариант?
AVC>С собой. Иногда приходится эти компиляторы писать. AVC>(Правда, пока только для Си.)
Вы могли бы рассказать подробнее — зачем было нужно его написать?
Здравствуйте, compiler-dev, Вы писали:
CD>Здравствуйте, AVC, Вы писали: CD>Большое спасибо за ответ.
AVC>>С Виртом: в свое время понял, как устроен компилятор по его книжке. CD>А как звать книжку? CD>Может, подкините ссылку на электронный вариант?
Здравствуйте, Lorenzo_LAMAS, Вы писали:
AVC>>>С Виртом: в свое время понял, как устроен компилятор по его книжке. CD>>А как звать книжку? CD>>Может, подкините ссылку на электронный вариант?
L_L>http://rsdn.ru/Forum/Message.aspx?mid=1274425&only=1
Здравствуйте, WoldemaR, Вы писали:
WR>Здравствуйте, compiler-dev, Вы писали:
CD>>С чем или кем в реальной жизни у Вас ассоциируется компилятор?
WR>а ещё с карбюратором.
Здравствуйте, compiler-dev, Вы писали:
AVC>>С Виртом: в свое время понял, как устроен компилятор по его книжке. CD>А как звать книжку? CD>Может, подкините ссылку на электронный вариант?
Это была пятая глава старой книги "Алгоритмы + структуры данных = программы".
Потом Вирт написал отдельную книгу о компиляторах: http://www.oberon2005.ru/book/ccnw2005e.pdf
AVC>>С собой. Иногда приходится эти компиляторы писать. AVC>>(Правда, пока только для Си.) CD>Вы могли бы рассказать подробнее — зачем было нужно его написать?
Для нового (и, следовательно, "голого") процессора.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[4]: [Опрос] С чем у Вас ассоциируется компилятор?
Здравствуйте, WoldemaR, Вы писали:
WR>Здравствуйте, compiler-dev, Вы писали:
CD>>С чем или кем в реальной жизни у Вас ассоциируется компилятор?
WR>а ещё с карбюратором.
Тогда уж скорее с трансформатором — преобразует из одного в другое. Причем хороший трансформатор — кпд 100%
With best regards
Pavel Dvorkin
Re[5]: [Опрос] С чем у Вас ассоциируется компилятор?
Здравствуйте, Cyberax, Вы писали:
>> Для нового (и, следовательно, "голого") процессора. C>А не проще делать retarget для GCC? Там всего-то надо модель машины описать.
Для последнего проца есть и backend gcc.
Но для "голой" машины мало одной только модели.
Требуются:
1) компилятор;
2) ассемблер;
3) линкер;
4) отладчик;
5) среда.
Когда мне потребовалось написать компилятор первый раз, то давали времени 2-3 месяца.
А у меня не было никакого опыта, все что я знал — главу из "Алгоритмы + структуры данных = программы" Вирта.
За нехваткой времени я не рискнул браться за gcc.
(Это сейчас новый компилятор можно сделать за 3 дня.)
Взял за основу lcc, но без документации.
Скачал из Инета один файл, с описанием синтаксических деревьев.
Сам сгенерил код.
Автоматизировал генерацию с помощью... Yacc.
(Потом прочитал в "Красном Драконе", что это назвается методом Грэхема-Гленвилла.)
В общем, трудное детство.
А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, отладчики и т.д.) — благодать!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[6]: [Опрос] С чем у Вас ассоциируется компилятор?
AVC wrote: > Для последнего проца есть и backend gcc. > Но для "голой" машины мало одной только модели. > Требуются: > 1) компилятор;
GCC.
> 2) ассемблер;
Он же все равно нужен GCC, кстати, как раз в ассемблер компилирует.
> 3) линкер; > 4) отладчик;
Можно gdb тоже retarget сделать — оно даже для Перла делается
> 5) среда.
Любая, из поддерживающих GCC. Можно даже VisualStudio использовать с
компиляцией через custom build.
> А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, отладчики и > т.д.) — благодать!
Ага, удобная вещь — GCC.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[7]: [Опрос] С чем у Вас ассоциируется компилятор?
Здравствуйте, Cyberax, Вы писали:
>> А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, отладчики и >> т.д.) — благодать! C>Ага, удобная вещь — GCC.
Мне самому GCC нравится.
(Особенно с 3-й версии.)
Но пока что у нас наш "гнушный" backend (совершенно верно: там и ассемблер, и линкер; отладчик и среда, правда, у нас свои) не прошел тестирования, "глючит".
Надеюсь, скоро все проблемы будут решены.
Единственное, временные затраты на вхождение в GCC, конечно, больше.
Но, скорее всего (достаточно уверенное предположение), это того стоит.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[6]: [Опрос] С чем у Вас ассоциируется компилятор?
Большое спасибо за ответ.
AVC>Здравствуйте, Cyberax, Вы писали:
>>> Для нового (и, следовательно, "голого") процессора. C>>А не проще делать retarget для GCC? Там всего-то надо модель машины описать.
AVC>Для последнего проца есть и backend gcc. AVC>Но для "голой" машины мало одной только модели. AVC>Требуются: AVC>1) компилятор; AVC>2) ассемблер; AVC>3) линкер; AVC>4) отладчик; AVC>5) среда.
AVC>Когда мне потребовалось написать компилятор первый раз, то давали времени 2-3 месяца. AVC>А у меня не было никакого опыта, все что я знал — главу из "Алгоритмы + структуры данных = программы" Вирта. AVC>За нехваткой времени я не рискнул браться за gcc. AVC>(Это сейчас новый компилятор можно сделать за 3 дня.) AVC>Взял за основу lcc, но без документации.
На основе открытого кода lcc?
AVC>Скачал из Инета один файл, с описанием синтаксических деревьев. AVC>Сам сгенерил код. AVC>Автоматизировал генерацию с помощью... Yacc. AVC>(Потом прочитал в "Красном Драконе", что это назвается методом Грэхема-Гленвилла.) AVC>В общем, трудное детство. AVC>А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, отладчики и т.д.) — благодать!
md-файл — это кто?
А с помощью чего?
Здравствуйте, AVC, Вы писали:
AVC>Единственное, временные затраты на вхождение в GCC, конечно, больше. AVC>Но, скорее всего (достаточно уверенное предположение), это того стоит.
Посоветуете ссылки на хороте доки для "вхождение в GCC"?
compiler-dev wrote: > AVC>А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, > отладчики и т.д.) — благодать! > md-файл — это кто?
"Machine Description" — описание вычислительной модели процессора. Вот,
например, для i386: http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/i386.md?view=markup
> А с помощью чего?
Руками.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[8]: [Опрос] С чем у Вас ассоциируется компилятор?
AVC wrote: >> > А сейчас пишу md-файлы (2-3 дня; плюс, конечно, ассемблеры, отладчики и >> > т.д.) — благодать! > C>Ага, удобная вещь — GCC. > Мне самому GCC нравится. > (Особенно с 3-й версии.)
Уже четвертая идет
> Но пока что у нас наш "гнушный" backend (совершенно верно: там и > ассемблер, и линкер; отладчик и среда, правда, у нас свои) не прошел > тестирования, "глючит". > Надеюсь, скоро все проблемы будут решены.
В GCC тоже ошибки есть.
Сейчас вот отлавливаю баги в GCOV
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[2]: [Опрос] С чем у Вас ассоциируется компилятор?
Здравствуйте, AVC, Вы писали:
AVC>Здравствуйте, compiler-dev, Вы писали:
CD>>С чем или кем в реальной жизни у Вас ассоциируется компилятор?
AVC>С Виртом: в свое время понял, как устроен компилятор по его книжке. AVC>С собой. Иногда приходится эти компиляторы писать. AVC>(Правда, пока только для Си.)
А как насчёт следующего?
— Мельница.
— Мышь.
— Корова.
— Бобёр,
Здравствуйте, compiler-dev, Вы писали:
AVC>>Взял за основу lcc, но без документации. CD>На основе открытого кода lcc?
Верно.
Взял отсюда: http://www.cs.princeton.edu/software/lcc/
Скачал версию lcc (тогда это, помнится, была версия 4.1),
а также описание интерфейса кодогенератора: http://storage.webhop.net/documents/interface4.pdf
Ознакомился с этим документом, а также с примитивным backend-ом bytecode.c.
Стал мастерить кодогенератор на основе обхода синтаксического дерева.
Но у процессора было довольно много форматов инструкций (только для ALU — восемь).
Я почувствовал легкую тоску.
Затем догадался использовать YACC для автоматизации скучной части работы (lcc не использует YACC для парсинга).
Оказалось, что использование LR-парсеров для кодогенерации не новость.
В конце 70-х и начале 80-х на эту тему был ряд публикаций Грехема и Гленвилла.
(В дебрях "Красного дракона" есть страничка, посвященная этому способу.)
На самом деле, для lcc также лучше использовать md-файл.
Когда у меня появилось больше времени и информации, я так и стал делать.
Достаточно сделать один, остальные можно делать, опираясь на первый, как на шаблон.
CD>md-файл — это кто?
Machine description: описание машины.
Подобные файлы (к сожалению, совершенно разных форматов) создаются для разных переносимых компиляторов.
В частности, для gcc и lcc.
CD>А с помощью чего?
Для каждого компилятора есть свое магическое средство.
Например, для компилятора lcc это программа lburg.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[8]: [Опрос] С чем у Вас ассоциируется компилятор?
GCC использует RTL, который — действительно вариация на тему Лиспа.
Наверное, здесь есть какая-то связь со Столлманом: emacs ведь тоже на основе Лиспа...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[9]: [Опрос] С чем у Вас ассоциируется компилятор?