私は、フラッシュ SWF ファイルを C/C++ ソース ファイルにクロス コンパイルする研究を行ってきました。SWF ファイルをプレーン テキスト ファイル形式に逆コンパイルするためのツールはたくさんあります。Free SWF Decompilerは、これに関する多くのオープンソース ソリューションを提供します。
SWF を C/C++ ソース ファイルに逆コンパイルするために、次の解決策を試しました。
1) Haxe : Haxe コンパイラは、Haxe プログラミング言語をターゲット プラットフォームのネイティブ ソース コードまたはバイナリに変換します。
これを行うには、私はする必要があります
a) SWF をアクションスクリプトファイルに逆コンパイルする
b) アクションスクリプトを Haxe 言語スクリプトに変換する
c) C++ ソース ファイルへのコンパイラ haxe
d) Keil MDK-ARM を使用したリコンパイラ C++ ソース ファイル
欠点: 出力された C++ ファイルは巨大であり、Keil MDK-ARM で再コンパイルするのが困難な C ソース形式の多くの Flex SDK のようなリソースが含まれています。そして、Keil のコンパイル可能なバイナリ コードを取得するのは非常に効率の悪い仕事のようです。
最近、Adobe Flash C++ コンパイラ、つまり FlasCC (Adobe Flash ランタイムをターゲットにすることができる GCC ベースのクロスコンパイラを備えた完全な BSD ライクな C/C++ 開発環境) によってこれを行うための別の解決策を見つけました。
しかし、それが期待どおりに機能するかどうかはわかりません。
FlasCC は c/c++ コードを ActionScript バイトコード (ABC) および LLVM バイトコードにコンパイルできるためです。私の考えは
a) SWF ActionScript バイトコード (ABC) を解析する
b) FlahCC で ActionScript バイトコード (ABC) を読み取ります (これができるかどうかわかりませんか?)
c) FlasCC の同等の ActionScript バイトコード (ABC) によって、その LLVM バイトコードを出力します (これができるかどうかわかりませんか?)
d) LLC による LLVM バイトコードの C++ コードへの変換
このように、ActionScript バイトコードは LLVM LTO(Link Time Optimized) Build を通じて最適化できます。
私は llvm の専門家ではないので、これについてアドバイスが必要です。
これは実行可能ですか?または、これを行う他の方法はありますか?