OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 22 Март, 2019 21:22

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




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Оптимизирующий компилятор
СообщениеДобавлено: Вторник, 08 Январь, 2019 16:19 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 769
Откуда: Казань
Некоторые участники форума создали компиляторы/трансляторы/интерпретаторы различных модификаций Оберона. То, что компиляторы работают, уже большое достижение. Но по производительности они часто проигрывают, так как там бывают реализованы очень простые методы. Хорошо бы создать оптимизирующий компилятор, который будет оптимизировать какие-то критерии: скорость работы, размер программы, энерго-эффективность программы и другие. Вообще тема оптимизаций довольно большая и сложная и хотелось бы найти единомышленников, которым также было бы интересно разбираться в теме оптимизирующих компиляторов. Если вам эта тема интересна, то пишите в теме или в личку и обсудим, как можно совместно изучать эту тему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Вторник, 08 Январь, 2019 19:47 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2559
Откуда: Россия, Ярославль
Оптимизации это обман.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Вторник, 08 Январь, 2019 23:38 

Зарегистрирован: Воскресенье, 09 Декабрь, 2018 15:14
Сообщения: 31
Откуда: Equestria
Давно надо уже брать и делать, а не в очередной раз обсуждать. :)
Что имеет смысл допиливать кроме более продвинутой аллокации регистров и выпиливания по пути дублирующихся [под]выражений, кроме стандартных оптимизаций которые есть уже почти в любом компиляторе оберона?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 00:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7995
Откуда: Троицк, Москва
Тут как с раскраской синтаксиса: хорошо бы иметь возможность сказать, вот, мол, было целых три проекта, но никто не пользуется, поэтому они заброшены ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 10:53 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 769
Откуда: Казань
SovietPony писал(а):
Давно надо уже брать и делать, а не в очередной раз обсуждать. :)
Что имеет смысл допиливать кроме более продвинутой аллокации регистров и выпиливания по пути дублирующихся [под]выражений, кроме стандартных оптимизаций которые есть уже почти в любом компиляторе оберона?

На уровне ЧТО надо сделать всё понятно. Да, надо распределение регистров, удаление общих подвыражений и так далее. Хотелось бы еще понимать КАК это реализовать. Надо преобразовать программы в SSA форму, затем оптимизировать SSA форму, возникает много вопросов КАК это реализовать. Хотелось бы найти ещё желающих изучать тему КАК можно реализовать оптимизации и совместно изучать эту тему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 11:27 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4230
Откуда: Россия, Орёл
Не изучая теорию компиляции в части оптимизации, можно, в качестве самого простого решения, написать backend в байт-код LLVM, и пусть последний оптимизирует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 11:53 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7995
Откуда: Троицк, Москва
Борис Рюмшин писал(а):
Не изучая теорию компиляции в части оптимизации, можно, в качестве самого простого решения, написать backend в байт-код LLVM, и пусть последний оптимизирует.
Да, вот что-то такое для начала.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 12:01 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 769
Откуда: Казань
Info21 писал(а):
Борис Рюмшин писал(а):
Не изучая теорию компиляции в части оптимизации, можно, в качестве самого простого решения, написать backend в байт-код LLVM, и пусть последний оптимизирует.
Да, вот что-то такое для начала.

На этом как начнется, так и закончится. Допустим, сделали под LLVM, что-то он там оптимиризует. Получится зависимость от него. И LLVM написан на C++, то есть требуется компилятор C++ в любом случае. Спрашивается, зачем тогда компилятор Оберона, если есть компилятор C++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 12:45 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1007
Требуется понимание как его использовать, для начала. Библиотеки можно не подключать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 13:14 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 782
Откуда: Киев
Это реанимация темы 2-х летней давности - Машинно-независимая оптимизация кода?

