1

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

目前,firefox 的速度似乎是本机代码的一半,但我想知道为什么它不能以本机速度运行。如我所见,asm.js 与 asm 非常相似。

4

2 回答 2

2

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

于 2013-04-13T15:25:11.883 回答
1

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

于 2013-04-15T17:05:08.980 回答