emscripten和asm.js是什么关系

JavaScript029

emscripten和asm.js是什么关系,第1张

看过emscripten编译出来的代码以后,你会发现这就是一个基于精简指令集生成代码的汇编生成器,而生成的汇编指令是基于asm.js的。原理其实也很简单可以理解为gcc生成汇编语言,emscripten在做codegen的时候直接生成相应的asm.js

通过图可以直观的看到区别。asm.js是优化过的JS,它比一般的JS快,但是本质上依然是JS。而WebAssembly是JS的binary格式,比JS文件小很多。它跳过了JS的优化解析过程,可以直接执行,速度自然会快很多。不过WebAssembly的兼容性比asm.js差。目前最新的主流浏览器都已经可以执行WebAssembly。