OberonCore
https://forum.oberoncore.ru/

Новый компилятор
https://forum.oberoncore.ru/viewtopic.php?f=61&t=6363
Страница 2 из 4

Автор:  Trurl [ Вторник, 05 Март, 2019 21:55 ]
Заголовок сообщения:  Re: Новый компилятор

Это все хорошо и правильно. Но смущает вот что
Цитата:
Для начала однопроходная, методом рекурсивного спуска. А затем — тот же метод рекурсивного спуска, но для построения абстрактного синтаксического дерева.

Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании

Автор:  Пётр Кушнир [ Вторник, 05 Март, 2019 22:55 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
Блэкбокс есть, но он ограничен архитектурой 486-х процессоров.
Вы мало понимаете в предмете, лучше не начинайте компилятор Оберона, назовите это как-нибудь иначе, чтобы тень на исходный язык не отбрасывало.

Автор:  Comdiv [ Вторник, 05 Март, 2019 23:10 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
Компилирует в машинный код, а не в другой язык программирования
Я на всякий случай уточню, что машинный код - это программа на машинном языке программирования, то есть, трансляция в машинный код - это, опять-таки, трансляция "в другой язык программирования". Даже формат абстрактного синтаксического дерева - это тоже язык программирования, хотя и задаваемый по другому.

Автор:  Comdiv [ Вторник, 05 Март, 2019 23:21 ]
Заголовок сообщения:  Re: Новый компилятор

Trurl писал(а):
Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании
Кстати, встречал людей, которым, наоборот, было проще работать с синтаксическим деревом, чем напрямую выполнять действия или генерировать код. Да и полезно было бы зафиксировать разные стадии развития транслятора. В принципе, полезно одновременно иметь и наиболее простую - оперативную версию транслятора и многостадийную версию.

Автор:  kekc_leader [ Среда, 06 Март, 2019 03:46 ]
Заголовок сообщения:  Re: Новый компилятор

Trurl писал(а):
Это все хорошо и правильно. Но смущает вот что
Цитата:
Для начала однопроходная, методом рекурсивного спуска. А затем — тот же метод рекурсивного спуска, но для построения абстрактного синтаксического дерева.

Мне кажется, при таком подходе труднее добиться
Цитата:
Достаточно прост во внутреннем устройстве и понимании

Отнюдь. В итоге останется только абстрактное синтаксическое дерево. Однопроходный компилятор будет строиться в начале книги, да и для нас самих, как для начинающих разработчиков компилятора, написание однопроходного компилятора было необходимым шагом. Диалектический материализм учит, что любую вещь надо показывать в развитии, а не в застывшем, «готовом» виде.

Пётр Кушнир писал(а):
Вы мало понимаете в предмете, лучше не начинайте компилятор Оберона, назовите это как-нибудь иначе, чтобы тень на исходный язык не отбрасывало.

Это недоказанное утверждение. Подавляющее большинство существующих компиляторов Оберона, Оберона-2 и Оберона-07, а также Компонентного Паскаля, нами изучены. В теме мы разбираемся хорошо. Более того, если проследить за нашей деятельностью, то можно увидеть, что опубликованный в репозитории код не представляет основную ветвь проекта, а является новым кодом, начатым заново. Основная версия уже компилирует простейшие программы в исполняемый ELF-файл (Линукс, x86), не используя трансляцию в другой язык программирования или какую-либо другую вспомогательную утилиту. Работают все арифметические операции, обработка сложных выражений, присваивание, вызов процедур из модулей In, Out. Соответственно есть (и работает) библиотека времени выполнения.

Comdiv писал(а):
kekc_leader писал(а):
Компилирует в машинный код, а не в другой язык программирования
Я на всякий случай уточню, что машинный код - это программа на машинном языке программирования, то есть, трансляция в машинный код - это, опять-таки, трансляция "в другой язык программирования". Даже формат абстрактного синтаксического дерева - это тоже язык программирования, хотя и задаваемый по другому.

Там и написано «в машинный код, а не в другой язык программирования», так что вашему утверждению это не противоречит.
Из контекста, однако, должно быть ясно, что имеется в виду язык программирования высокого уровня, такой, например, как Си. Машинный код таким языком не является. Но спасибо за уточнение.

Comdiv писал(а):
...Да и полезно было бы зафиксировать разные стадии развития транслятора. В принципе, полезно одновременно иметь и наиболее простую - оперативную версию транслятора и многостадийную версию.

Замысел таков, что это как раз и будет в книге, поэтому любой сможет при желании повторить. И сам код будет доступен, т. к. различные версии его сохраняются в репозитории.
Переход к абстрактному синтаксическому дереву, скорее всего, понадобится тогда, когда компилятор будет уже вполне готов и будет работать хотя бы на одной платформе.

Автор:  Пётр Кушнир [ Среда, 06 Март, 2019 12:00 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
Это недоказанное утверждение. Подавляющее большинство существующих компиляторов Оберона, Оберона-2 и Оберона-07, а также Компонентного Паскаля, нами изучены. В теме мы разбираемся хорошо.
Во-первых, в собственном деле никто не может быть судьей. Во-вторых, доказательством, кхм, является приведённая мной цитата из вашего поста.
kekc_leader писал(а):
Блэкбокс есть, но он ограничен архитектурой 486-х процессоров.
Она говорит о том, что вы либо предвзяты и расчитываете на частные успехи вашей собственной команды (занять своей разработкой полянку ББ, например), либо не изучили нихрена, на самом деле, и теперь, в результате этого, просто будете делать кучу лишней работы вместо создания кодогенератора для компилятора ББ или компилятора А2.

Автор:  Trurl [ Среда, 06 Март, 2019 12:24 ]
Заголовок сообщения:  Re: Новый компилятор

Пётр Кушнир писал(а):
вместо создания кодогенератора для компилятора ББ или компилятора А2.

Вот только для книги они мало подходят.

Автор:  Пётр Кушнир [ Среда, 06 Март, 2019 12:38 ]
Заголовок сообщения:  Re: Новый компилятор

Trurl писал(а):
Пётр Кушнир писал(а):
вместо создания кодогенератора для компилятора ББ или компилятора А2.

Вот только для книги они мало подходят.
Это неизвестно и непонятно, почему разработка нормального компилера с AST и сменными кодогенераторами по мотивам Compiler Construction должна привести к чему-то, отличному от OP2.Paper (кажется, так она называлась)?
И это (тут уже просто мысли вслух) ведь без slim binaries, без планов на стандартную библиотеку уровня 2019 года, без чего-то революционного, как в rust или kotlin, просто ещё один оберон-компилятор, который конечно же будет лучше чем ББ ваш мерзкий-под-винду.

Автор:  Валерий Лаптев [ Среда, 06 Март, 2019 13:56 ]
Заголовок сообщения:  Re: Новый компилятор

Для книжки кодогенератор делать лучше в виртуальную машину...
Иначе придется много конкретики писать для конкретного типа компьютера...
Я так понимаю, что отдельный модуль - это отдельный объектный файл?
А собираться будет стандартными средствами в конкретной оси?
Почему бы не рассмотреть вариант LLVM?

Автор:  Trurl [ Среда, 06 Март, 2019 14:23 ]
Заголовок сообщения:  Re: Новый компилятор

Валерий Лаптев писал(а):
Почему бы не рассмотреть вариант LLVM?

Какой версии?

Автор:  kekc_leader [ Четверг, 07 Март, 2019 03:54 ]
Заголовок сообщения:  Re: Новый компилятор

Пётр Кушнир писал(а):
...Доказательством, кхм, является приведённая мной цитата из вашего поста.

Блекбокс действительно выдаёт код только для архитектуры 486 (не ниже). К нему можно подключать другие модули кодогенератора, но мы новые модули кодогенератора для Блекбокса писать (пока) не хотим.
Для того, чтобы это сделать, надо как следует разобраться в компиляторе Блекбокса, а также в компиляторах как таковых, в машинных кодах, форматах исполняемых файлов. Краткий путь к этому состоит в том, чтобы написать свой компилятор с нуля. Для этого Вирт даже книгу написал. Если вы считаете, что можно вполне освоить инженерную дисциплину без надлежащей практики, то вы ошибаетесь.

Пётр Кушнир писал(а):
Она говорит о том, что вы либо предвзяты и расчитываете на частные успехи вашей собственной команды (занять своей разработкой полянку ББ, например), либо не изучили нихрена, на самом деле, и теперь, в результате этого, просто будете делать кучу лишней работы вместо создания кодогенератора для компилятора ББ или компилятора А2.

Логики в этом высказывании нет, есть только брызганье ядом. В чём смысл тратить кучу времени, занимаясь бесплатной работой, чтобы в итоге произвести бесплатный и открытый компилятор? Здесь вы при всём желании не найдёте корыстного умысла. По себе не судите.

Блекбокс и А2 — замечательные проекты, но почему-то в большой степени боршенные и не доведённые до того состояния, до которого их бы можно было довести. Видимо, одна из причин — небольшое сообщество компиляторостроителей, т. к. тема очень сложная, а подходящих книг, при всём уважении к Вирту, Свердлову и другим авторам, недостаточно. Книги тоже очень хорошие, даже, пожалуй, гениальные. Перечитаны и проштудированы не один раз. Эта тема обсуждалась на форуме раньше (в том числе и в связи с работой над новым компилятором). Если бы был замчетальный законченный Блекбокс или А2, или к их доработке можно было бы преступить как-то иначе, кроме как создав сначала свой компилятор, это было бы замечательно. Весь опыт Вирта учит нас, что, чтобы овладеть созданием компиляторов, надо проделывать этот путь самому.
Брызганье ядом по этому поводу и какие-то смешные обвинения вызывают не более, чем жалость.



P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.

Автор:  kekc_leader [ Четверг, 07 Март, 2019 04:11 ]
Заголовок сообщения:  Re: Новый компилятор

Валерий Лаптев писал(а):
Для книжки кодогенератор делать лучше в виртуальную машину...

Уже есть много замечательных книжек, которые компилируют в виртуальную машину (та же книга Вирта или Свердлова). Основы компиляторостроения там хорошо показаны. Не показана там реальная ситуация, реальные возникающие в работе затруднения, когда речь заходит о комплияции под конкретный процессор (однако есть такие книги для процессоров семейства ARM). Отдельная глава книги будет посвящена программированию на ассемблере, в том числе на конкретных процессорах. Хороших всеобъемлющих справочников по машинным кодам тоже нет (по крайней мере, сколько ни искали, не нашли). Мы такой справочник по ходу работы уже во многом создали для x86 (как кодировать различные инструкции).

Валерий Лаптев писал(а):
Я так понимаю, что отдельный модуль - это отдельный объектный файл?

Да, причём, в случае, если модуль должен быть пригоден для динамической подгрузки (в какой-то момент после начала выполнения программы), то это ещё должен быть и DLL/so-файл.

Валерий Лаптев писал(а):
А собираться будет стандартными средствами в конкретной оси?

Пока что собираем сами, но сейчас у нас всего один объектный файл + библиотека времени выполнения.
Формат объектных файлов может быть стандартный «.o», чтобы его можно было подключать к программам на Си, или же может быть свой формат. Во втором случае должен быть и свой компоновщих.

Валерий Лаптев писал(а):
Почему бы не рассмотреть вариант LLVM?

Увы, это исключено (хотя, как один из выходных форматов — почему бы и нет?).
Если представить себе альтернативную вселенную, где мы писали бы компилятор языка PL/1 или PHP, то такой вариант был бы вполне подходящим. Однако преимущество Оберона состоит именно в его надёжности. Язык-посредник типа LLVM или Си ликвидирует саму возможность такой надёжности. То есть если транслятор Оберона в такой язык посредник будет аккуратно написанным, выверенным, даже верифицированным, про код компилятора LLVM такое сказать уже будет нельзя. Трансляция в Си и LLVM даёт большие возможности для портирования программ (да и самого компилятора) на другие платформы, но сама по себе не может служить основой, вполне соответствующей идее Оберона.

Автор:  Пётр Кушнир [ Четверг, 07 Март, 2019 09:44 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
Логики в этом высказывании нет, есть только брызганье ядом.
Полезное свойство логыки в интернетных спорах - кто первый вспомнил про логику, тот и самый логычный.
kekc_leader писал(а):
Если вы считаете, что можно вполне освоить инженерную дисциплину без надлежащей практики, то вы ошибаетесь.
Вы уж определитесь, вы разбираетесь в предмете или не разбираетесь, а то ведь если не разбираетесь, или диалектично разбираетесь и не разбираетесь одновременно, какого чёрта вы вообще тут высказываете оценочные суждения, молчите и слушайте, что вам говорят.
kekc_leader писал(а):
Если бы был замчетальный законченный Блекбокс или А2, или к их доработке можно было бы преступить как-то иначе, кроме как создав сначала свой компилятор, это было бы замечательно
Не вам судить, вы не разбираетесь в предмете достаточно глубоко, не вполне освоили ещё.
kekc_leader писал(а):
P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.
Разменивать вежливость на осмысленность это такая позднесоветская псевдоинтеллектуальная причуда или что? Или вы со своим серпом и молотом самый нормальный тут? Еще раз предлагаю, заткнитесь. Это не от грубости, это вам на пользу пойдёт. Думаете, выучили пару ленинских оборотов и сразу стали утончённым полемистом? Вы не первый и не последний гипер-активист с шизоидными противоречиями в многословных высказываниях на этом форуме. Только выхлоп от вас, как всегда. Всех я уже и не вспомню, и каждый спотыкался об простые вопросы, типа последнего, полулиспера, который ast от исходников не отличает. А уж как рассуждать умеет, и про ББ, и про сообщество, и меня сразу раскусил. Шиза.

Автор:  Trurl [ Четверг, 07 Март, 2019 09:48 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
К нему можно подключать другие модули кодогенератора

Если быть точным, у него можно заменить модуль кодогенератора.

Автор:  Борис Рюмшин [ Четверг, 07 Март, 2019 12:37 ]
Заголовок сообщения:  Re: Новый компилятор

kekc_leader писал(а):
P. S. Посмотрел сообщения Петра Кушнира (а он уже перешёл на личности). Видимо он просто ненормальный — все его сообщения выглядят примерно так: «Я всегда знал, что вы негодяй и подлец!» и «А вот и ещё один недоумок». Предлагаю вообще закончить с ним разговор.
Пётр Кушнир писал(а):
Разменивать вежливость на осмысленность это такая позднесоветская псевдоинтеллектуальная причуда или что? Или вы со своим серпом и молотом самый нормальный тут? Еще раз предлагаю, заткнитесь. Это не от грубости, это вам на пользу пойдёт. Думаете, выучили пару ленинских оборотов и сразу стали утончённым полемистом? Вы не первый и не последний гипер-активист с шизоидными противоречиями в многословных высказываниях на этом форуме. Только выхлоп от вас, как всегда. Всех я уже и не вспомню, и каждый спотыкался об простые вопросы, типа последнего, полулиспера, который ast от исходников не отличает. А уж как рассуждать умеет, и про ББ, и про сообщество, и меня сразу раскусил. Шиза.

Так, товарищи, завязывайте со взаимными разборками. Хочется словесно друг другу набить морду -- в ЛС.

Автор:  kekc_leader [ Четверг, 07 Март, 2019 15:06 ]
Заголовок сообщения:  Re: Новый компилятор

Нет никакого желания разводить споры не по существу вопроса.

Товарищи, есть ли ещё вопросы по компилятору?

Автор:  Rifat [ Четверг, 07 Март, 2019 15:26 ]
Заголовок сообщения:  Re: Новый компилятор

Если кто-то захочет присоединиться, то на каком сайте регистрироваться? Где вы обсуждения ведете на форуме, телеграме или где-то еще?

Автор:  kekc_leader [ Четверг, 07 Март, 2019 18:53 ]
Заголовок сообщения:  Re: Новый компилятор

Rifat писал(а):
Если кто-то захочет присоединиться, то на каком сайте регистрироваться? Где вы обсуждения ведете на форуме, телеграме или где-то еще?

Сейчас все участники проекта живут в Риге, поэтому обсуждение и работу ведём вживую. Можно создать чат в Телеграме.
Писать можно мне или через сайт freeoberon.su.

Автор:  Artyemov [ Пятница, 08 Март, 2019 19:58 ]
Заголовок сообщения:  Re: Новый компилятор

Цитата:
Хороших всеобъемлющих справочников по машинным кодам тоже нет (по крайней мере, сколько ни искали, не нашли).

По ARM это Architecture Reference Manual - всеобъемлющее не бывает; берутся с сайта ARM, причём на каждую версию - отдельный документ, к примеру DDI0403E_C для v7M, а DDI0406C_C для v7A и v7R.

Вложения:
DDI0403E_C_ARM_v7M_ArchitectureRefMan.pdf [5.75 МБ]
Скачиваний: 359

Автор:  kekc_leader [ Суббота, 09 Март, 2019 01:50 ]
Заголовок сообщения:  Re: Новый компилятор

Спасибо. Да, с ARM всё гораздо проще.

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