OberonCore
https://forum.oberoncore.ru/

Оптимизирующий компилятор
https://forum.oberoncore.ru/viewtopic.php?f=61&t=6340
Страница 2 из 3

Автор:  Comdiv [ Среда, 09 Январь, 2019 17:38 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Rifat писал(а):
В книге Вирта "Построение компилятора" есть целая глава посвященная оптимизации. Там говорится о том, что надо соизмерять усложнение компилятора от реализации поддержки оптимизаций и выгоду от оптимизации кода. Но не говорится о том, что все оптимизации плохи.
Я вёл речь о мало-мальски сложных оптимизациях. А так-то и в Blackbox оптимизирующий компилятор. Разве такие оптимизации Вы имели ввиду? Да и речь шла не про хорошесть-плохость, а о "Oberon way". В применении генераторов парсеров и AST тоже ничего плохого нет.

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

Автор:  Comdiv [ Среда, 09 Январь, 2019 17:42 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Борис Рюмшин писал(а):
еправильно выразился, Intermediate Representation.
Ну вот и IR - это не код RISC машины.

Борис Рюмшин писал(а):
Но при чём тут тогда:
Comdiv писал(а):
...вряд ли llvm сильно поможет, так как заточен под языки уровня С++
если речь идёт о RISC-образном Intermediate Representation?
А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR?

Автор:  Comdiv [ Среда, 09 Январь, 2019 17:45 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Борис Рюмшин писал(а):
За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать.
То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0

Автор:  Борис Рюмшин [ Среда, 09 Январь, 2019 17:51 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
Борис Рюмшин писал(а):
За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать.
То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0

На любые работы нужен определённый бюджет. Либо финансовый, либо временной. Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.

Автор:  Борис Рюмшин [ Среда, 09 Январь, 2019 18:00 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR?

При помощи LLVM. К хаосу детали, я не углублялся в структуру этой хрени. Но, на сколько я понимаю,
The LLVM code representation is designed to be used in three different forms: as an in-memory compiler IR, as an on-disk bitcode representation (suitable for fast loading by a Just-In-Time compiler), and as a human readable assembly language representation.
значит именно его можно генерировать, а дальше уже работа LLVM с оптимизацией и генерацией целевого кода.

Автор:  Comdiv [ Среда, 09 Январь, 2019 18:04 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Цитата:
На любые работы нужен определённый бюджет. Либо финансовый, либо временной
Разумеется, нужен бюджет, но некоторые верят в воплотимость малыми силами.
Цитата:
Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.
Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.
Цитата:
значит именно его можно генерировать
Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.

Автор:  Борис Рюмшин [ Среда, 09 Январь, 2019 18:07 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
Цитата:
Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.
Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.

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

Автор:  Борис Рюмшин [ Среда, 09 Январь, 2019 18:15 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
Цитата:
значит именно его можно генерировать
Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.

А я о чём? Стоило столько сообщений согласовывать очевидное?

Автор:  Rifat [ Среда, 09 Январь, 2019 18:39 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Про LLVM и его минусы я уже писал. Если кто хочет можете создать отдельную тему про LLVM.

Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать. И затем только выяснится какие оптимизации дают самые существенные улучшения. А какие оптимизации дают только незначительные улучшения. Как раз такие темы и надо обсуждать, если будут желающие.

Автор:  Comdiv [ Среда, 09 Январь, 2019 18:41 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Борис Рюмшин писал(а):
А я о чём? Стоило столько сообщений согласовывать очевидное?

Смотря на то, о чём Вы. Как ещё понять друг друга, кроме как согласовывая? Начали мы, вроде бы, с C VS IR, а закончили RISC VS IR.

1. LLVM IR удобней для промежуточный генерации чем гипотетический LLVM IR RISC
2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С
3. Генераторы в С уже есть, генераторы в IR только будут.
4. С обладает более высокой переносимостью, чем LLVM IR

Так?

Автор:  Comdiv [ Среда, 09 Январь, 2019 18:44 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Rifat писал(а):
Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать.
Может, уже наисследовано и наэкспериментировано? Ведь, если нет, то это тоже гора работы.

Автор:  Trurl [ Среда, 09 Январь, 2019 18:45 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

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

Можно взять OOC и прикрутить к нему кодогенератор в ассемблер. Насколько я понял, так вначале и планировалось.

Автор:  Борис Рюмшин [ Среда, 09 Январь, 2019 20:43 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

LLVM я предложил как один из вариантов применения готовой оптимизации, а не как панацею. Обсуждать тут детали IR ли, не IR ли, тот ли IR или не тот, и прочая вообще незачем.

Автор:  Kemet [ Четверг, 10 Январь, 2019 06:22 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Борис Рюмшин писал(а):
Кстати, без всяких LLVM и GCC обходятся.
А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.

Автор:  Kemet [ Четверг, 10 Январь, 2019 06:26 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Борис Рюмшин писал(а):
значит именно его можно генерировать, а дальше уже работа LLVM с оптимизацией и генерацией целевого кода.
Такой компилятор есть, вернее был, так как после изменений в llvm он не работает. Там пошли по самому простому пути - генерация асссемблерных файлов ir, это обычный текст, для старта вполне достаточно.

Автор:  Kemet [ Четверг, 10 Январь, 2019 06:35 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С

Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне, оно достаточно эффективно сгенерирует код, к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++?
Comdiv писал(а):
3. Генераторы в С уже есть, генераторы в IR только будут.

С генераторами в С нет никакой возможности управлять этим увлекательным процессом, нет возможности сгенерировать необходимое представление внутренних структур в памяти, а с llvm ir ты укладываешь кирпичики из битиков, байтиков, слов... , как тебе угодно, полное управление.

Автор:  Борис Рюмшин [ Четверг, 10 Январь, 2019 12:22 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Kemet писал(а):
Борис Рюмшин писал(а):
Кстати, без всяких LLVM и GCC обходятся.
А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.

Опять таки, я ФриПаскаль привёл, как пример проекта компилятора отличного от GCC и LLVM, над которым уже 25 лет работают, а не как образцовый пример компилятора. :roll:

Автор:  Comdiv [ Четверг, 10 Январь, 2019 13:25 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Kemet писал(а):
Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне
Можно писать на чём угодно, это обеспечивает алгоритмическая полнота, но заточенность обеспечивает большую эффективность той системе, которая к ней ближе. Именно об этом речь. У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM, поэтому, к примеру, наиболее эффективные реализации Java работают не через LLVM, несмотря на наличие последнего. Другое дело, что раскрыть этот потенциал очень трудоёмко
Kemet писал(а):
оно достаточно эффективно сгенерирует код
это нигде и не оспаривалось
Kemet писал(а):
к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++?
Приблизительно такое же, как архитектура Reduceron имеет отношение к Haskell, но какое это имеет отношение к теме? Может быть, компиляторы Си не на LLVM не делают машинозависмых оптимизаций?

Kemet писал(а):
С генераторами в С нет никакой возможности управлять этим увлекательным процессом, нет возможности сгенерировать необходимое представление внутренних структур в памяти, а с llvm ir ты укладываешь кирпичики из битиков, байтиков, слов... , как тебе угодно, полное управление.
Я в будущем хотел бы задействовать LLVM, но на значимое ускорение не рассчитываю. Если Вы знаете, как нужно укладывать байтики в LLVM для Оберона, чтобы это дало существенный прирост по сравнению с Си, пожалуйста, расскажите об этом. Кисельные берега мне малоинтересны.

Автор:  Rifat [ Четверг, 10 Январь, 2019 15:16 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Comdiv писал(а):
У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM

Это должно быть так, то есть теоретически можно обогнать Си по производительности и получить звание самого быстрого языка программирования.

Автор:  Comdiv [ Четверг, 10 Январь, 2019 16:19 ]
Заголовок сообщения:  Re: Оптимизирующий компилятор

Я имел ввиду, что гипотетическая специализированная под Оберон система даёт гипотетическую же возможность оптимизировать программы на Обероне сильней, чем система, созданная для С. Это не означает, что это даёт преимущество в скорости языку. Тут играет близость языка задаче, привычкам программиста и целевой машине. Если Вы знаете о вещах в Обероне, которые положительно влияют на оптимизацию по сравнению с Си, то озвучьте их.

Могу начать с того, что структурный поток управления лучше подходит для статического анализа, который, возможно, позволит провести более глубокую оптимизацию, но это ещё надо доказать.

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