Re[7]: [Опрос] С чем у Вас ассоциируется компилятор?
От: AVC Россия  
Дата: 30.04.06 18:42
Оценка: 3 (1)
Здравствуйте, 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]: [Опрос] С чем у Вас ассоциируется компилятор?
От: Mamut Швеция http://dmitriid.com
Дата: 30.04.06 19:15
Оценка:
C>"Machine Description" — описание вычислительной модели процессора. Вот,
C>например, для i386:
C>http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/i386.md?view=markup

Он внутрях Лисп что ли использует?


dmitriid.comGitHubLinkedIn
Re[9]: [Опрос] С чем у Вас ассоциируется компилятор?
От: AVC Россия  
Дата: 30.04.06 19:24
Оценка: 9 (1) +1
Здравствуйте, Mamut, Вы писали:

C>>"Machine Description" — описание вычислительной модели процессора. Вот,

C>>например, для i386:
C>>http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/i386.md?view=markup

M> Он внутрях Лисп что ли использует?


GCC использует RTL, который — действительно вариация на тему Лиспа.
Наверное, здесь есть какая-то связь со Столлманом: emacs ведь тоже на основе Лиспа...

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[9]: [Опрос] С чем у Вас ассоциируется компилятор?
От: Cyberax Марс  
Дата: 01.05.06 11:55
Оценка: 9 (1)
Mamut wrote:
> C>"Machine Description" — описание вычислительной модели процессора. Вот,
> C>например, для i386:
> C>http://gcc.gnu.org/viewcvs/trunk/gcc/config/i386/i386.md?view=markup
> Он внутрях Лисп что ли использует?
Надо учитывать кто писал gcc

Это не совсем Lisp (точнее совсем не Lisp), просто похож внешне стилем
задания деревьев.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.