首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Flash SWF文件交叉编译成Keil可编译的C/C++文件

如何将Flash SWF文件交叉编译成Keil可编译的C/C++文件
EN

Stack Overflow用户
提问于 2014-07-16 18:04:20
回答 2查看 896关注 0票数 0

我一直在研究如何将flash SWF文件交叉编译成C/C++源文件,有很多工具可以将SWF文件反编译成纯文本文件格式。Free SWF Decompiler在这方面提供了大量的开源解决方案。

为了将SWF反编译成C/C++源文件,我尝试了以下解决方案

1) Haxe:Haxe编译器负责将Haxe编程语言翻译成目标平台本机源代码或二进制代码

为此,我需要

a)将SWF反编译成actionscripts文件

b)将actionscript转换为Haxe语言脚本

c)将haxe编译成C++源文件

d)使用Keil MDK-ARM重新编译C++源文件

缺点:输出的C++文件很大,包含许多类似Flex SDK的C源代码格式的资源,很难在Keil MDK-ARM中重新编译。而且,获取Keil可编译的二进制代码似乎是一项非常低效的工作。

最近,我发现了Adobe Flash Runtime编译器的另一个可能的解决方案,即FlasCC (一个完整的类似C++的C/C++开发环境,带有一个基于GCC的交叉编译器,能够针对Adobe Flash Runtime)。

但我不确定它是否会像我预期的那样工作。

因为FlasCC可以将c/c++代码编译成ActionScript字节码和LLVM字节码。我的想法是

a)解析SWF ActionScript字节码(ABC)

b)在FlahCC中读取ActionScript字节码(ABC) (不确定是否可以做到?)

c)通过FlasCC中等效的ActionScript字节码(ABC),输出它的LLVM字节码(不确定这是否可以做到?)

d)通过有限责任公司将LLVM字节码转换为C++代码

通过这种方式,ActionScript字节码可以通过LLVM LTO(链接时间优化)构建进行优化

由于我不是llvm专家,我需要一些建议。

这可行吗?或者,有没有其他方法可以做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2014-07-19 02:05:58

一般来说,不是。自动编译闪存到二进制将是相当复杂的事情,也是无效的。

我很惊讶你使用的第一种方法实际上是有效的,我预计结果代码会随机地在这里和那里失败。无论如何,3->haxe编译在最终代码性能方面是有效的,这是不可能的。

至于第二种方法,编译器是单向的,你不能使用FlasCC来反编译ABC字节码,也不能编译as3,它只能用来将c/c++编译成ABC。

将ABC编译成LLVM,然后编译成二进制似乎更可行,但需要相当多的努力,我再次怀疑结果是否会很快。我几乎可以肯定,它会比在目标平台上的flash播放器中运行的swf慢得多。(然而,考虑到你已经完成的事情,我估计你将能够在2到3个月的艰苦工作中做出一个原型,所以它可能值得一试。)

票数 0
EN

Stack Overflow用户

发布于 2014-07-22 11:47:32

对我来说,现在分解整个工作似乎要清楚得多。

任务是,将SWF文件分解成Keil可编译的C/C++源文件。

我发现了一个开源的解决方案,它的设计目的是将

  1. ABC to TESSA (增强型SSA型) Tamarin on LLVM
  2. TESSA to LLVM IR
  3. LLVM IR to C (由有限责任公司提供)

我会试一试!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24777947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档