Size: a a a

Compiler Development

2020 July 04

M

MaxGraey in Compiler Development
Нет, это байткод для шейдерных программ похоже
источник

К

Константин in Compiler Development
Не, это AGAL, это шейдера.
Это херь в 200 строк:)
Во, вот это. https://www.adobe.com/content/dam/acom/en/devnet/pdf/avm2overview.pdf
источник

EG

E G in Compiler Development
Это стековый байткод. А джит транслировал в жс сохранив работу в со стеком в сгенеренном коде?
источник

К

Константин in Compiler Development
E G
Это стековый байткод. А джит транслировал в жс сохранив работу в со стеком в сгенеренном коде?
Он гибридный.
там и регистры и стек.
Да, стек просто развернут в локальные переменные, так же как регистры.

те push это:

stack1 = method()

pop
его нет:)
источник

M

MaxGraey in Compiler Development
А что если сделать иначе? Портировать jpexs-decompiler (https://github.com/jindrapetrik/jpexs-decompiler) на js. Он умеет превращать байткод в AS3, который в свою очередь очень похож на js уже так как они все из одного семейства.

Это будет намного лучше, так как будет на уровень выше. А так у тебя получается JIT компиляция в jit-компилируемом рантайме)
источник

К

Константин in Compiler Development
MaxGraey
А что если сделать иначе? Портировать jpexs-decompiler (https://github.com/jindrapetrik/jpexs-decompiler) на js. Он умеет превращать байткод в AS3, который в свою очередь очень похож на js уже так как они все из одного семейства.

Это будет намного лучше, так как будет на уровень выше. А так у тебя получается JIT компиляция в jit-компилируемом рантайме)
Да, если бы не HAXE
источник

M

MaxGraey in Compiler Development
А при чем здесь haxe?
источник

К

Константин in Compiler Development
потому что он генерть байт-код, которые не реверсится.
источник

К

Константин in Compiler Development
Да и перф JPEX никакой, он 1000 методов декомпилит минут 5.
У нас всего секунд 10 на всё.
источник

M

MaxGraey in Compiler Development
Я думаю, те кто компилируют из haxe не нуждаются в вашей библиотеке, так как haxe прекрастно транслируется во много целевых платформ, в том числе и в web
источник

К

Константин in Compiler Development
:) скажи арморам
источник

К

Константин in Compiler Development
ага.
Они уже там панику подняли, что медленно проходит процесс.
Имеется ввиду любой компилятор не из flex или даже просто любая тупая обусфикация - и JPEX делает это минут 40
источник

M

MaxGraey in Compiler Development
тогда у меня один совет - прекращайте уже пинать мертвую лошадь
источник

К

Константин in Compiler Development
MaxGraey
тогда у меня один совет - прекращайте уже пинать мертвую лошадь
Ну 4 года же кто-то платит:)
Значит кому-то надо

Ща это стало масштабнее
источник

M

MaxGraey in Compiler Development
И за 4 года у вас только PoC?
источник

К

Константин in Compiler Development
MaxGraey
И за 4 года у вас только PoC?
Нет, просто никто не пытался запихать флешку в 60мб в него.
Были довольны простые.

Оно нормально работает, ток медленно.
AVM1 (который as2) оч шустро крутиться.
Почти соизмеримо с оригиналом

Плюс раньше были хотя бы сорцы, можно было тупо пихать транспил as2 -> TS под окружение без avm
источник

EG

E G in Compiler Development
Константин
https://github.com/codehag/TwitchMonkey/blob/master/engine.js
У нас он такой и есть, только он не инкрементальный. Он фолбекается на интрепретер, если не смог скомпилировать.

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

Конечно можно еще добавить инструкции,  будет 2 компилятора - транспиллер байткода, оптимизатор, и уже JIT  сам, из нашего оптимизнутого байткода.
Все бы хорошо, ток это зае* тестить.
Я не нашел никакого IR, как собственно и оптимизаций. Вижу только наивную трансляцию одного в другое. Итого в коде должно получаться куча ифов, которые джит браузера (да впрочем и любой компилятор) не прожует. Я где нить ошибся?
источник

К

Константин in Compiler Development
E G
Я не нашел никакого IR, как собственно и оптимизаций. Вижу только наивную трансляцию одного в другое. Итого в коде должно получаться куча ифов, которые джит браузера (да впрочем и любой компилятор) не прожует. Я где нить ошибся?
Я для этого тут и есть, был бы он - нафиг мне чат?
источник

EG

E G in Compiler Development
Книжку почитать?) или тебе статей накидать?
источник

К

Константин in Compiler Development
Второе лучше.
Считай к понедельнику нада:)
источник