OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 12 Декабрь, 2018 15:01

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 08 Ноябрь, 2016 11:52 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Есть идея сделать оптимизирующий компилятор. Для этого необходимо распарсить текст языка программирования и преобразовать его во внутреннее представление, над которым дальше будут выполняться определенные оптимизации. А далее уже по оптимизированному внутреннему представлению можно сгенерировать код.
В качестве внутреннего представления можно использовать GSA (guarded single assignment) form.
Основная сложность здесь это разобраться как формируется GSA и как производить оптимизации над ним.
Я хочу разобраться с тем, как сгенерировать GSA и разработать оптимизирующий компилятор для Оберона-07.
Если кто-то также хочет разобраться с использованием GSA, то буду рад таким откликам, так как вместе разбираться будет проще.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 08 Ноябрь, 2016 11:57 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 742
Откуда: Киев
Что должно быть на выходе этого компилятора?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 08 Ноябрь, 2016 12:02 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Как мне представляется на выходе будет бинарный код x86, но, в принципе, можно прикрутить и трансляцию в Си, .NET MSIL или Java byte code.
В идеале, меняя кодогенератор, должна быть возможность генерировать код под различные платформы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 08 Ноябрь, 2016 16:14 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 543
Можно OO2C поизучать на этот счет


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 08 Ноябрь, 2016 20:42 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1097
GSA только в первой версии OOC использовались. Со второй перешли на более привычную SSA.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 09 Ноябрь, 2016 10:41 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Trurl писал(а):
GSA только в первой версии OOC использовались. Со второй перешли на более привычную SSA.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 09 Ноябрь, 2016 12:50 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1094
Откуда: СССР v2.0 rc 1
Идею про компиль поддерживаю. Собственно, почему не AST?
MSIL + Net штука заманчивая, вкусная, но мы то знаем)))

Я за прямой бинарный код под х86.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 09 Ноябрь, 2016 14:34 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1097
Rifat писал(а):
Хотел спросить, а откуда вы узнали, что GSA больше не используется. Вы где-то прочитали об этом или же это из анализа исходников?

Да прямо в докуметации и написано. Да и анализ исходников тривиален - там есть каталог SSA.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 09 Ноябрь, 2016 14:37 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 543
Trurl писал(а):
GSA только в первой версии OOC использовались. Со второй перешли на более привычную SSA.
А что это меняет? Первая версия намного проще, к тому же там практически незамутненный Оберон-2.
Как мне помнится, GSA это же что-то типа расширения или вариант SSA


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2016 10:57 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Rifat писал(а):
Есть идея сделать оптимизирующий компилятор.
...

Сделай AST.
Имея формально выделенное дерево, очень удобно как делать трансформацию, так и генерировать код.
Части компилятора становятся слабо связанными синтаксически (нет необходимости обвешивать процедуры обхода), зато в остальном руки развязываются.
Дерево даже можно сохранять в промежуточное представление для передачи другим инструментам.

Ну и еще можно посмотреть в сторону LLVM, там структура кода очень даже неплохая, можно идей оттуда надёргать.

Если нет NIH-синдрома, то можно даже LLVM использовать в качестве backend'а.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2016 13:05 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
NIH-синдром есть :)
Не хочу завязываться на Си инфраструктуру. Так как, чтобы собрать систему, нужно будет знать не только один язык, но еще и второй язык, который также может тянуть еще что-то.
К тому же, 17 Мб исходников в архиве и почти 31000 багов в баг трекере как то немного отпугивают от LLVM.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2016 13:12 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Ну тогда вперед :)

Хорошее разделение слоев очень поможет.
Особенно до построения AST. Сильная синтаксическая связность в компиляторе мешает.
По опыту уже вижу, что когда есть pipeline, на котором всегда можно отделить данные от кода,
то работать сильно проще, чем когда все в куче.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2016 13:26 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
А кстати, это будет совсем новый проект, с нуля, или все же что-то в основе?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Ноябрь, 2016 14:21 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Можно сказать, что с нуля. В качестве основы планирую взять знания, которые уже есть, а код можно заново написать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

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


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB