Size: a a a

Compiler Development

2021 March 15

K

Kakadu in Compiler Development
Доклад "Преобразование приложений в нативно исполняемый образ в проекте GraalVM" вот-вот начнется
https://meet.google.com/myu-dhmz-gvu
источник

RE

Richard Elert in Compiler Development
Привет! Есть вопрос: в процессе сборки в чем преимущество LLVMовского подхода через промежуточный IL над AST?

Я пока у себя делаю так: исходники преобразую в AST-«объектники», затем уже собираю итоговое AST представление программы и компилю в LLVM IR, дабы свой бэк не писать. Но в принципе возможно и сразу брать AST и по нему уже генерить конечный бинарь.

P.S. Свой ЯП скорее лично-исследовательский проект, но с прицелом на использование в bare-metal проектах.
источник

K

Kitsu in Compiler Development
Richard Elert
Привет! Есть вопрос: в процессе сборки в чем преимущество LLVMовского подхода через промежуточный IL над AST?

Я пока у себя делаю так: исходники преобразую в AST-«объектники», затем уже собираю итоговое AST представление программы и компилю в LLVM IR, дабы свой бэк не писать. Но в принципе возможно и сразу брать AST и по нему уже генерить конечный бинарь.

P.S. Свой ЯП скорее лично-исследовательский проект, но с прицелом на использование в bare-metal проектах.
Ничего не мешает генерить прямо из ast-а или какого-то иного верхнеуровнего представления. Но общий IR удобен для портабельности на разные яп и таргеты; условно, 10 поддерживаемых языков = 10 различных AST = 10 генераторов машинного кода
источник

RE

Richard Elert in Compiler Development
Ну кмк можно сделать AST портабельным, ибо это и так общее представление. Но может быть я не знаю еще каких-то нюансов.

Т.е. у меня сейчас идея в голове как общее AST представление вместо промежуточного языка
источник

RE

Richard Elert in Compiler Development
Если зафиксировать формат AST, то почему бы и нет) Когда это разрабатывается одним человеком под один ЯП, то да, будет множество нюансов и ЯП-зависимых штук
источник

K

Kitsu in Compiler Development
Richard Elert
Ну кмк можно сделать AST портабельным, ибо это и так общее представление. Но может быть я не знаю еще каких-то нюансов.

Т.е. у меня сейчас идея в голове как общее AST представление вместо промежуточного языка
ast сильно разнится от языка к языку, условно взять те же lisp и c++, совсем непохожие по структуре деревья выйдут
источник

K

Kitsu in Compiler Development
да и само название ast намекает про синтаксис
источник

RE

Richard Elert in Compiler Development
А есть литература по этой теме? Сейчас у меня в процессе книга дракона, мб там этот момент и освещен, но еще не добрался)
источник

AT

Alexander Tchitchigi... in Compiler Development
Richard Elert
Привет! Есть вопрос: в процессе сборки в чем преимущество LLVMовского подхода через промежуточный IL над AST?

Я пока у себя делаю так: исходники преобразую в AST-«объектники», затем уже собираю итоговое AST представление программы и компилю в LLVM IR, дабы свой бэк не писать. Но в принципе возможно и сразу брать AST и по нему уже генерить конечный бинарь.

P.S. Свой ЯП скорее лично-исследовательский проект, но с прицелом на использование в bare-metal проектах.
Какой AST, Вы о чём? https://cakeml.org/compiler.svg ! 😊
источник

AT

Alexander Tchitchigi... in Compiler Development
Richard Elert
Ну кмк можно сделать AST портабельным, ибо это и так общее представление. Но может быть я не знаю еще каких-то нюансов.

Т.е. у меня сейчас идея в голове как общее AST представление вместо промежуточного языка
AST специфичен для каждого конкретного языка — его нельзя сделать "портабельным" между языками, как LLVM IR (в большой степени).
источник

AT

Alexander Tchitchigi... in Compiler Development
Alexander Tchitchigin
Какой AST, Вы о чём? https://cakeml.org/compiler.svg ! 😊
Суть в том, что компилятор в любом случае использует 100500 IR.
источник

AT

Alexander Tchitchigi... in Compiler Development
Richard Elert
А есть литература по этой теме? Сейчас у меня в процессе книга дракона, мб там этот момент и освещен, но еще не добрался)
А в чём конкретно вопрос? 😊
источник

RE

Richard Elert in Compiler Development
Alexander Tchitchigin
Суть в том, что компилятор в любом случае использует 100500 IR.
Вот за картинку спасибо, очень наглядно. Я по незнанию в “AST” включил добрую половину уровней из схемы)
источник

RE

Richard Elert in Compiler Development
Alexander Tchitchigin
А в чём конкретно вопрос? 😊
Тогда и вопрос пока отпадает - закончить дракона нормально, а там уже из шапки можно уточнять будет или более конкретно составлять запрос на литературу))
источник
2021 March 16

AT

Alexander Tchitchigi... in Compiler Development
Richard Elert
Тогда и вопрос пока отпадает - закончить дракона нормально, а там уже из шапки можно уточнять будет или более конкретно составлять запрос на литературу))
👍
источник

AT

Alexander Tchitchigi... in Compiler Development
Richard Elert
Вот за картинку спасибо, очень наглядно. Я по незнанию в “AST” включил добрую половину уровней из схемы)
Да чуть не первым шагом AST преобразуется в CFG -- и всё, это уже не дерево. 😄
источник

A

Alex in Compiler Development
Коллеги, добрый день.

Я тут решил взглянуть на слайды курса COMP 412 от Keith Cooper и внезапно на сайте (https://www.clear.rice.edu/comp412/) написано что он более не актуален, а информацию следует искать в их репозиториях (я не очень понял где именно).

Скажите, ни у кого слайдов не сохранилось?
источник

PS

Peter Sovietov in Compiler Development
Alex
Коллеги, добрый день.

Я тут решил взглянуть на слайды курса COMP 412 от Keith Cooper и внезапно на сайте (https://www.clear.rice.edu/comp412/) написано что он более не актуален, а информацию следует искать в их репозиториях (я не очень понял где именно).

Скажите, ни у кого слайдов не сохранилось?
Увы, я не сохранил. Жаль, конечно. Материал в целом соответствует их учебнику, но слайды интересно было смотреть с точки зрения преподавателя курса по разработке компиляторов.
источник

A

Alex in Compiler Development
Peter Sovietov
Увы, я не сохранил. Жаль, конечно. Материал в целом соответствует их учебнику, но слайды интересно было смотреть с точки зрения преподавателя курса по разработке компиляторов.
Да, для этой цели и интересуюсь. Надо бы курс 512 сохранить на всякий случай )
источник

PS

Peter Sovietov in Compiler Development
Alex
Да, для этой цели и интересуюсь. Надо бы курс 512 сохранить на всякий случай )
Это уж точно!
источник