Size: a a a

Compiler Development

2019 September 19

А

Алексей in Compiler Development
да, сорян что ранее не уточнил
источник

М

Махи in Compiler Development
хм. я поняла, что я не могу четко задать вопрос на который я хочу узнать ответ)) но, кажется мне, стейт-машина это не то, чего я хотела...
источник

AT

Alexander Tchitchigin in Compiler Development
В принципе, я помню есть теорема о том, что любой control flow (с goto) можно сделать структурным (из блоков с одним входом и одним выходом, как известно), в которой даже приводится собственно алгоритм преобразования. Только код раздувается, конечно, при наивном подходе.
источник

T

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

T

Tagir in Compiler Development
Никто не сказал, что дублировать нельзя
источник

М

Махи in Compiler Development
да. я поняла уже ): я осознала, что не очень понимаю на какой вопрос я хочу получить ответ
источник

М

Махи in Compiler Development
так что можно сказать что проехали
источник

М

Махи in Compiler Development
Махи
да. я поняла уже ): я осознала, что не очень понимаю на какой вопрос я хочу получить ответ
в принципе тоже результат (: спасибо!
источник

T

Tagir in Compiler Development
Да, вопрос нечёткий, согласен
источник

T

Tagir in Compiler Development
Вообще в спешке jvm много моментов, которые трудно в джаве представить. Не только invokedynamic. Кажется, в финальные поля можно дважды писать в конструкторе
источник

T

Tagir in Compiler Development
Можно кинуть проверяемое исключение, не объявленное в сигнатуре метода
источник

AT

Alexander Tchitchigin in Compiler Development
Tagir
Вообще в спешке jvm много моментов, которые трудно в джаве представить. Не только invokedynamic. Кажется, в финальные поля можно дважды писать в конструкторе
А на уровне JVM вообще есть разница между финальными и нефинальными полями??? 😲
источник

C

Charm in Compiler Development
Alexander Tchitchigin
А на уровне JVM вообще есть разница между финальными и нефинальными полями??? 😲
JMM же
источник

AT

Alexander Tchitchigin in Compiler Development
Charm
JMM же
Действительно...
источник

T

Tagir in Compiler Development
> If the field is final, it must be declared in the current class, and the instruction must occur in an instance initialization method (<init>) of the current class (§2.9).
источник

T

Tagir in Compiler Development
Да, не напутал. В конструкторе обязательно, а там сколько хочешь раз - виртуальная машина не будет контрол флоу анализировать
источник

VK

Val Krylov in Compiler Development
Алексей
я говорил про while switch case
Не обязательно switch/case. Можно использовать break и continue с метками. Аналогичная возможность есть в JavaScript, этим в emscripten пользовались.
источник

М

Махи in Compiler Development
Val Krylov
Не обязательно switch/case. Можно использовать break и continue с метками. Аналогичная возможность есть в JavaScript, этим в emscripten пользовались.
метки не помогут) если правда вершины не копировать
источник

T

Tagir in Compiler Development
Теоретически можно вводить дополнительную переменную и бранчиться по ней. Так можно обойтись без копирования
источник

PS

Peter Sovietov in Compiler Development
Махи
ладно. я поняла. спасибо (: а где-нибудь про это с какими-то конкретными примерами написаны, вы не знаете?
Можно посмотреть работы от Cristina Cifuentes https://scholar.google.com/citations?user=iseZ69MAAAAJ&hl=ru&oi=sra Она уже давно занимается этими вопросами.
источник