Asm.js对编译器的限制

asm.js limits on the compiler

本文关键字:编译器 js Asm      更新时间:2023-09-26

我想知道asm.js规范中是否有任何"设计限制",可以阻止任何编译器直接从中生成本机汇编代码。

现在火狐似乎能达到原生代码一半的速度,但我想知道为什么它不能以原生速度运行。在我看来,asm.js很像asm.

当前限制使用Typed Array类型的Javascript作为内存(即stackheap)。这是由于其他脚本与您的asm.js生成的Javascript交互,并且需要共享的"内存"空间。此外,我猜Typed Array是作为实际的堆内存实现的,这将比使用堆栈慢。

因为Firefox的编译器没有像C编译器那样对asm.js代码进行那么多的优化。在Windows上,也是因为编译后的代码必须为数组访问执行边界检查(在其他操作系统上,Firefox的asm.js编译器OdinMonkey使用内存保护)。