OberonCore
https://forum.oberoncore.ru/

Машинно-независимая оптимизация кода
https://forum.oberoncore.ru/viewtopic.php?f=28&t=5947
Страница 1 из 1

Автор:  Rifat [ Вторник, 08 Ноябрь, 2016 11:52 ]
Заголовок сообщения:  Машинно-независимая оптимизация кода

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

Автор:  Comdiv [ Вторник, 08 Ноябрь, 2016 11:57 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Что должно быть на выходе этого компилятора?

Автор:  Rifat [ Вторник, 08 Ноябрь, 2016 12:02 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Как мне представляется на выходе будет бинарный код x86, но, в принципе, можно прикрутить и трансляцию в Си, .NET MSIL или Java byte code.
В идеале, меняя кодогенератор, должна быть возможность генерировать код под различные платформы.

Автор:  Kemet [ Вторник, 08 Ноябрь, 2016 16:14 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Можно OO2C поизучать на этот счет

Автор:  Trurl [ Вторник, 08 Ноябрь, 2016 20:42 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

GSA только в первой версии OOC использовались. Со второй перешли на более привычную SSA.

Автор:  Rifat [ Среда, 09 Ноябрь, 2016 10:41 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Trurl писал(а):
GSA только в первой версии OOC использовались. Со второй перешли на более привычную SSA.

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

Автор:  prospero78 [ Среда, 09 Ноябрь, 2016 12:50 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Идею про компиль поддерживаю. Собственно, почему не AST?
MSIL + Net штука заманчивая, вкусная, но мы то знаем)))

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

Автор:  Trurl [ Среда, 09 Ноябрь, 2016 14:34 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

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

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

Автор:  Kemet [ Среда, 09 Ноябрь, 2016 14:37 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

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

Автор:  Димыч [ Четверг, 10 Ноябрь, 2016 10:57 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Rifat писал(а):
Есть идея сделать оптимизирующий компилятор.
...

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

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

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

Автор:  Rifat [ Четверг, 10 Ноябрь, 2016 13:05 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

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

Автор:  Димыч [ Четверг, 10 Ноябрь, 2016 13:12 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

Ну тогда вперед :)

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

Автор:  Димыч [ Четверг, 10 Ноябрь, 2016 13:26 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

А кстати, это будет совсем новый проект, с нуля, или все же что-то в основе?

Автор:  Rifat [ Четверг, 10 Ноябрь, 2016 14:21 ]
Заголовок сообщения:  Re: Машинно-независимая оптимизация кода

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

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