Борис Рюмшин писал(а):
Не изучая теорию компиляции в части оптимизации, можно, в качестве самого простого решения, написать backend в байт-код LLVM, и пусть последний оптимизирует.
Есть уже трансляторы в Си - они обеспечивают высокий уровень оптимизации конечного кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 13:27 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 769
Откуда: Казань
Кто-то хочет прикрутить LLVM. Желание понятное, но это немного не соответствует Oberon way. Например, для парсинга Oberon кода можно взять какой-нибудь мощный генератор парсеров: ANTLR, Bison. Разобраться как их использовать, написать грамматику Оберона и автоматически сгенерировать парсер. Но так практически никто не делает, потому что есть Oberon way, который гласит, что мы не будет переусложнять грамматику и сможем парсить простыми методами типа рекурсивного спуска. Также и с LLVM - это мощный оптимизатор, который написан на C++, учитывает при оптимизациях модель памяти языка C++. Исходники LLVM в архиве занимают 27 мегабайт, а после распаковки 272 мегабайта C++ кода и различных конфиг файлов. Хотелось бы также как и с парсингом найти Oberon way. Реализовать какие-нибудь простые, но мощные алгоритмы, которые не тянут за собой горы непонятно чего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 13:44 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1173
LLVM имеет нехорошую манеру менять интерфейсы с каждой новой версией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 16:07 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 782
Откуда: Киев
Rifat писал(а):
Хотелось бы также как и с парсингом найти Oberon way
"Oberon way" для оптимизаций генерируемого кода давно найден - не делать оптимизацию.
Rifat писал(а):
Реализовать какие-нибудь простые, но мощные алгоритмы
Есть такие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 16:46 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4230
Откуда: Россия, Орёл
Comdiv писал(а):
Есть уже трансляторы в Си - они обеспечивают высокий уровень оптимизации конечного кода.

Лишнее промежуточное звено в виде Си. LLVM IR, насколько я понимаю, это RISC виртуальная машина. Генерировать RISC вполне можно, взяв и подправив хотя бы компилятор из Project Oberon. Или там без привязки к библиотекам LLVM ничего сделать нельзя?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 16:50 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 769
Откуда: Казань
Comdiv писал(а):
Rifat писал(а):
Хотелось бы также как и с парсингом найти Oberon way
"Oberon way" для оптимизаций генерируемого кода давно найден - не делать оптимизацию.

В книге Вирта "Построение компилятора" есть целая глава посвященная оптимизации. Там говорится о том, что надо соизмерять усложнение компилятора от реализации поддержки оптимизаций и выгоду от оптимизации кода. Но не говорится о том, что все оптимизации плохи.

Comdiv писал(а):
Rifat писал(а):
Реализовать какие-нибудь простые, но мощные алгоритмы
Есть такие?

Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор. Насколько я знаю исходники закрыты, но могут быть открыты за 50 кило евро :) (где-то на форуме была такая инфа).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:19 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1007
Были бы все плохи — вопроса не было бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:25 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 782
Откуда: Киев
Борис Рюмшин писал(а):
Лишнее промежуточное звено в виде Си.
Лишнее для чего? Если речь шла о
Цитата:
Тут как с раскраской синтаксиса: хорошо бы иметь возможность сказать, вот, мол, было целых три проекта, но никто не пользуется, поэтому они заброшены ))
То это правда. Есть много таких оптимизирующих* трансляторов Оберона, которые заброшены.
Если речь идёт о том, чтобы добиться большей производительности, то вряд ли llvm сильно поможет, так как заточен под языки уровня С++. Для языков с другой моделью, например, Java, он подходит хуже. То есть, хотите или нет, а лишнее звено в виде С, там всё равно есть, пусть и виртуальное. Тут я согласен с Рифатом. Вообще, идея универсального независящего от языка промежуточного представления ложна.

Цитата:
LLVM IR, насколько я понимаю, это RISC виртуальная машина. Генерировать RISC вполне можно, взяв и подправив хотя бы компилятор из Project Oberon. Или там без привязки к библиотекам LLVM ничего сделать нельзя?
Всё там можно без привязок. IR - это не RISC виртуальная машина, но это и не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:29 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4230
Откуда: Россия, Орёл
Rifat писал(а):
Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор. Насколько я знаю исходники закрыты, но могут быть открыты за 50 кило евро :) (где-то на форуме была такая инфа).

За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:32 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4230
Откуда: Россия, Орёл
Comdiv писал(а):
Цитата:
LLVM IR, насколько я понимаю, это RISC виртуальная машина. Генерировать RISC вполне можно, взяв и подправив хотя бы компилятор из Project Oberon. Или там без привязки к библиотекам LLVM ничего сделать нельзя?
Всё там можно без привязок. IR - это не RISC виртуальная машина, но это и не нужно.

Неправильно выразился, Intermediate Representation. Но при чём тут тогда:
Comdiv писал(а):
...вряд ли llvm сильно поможет, так как заточен под языки уровня С++
если речь идёт о RISC-образном Intermediate Representation?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:33 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4230
Откуда: Россия, Орёл
LLVM IR просто одна из целевых архитектур может быть для более общего компилятора.


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

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


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

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


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

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