Actionscript 3 — Как скомпилировать Flash SWF файл (ы) в Keil Compilable C / C ++ файл (ы)

Я занимался кросс-компиляцией SWF-файлов в исходные файлы C / C ++
Существует множество инструментов для декомпиляции SWF-файлов в текстовые форматы.
Бесплатный SWF-декомпилятор предоставляет множество решений с открытым исходным кодом по этому вопросу.

Чтобы декомпилировать SWF в исходные файлы C / C ++,
Я пробовал следующие решения

1) Haxe: Компилятор Haxe отвечает за перевод языка программирования Haxe в исходный код или двоичный код целевой платформы

Для этого мне нужно

а) декомпилировать SWF в файлы ActionScript

б) Конвертировать скрипты действий в скрипт языка Haxe.

в) хакерский компилятор в исходный файл C ++

d) Перекомпилируйте исходные файлы C ++ с помощью Keil MDK-ARM

Недостаток: выходной файл C ++ огромен & содержит много ресурсов, подобных Flex SDK, в формате исходного кода C, который трудно перекомпилировать в Keil MDK-ARM. И это кажется довольно неэффективной работой, чтобы получить скомпилированный двоичный код Keil.

Недавно я нашел другое возможное решение для этого с помощью Adobe Flash C ++ Compiler, то есть FlasCC (
Полная BSD-подобная среда разработки C / C ++ с кросс-компилятором на основе GCC, способная нацеливаться на среду выполнения Adobe Flash)

Но я не уверен, что это сработает так, как я ожидал.

Поскольку FlasCC может компилировать код c / c ++ в байт-код ActionScript (ABC), а также байт-код LLVM.
Моя мысль

а) Анализировать байт-код SWF ActionScript (ABC)

б) Прочитать байт-код ActionScript (ABC) во FlahCC (не уверен, можно ли это сделать?)

c) С помощью эквивалентного байт-кода ActionScript (ABC) в FlasCC выведите его байт-код LLVM (не уверен, можно ли это сделать?)

d) Преобразовать байт-код LLVM в код C ++ с помощью LLC

Таким образом, байт-код ActionScript может быть оптимизирован с помощью LLVM LTO (Link Time Optimized).

Так как я не являюсь экспертом, мне нужно дать совет по этому вопросу.

Это работоспособно? Или есть другой способ сделать это?

0

Решение

Вообщем нет. Автоматическая компиляция flash в двоичную систему будет довольно сложной и неэффективной задачей.

Я удивлен, что первый подход, который вы использовали, действительно сработал, я ожидал, что полученный код будет случайным образом давать сбой. В любом случае, не существует единственного шанса, что as3-> haxe-компиляция может быть эффективной в отношении производительности кода.

Что касается второго подхода, компиляторы являются односторонними, вы не можете использовать FlasCC для декомпиляции байт-кода ABC или для компиляции as3, его можно использовать только для компиляции c / c ++ в ABC.

Компиляция ABC в LLVM, а затем в двоичный файл кажется гораздо более выполнимой и выполнимой, но потребует довольно больших усилий, и снова я сомневаюсь, что результат будет быстрым. И я почти уверен, что это будет намного медленнее, чем просто запуск SWF во флеш-плеере на целевой платформе. (Тем не менее, учитывая то, что вы уже сделали, я предполагаю, что вы сможете сделать прототип за 2 или 3 месяца тяжелой работы, так что это может стоить того.)

0

Другие решения

Мне кажется, теперь гораздо яснее разложить всю работу.

Задача состоит в том, чтобы разложить SWF-файлы на скомпилированные в Keil исходные файлы C / C ++.

Я нашел решение с открытым исходным кодом, предназначенное для преобразования

  1. ABC to TESSA (Тип обогащенного SSA) Тамарин на LLVM
  2. Тесса в LLVM IR
  3. LLVM IR to C (По ООО)

Я дам ему попробовать!

0

По вопросам рекламы [email protected]