我想知道 asm.js 规范中是否有任何“设计限制”会阻止任何编译器直接从中生成本机汇编代码。
目前,firefox 的速度似乎是本机代码的一半,但我想知道为什么它不能以本机速度运行。如我所见,asm.js 与 asm 非常相似。
我想知道 asm.js 规范中是否有任何“设计限制”会阻止任何编译器直接从中生成本机汇编代码。
目前,firefox 的速度似乎是本机代码的一半,但我想知道为什么它不能以本机速度运行。如我所见,asm.js 与 asm 非常相似。
目前的限制是使用Typed Array
Javascript 的类型作为内存(即堆栈和堆)。这是由于其他脚本与您的 asm.js 生成的 Javascript 交互,并且需要共享的“内存”空间。此外,我猜Typed Array
s 是作为实际堆内存实现的,这将比使用堆栈慢。
因为 Firefox 的编译器没有像 C 编译器那样做很多有利于 asm.js 代码的优化。在 Windows 上,也是因为编译后的代码必须对数组访问执行边界检查(在其他操作系统上,Firefox 的 asm.js 编译器 OdinMonkey 使用内存保护)。