firemail
标题:
asm.js
[打印本页]
作者:
hechengjin
时间:
2015-8-3 10:04
标题:
asm.js
asm.js项目地址:
https://github.com/dherman/asm.js
asm.js是一个
JavaScript
的一个严格的子集,可以被用来作为一个底层的、高效的编译器目标语言。asm.js提供了一个类似于
C
/
C++
虚拟机的抽象实现,包括一个可有效负载和存储的大型二进制堆、整型和浮点运算、
高阶函数
定义、
函数指针
等。
asm.js是JavaScript的一个子集,也就是说,你可以将基于asm.js的程序放在一个标准的未修改的浏览器或JavaScript引擎中运行。但是,
如果要想获得更高的效率,就需要使用一个优化的JavaScript引擎来运行。这是Mozilla接下来要考虑的事情。
Mozilla目前正在开发OdinMonkey,这是一个JavaScript引擎,该引擎在处理asm.js程序时,可以自动进行优化。
Mozilla还展示了一项基准测试数据,结果显示,Firefox+asm.js的执行速度仅次于本地应用。
另外,IE和Chrome都将支持asm.js。
[1]
在Microsoft Edge中,用户可以在about:flags中找到启用asm.js的选项
asm.js
是由Mozilla提出的一个基于JS的语法标准,主要是为了解决JS引擎的执行效率问题,尤其是使用
Emscripten
从C/C++语言编译成JS的程序的效率,目前只有Mozilla的
Firefox Nightly
中支持。
Emscripten
Emscripten是Mozilla的一个实验性项目,目的是把C/C++开发的应用编译成JS或HTML5的应用,编译过程中需要首先把C/C++程序编译成LLVM的中间代码,然后再转换成JS代码,这样做的主要原因是可以很好地复用现有的针对LLVM的优化。
C/C++是一种强类型的语言,这很好地对应了不同字长的CPU指令,每一种数据类型都有固定的上下限,一旦计算超出这个上下限就会产生溢出,比如char类型的取值范围是[-128,127],而(char)(127 + 1)这个计算就会溢出,得到(char)-128。
JS语言不仅是弱类型的,而且数值类型只有一种-Number,Number类型的数据采用双精度64位格式的
IEEE 754
值表示。如果用JS模拟C/C++类型的数值计算,就要模拟各种类型数据计算时的溢出效果。
作者:
wmztvl
时间:
2016-5-8 09:56
楼主高人啊,我先收藏了
16楼影院
www.9edy.com/16lou.html
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3