我最近开始使用ActionScript 3 / Flash 9,来自“真正的”编程背景,我对它到底最终会出现什么样的机器代码感到有点好奇。我想知道编译器在将SWF与优化标志放在一起时所做的优化(如循环展开,const值解析为立即等),以及解释器将生成什么样的机器代码(将矩阵乘法使用有能力的处理器上的SSE指令,它使用的FPU模式,自动对齐的数据结构等。
是否有人有关于此文档的任何链接?谷歌只是不断向我发送第三方产品。
答案 0 :(得分:2)
我最近检查过flash编译器。太奇妙了! 这是简单的类代码:
var A : Number = 0.0;
A = A*2*4;
这里是反汇编的代码:
5 pushdouble 0
7 convert_d
8 setlocal1
9 getlocal1
10 pushbyte 2
12 multiply
13 pushbyte 4
15 multiply
16 convert_d
17 setlocal1
哇!在21世纪,我们有1980年级的编译器。
答案 1 :(得分:1)
我会开始查看Nicolas Cannasse的blog和work( MTASC AS2编译器和Haxe背后的人...)以及所有相关内容
另外 - 但有点肤浅 - 最近在Peter Elst博客上有一个非常有趣的广播:
http://www.peterelst.com/blog/2009/03/10/flash-player-internals/
答案 2 :(得分:1)
自AS3以来,there is new virtual machine which uses JIT。
另外,我不是许可证专家,但如果我没记错的话,Flex SDK compiler也是开源的。
答案 3 :(得分:-2)
我可能错了,但我的印象是没有编译Actionscript,而是像php一样解释它。唯一的区别是Actionscript与其他资产一起封装成.swf。我在玩一些反编译器时已经看到你可以将代码视为某种字节代码,但我不会以任何方式将它与机器代码进行比较..
如果您正在寻求性能提升,我建议您查看Alchemy。我从来没有使用它,但是这个实验性的Adobe产品应该允许你将C / C ++代码移植到Flash Player上,而且性能损失最小。