Actionscript3 для LLVM для?(Обратная алхимия) - PullRequest
2 голосов
/ 03 августа 2011

Мне было интересно, возможно ли изменить бэкэнд реализации LLVM с ARM на что-то другое, например C или C ++?В настоящее время Adobe использует внешний интерфейс Actionscript3 (который в настоящее время я не могу найти - закрытый источник?) Для LLVM для создания приложений iOS.Мне интересно, почему нет других вариантов для других бэкэндов?Конечно, есть ограничения на этот путь, нет загрузки внешних SWF-файлов во время выполнения (чтобы назвать только одно), но приложения для iOS, кажется, действительно хорошо справляются с этим умением.

Я нашел это pdf , в котором говорится о внешнем интерфейсе AS3 LLVM, но нет указаний на то, где находится код или как его исследовать ...

Я просто думаю, что это упущенная возможность, что Adobe отсутствует и интересуется, сколько работыбыло бы совершить такой подвиг?

Обратите внимание: я знаю, что Haxe может очень хорошо выводить на C ++ в данный момент; -)

[Редактировать: обновил заметку Haxe]

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Мне нравится, как вы думаете, я однажды рискнул пойти по этому пути и действительно усердно изучал, как добиться того же. Посмотрите этот ответ для более подробной информации о том, как работает цепочка алхимических инструментов (специфично для iOS):

Adobe Air ios packager

По сути, вы правы, Adobe использует внутреннюю версию компилятора actionscript, которая не является открытым исходным кодом. Однако, если вы хотите жить опасно (смеется), вы всегда можете скачать старый упаковщик для iphone или новый AIR 2.7 SDK и извлечь их версию ASC из ADT.jar. Вы заметите, что существует масса новых классов, связанных с LLVM, которые взаимодействуют с dll LLVM, который теперь включен в SDK (и старый PFI). Это внешний интерфейс, эти Java-классы LLVM пересекают байт-код во время компиляции и передают их библиотеке LLVM, которая, в свою очередь, экспортируется в ARM. Теперь вы МОЖЕТЕ иметь возможность скомпилировать свою собственную библиотеку LLVM и заменить существующую, и просто установить цель вывода в ВАШЕЙ LLVM lib на то, что в настоящее время поддерживается LLVM (я полагаю, что есть C / CPP-сервер). Это МОЖЕТ быть возможным, потому что, как я уже сказал, из того, что я понимаю, скомпилированная библиотека LLVM не имеет встроенного внешнего интерфейса, внешний интерфейс написан на Java и в основном преобразует байт-код AVM в IR LLVM, а затем передает этот IR в LLVM lib. Если вам удастся сделать это, пожалуйста, найдите здесь и дайте мне знать, потому что я был бы действительно заинтересован в этом. У меня просто нет времени заниматься этим самим.

1 голос
/ 31 марта 2015

Этот поток (AS3 / SWF -> другие цели) - увлекательная тема, о которой я хотел бы узнать больше.По сути, вопрос в том, как получить Flash-контент вне Flash Player?В идеале, с поддержкой Stage3D.

Одной из очевидных целей является JavaScript + webgl (иначе, технологии HTML5).

Вот несколько ресурсов, о которых я знаю:

Я считаю,Emscripten / asm.js был представлен с момента вашего обсуждения выше.Это компилятор LLVM to JavaScript, в первую очередь для переноса C / C ++ в JavaScript ( см. Слайд ).Список приложений, портированных на JS через emscripten, впечатляет - от ScummVM до Doom до Linux !Как вы упоминаете, компилятор AIR (adt.jar) генерирует LLVM в один момент - возможно, приложения AIR могут быть перенесены на JS через LLVM / emscripten.

Ренаун Эриксон опубликовал опотрясающий пример, портированный на JavaSciprt и webgl с использованием (к сожалению, теперь несуществующего) Randori Framework.Но все репозитории git все еще на месте, и его демо плавно работает в Chrome (но не на iPad с iOS 8.1, поддержка webgl, хм.)

Вышеупомянутый Jangaroo интересен, хотя 1) кажется ограниченным по производительности, 2) реализует подмножество AS3 , и 3), похоже, не упоминает Stage3D (ускорение GPU).

OpenFL стоит упомянуть, поскольку он поддерживает гораздо больше целей, чем AIR, включая C / C ++ и HTML5 / webgl, хотя для этого потребуется перевод исходного кода с AS3 на Haxe (которые связаны между собой, но достаточно различаются, чтобы сделатьперевод раздражает. Вот пример скворец в HTML5 через OpenFL (и связанный поток ).

Это скорее вики / обсуждение, чем ответ, ноЯ надеюсь, что наша коллекция информации превратится в хороший рабочий процесс и отвечу на этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...