Size: a a a

Compiler Development

2020 November 27

E

EgorBo in Compiler Development
вряд ли в SSA есть концепт тернарок, но обычно стараются под них завести отдельную инструкцию аля селект
источник

AT

Alexander Tchitchigi... in Compiler Development
Sergey Makarov
а много есть языков программирования, где каждая переменная задаётся ровно единожды, и при этом нет shadowing?
Prolog ещё и, наверное, остальные логические языки. Правда, там "переменные" имеют другую семантику...
источник

M

MrSmith in Compiler Development
Sergey Makarov
а много есть языков программирования, где каждая переменная задаётся ровно единожды, и при этом нет shadowing?
Это не имеет значения, потому что это или ужесточении концепций или упрощение, но не изменение, язык в которых cfg может выступать как значение я вижу впервые
источник

E

EgorBo in Compiler Development
источник

E

EgorBo in Compiler Development
вот вам сложный кфг без фи -_-, правда SROA первым же делом это исправит
источник

AT

Alexander Tchitchigi... in Compiler Development
MrSmith
Это не имеет значения, потому что это или ужесточении концепций или упрощение, но не изменение, язык в которых cfg может выступать как значение я вижу впервые
call/cc? 😉
источник

M

MrSmith in Compiler Development
φ function used in the theory of SSA
источник

M

MrSmith in Compiler Development
У кого есть pdf что за теория?
источник

TS

Timur Safin in Compiler Development
EgorBo
пролема только в том, что эпл говорит что возможна ситуация, когда не у всех ядер-потоков будет эта возможность
ну так и Розетту они будут гонять только на больших ядрах и это ок.
источник

E

EgorBo in Compiler Development
Timur Safin
ну так и Розетту они будут гонять только на больших ядрах и это ок.
так не речь не про розетту, а нативные
источник

TS

Timur Safin in Compiler Development
EgorBo
так не речь не про розетту, а нативные
насколько я понял что если включить этот msr то миграции на слабые ядра не будет, и вроде бы, в рамках модели внутри одного приложения тогда тоже получается ок
источник

NK

ID:0 in Compiler Development
Популярный алгоритм распределения регистров линейным сканированием (Linear Scan Register Allocation, 1999) определен на живых интервалах (live intervals) и линейном списке инструкций. Построение и хранение списка интервалов в виде пар индексов инструкций занимает время и память, поэтому исследователи продолжали искать возможность не строить явно список интервалов.

Авторы Efficient Global Register Allocation (2020) предложили алгоритм из того же семейства, но определенный на графе потока исполнения (control flow graph). Ключевые идеи здесь две:

1. Список живых интервалов здесь отслеживаются неявно, на каждом из базовых блоков и инструкций внутри блоков.

2. Проход по отдельным инструкциям позволяет не только не строить в явном виде интервалы, но и высвобождать временно регистры внутри блоков, что решает проблему "пустот в живости" (liveness holes).

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

В настоящий момент этот вариант линейного сканирования используется при порождении регистрового байткода dex для виртуальной машины ART, используемый в Android.

https://arxiv.org/pdf/2011.05608.pdf

#registeralloc #linearscan #dex #art #android
источник

L

Lamest in Compiler Development
подскажите как заставить ANTLR4 плагин для Idea работать. если много ошибок - я вижу пикрелейтед вместо текста
источник

L

Lamest in Compiler Development
может ктото хотя бы подскажет как заставить antlr4 сгенерировать парсер по двум раздельным файлам - отдельному лексеру и отдельному парсеру
источник

L

Lamest in Compiler Development
а то в парсере я получаю "implicit definition of token LT in parser"
источник

А

Алексей ayaye :)... in Compiler Development
Lamest
может ктото хотя бы подскажет как заставить antlr4 сгенерировать парсер по двум раздельным файлам - отдельному лексеру и отдельному парсеру
источник

L

Lamest in Compiler Development
это не работает. вот что я пробовал:
* pure lexer grammar и pure parser grammar в разных файлах без импортов. не работает. ошибку писал.
* pure lexer grammar и combined grammar без импортов. не работает. та же ошибка.
* pure lexer grammar и combined grammar с импортом, ошибка combined grammar MELSEQ and imported lexer grammar MELSEQLexer both generate MELSEQLexer
* combined grammar и combined grammar  - первая грамматика не содержит правил парсера, поэтому не генерится
* pure lexer grammar и pure parser grammar с импортом, lexer rule RBRACKET not allowed in parser
источник

L

Lamest in Compiler Development
короче не работает вообще ни в каких комбинациях
источник

IK

Ivan Kochurkin in Compiler Development
Lamest
подскажите как заставить ANTLR4 плагин для Idea работать. если много ошибок - я вижу пикрелейтед вместо текста
Вы прикрепили пустой скрин.
источник

L

Lamest in Compiler Development
Ivan Kochurkin
Вы прикрепили пустой скрин.
вот именно
источник