asm.js

未知
JavaScript
跨平台
2013-02-19
红薯

asm.js 是一个底层、格外为 JavaScript 子集优化的编译器。这是 Mozilla 研究项目,类似 Emscripten, Mandreel, 和 LLJS.

faux logo

示例代码:

function mymodule(global, foreign, buffer) {
    "use asm";

    // -------------------------------------------------------------------------
    // SECTION 1: imports

    var H32 = new global.Int32Array(buffer);
    var HU32 = new global.Uint32Array(buffer);
    var log = foreign.consoleDotLog;

    // -------------------------------------------------------------------------
    // SECTION 2: functions

    function f(x, y, z, w) {
        // SECTION A: parameter type declarations
        x = x|0;      // int parameter
        y = +y;       // double parameter

        // SECTION B: function body
        log(x|0);     // call into FFI -- must force the sign
        log(y);       // call into FFI -- already know it's a double
        x = (x+3)|0;  // signed addition

        // SECTION C: unconditional return
        return ((((x+1)|0)>>>0)/(x|0))>>>0; // compound expression
    }

    function g() {
        g_f = +g_i; // read/write globals
        return;
    }

    function g2() {
        return;
    }

    function h(i, x) {
        i = i|0;
        x = x|0;
        H32[(i&0xffffffff)>>4] = x; // masked by 2^k-1, shifted by byte count
        ftable_2[(x-2)&2]();        // dynamic call of functions in table 2
    }

    // -------------------------------------------------------------------------
    // SECTION 3: function tables

    var ftable_1 = [f];
    var ftable_2 = [g, g2]; // all of the same type

    // -------------------------------------------------------------------------
    // SECTION 4: globals

    var g_i = 0;   // int global
    var g_f = 0.0; // double global

    // -------------------------------------------------------------------------
    // SECTION 5: exports

    return { f_export: f, goop: g };
}

 

加载中

评论(0)

zhenruyan
zhenruyan
这个世界变化快的让人觉得就像在做梦#asm.js#

从 ASM.JS 到 WebAssembly

JS 成为 Web 的 WebAssembly,这已经是老生常谈的话题。不过,JS 是一种很便携的语法,并且是很安全的机器语言。今天,我很高兴地宣布,在 WebAssembly 上可以进行跨浏览器的工作。 WebAssem...

2015/06/19 08:01

微软的 JavaScript 引擎将很快支持 Asm.js

几年前 Mozilla 开发了 asm.js ,这是一个 JavaScript 的子集,可以让 JavaScript 代码执行更快速。知道今天 asm.js 的所有优化都是针对 Firefox 浏览器的,不过很快该技术也将得到微软最新的...

2015/02/19 07:45

Asm.js 性能逼近原生码

Asm.js是JavaScript的高性能子集,简化特性便于优化。Mozilla现在宣布,asm.js性能进一步逼近原生,asm.js的速度已达到原生码的三分之二, 而以前只能达到二分之一甚至更低。Mozilla是通过改...

2013/12/24 07:41

第一个基于 asm.js 的 3D 商业 Web 游戏发布

今年早些时候,Mozilla和Epic Games利用asm.js、Emscripten和WebGL,在浏览器上演示了虚幻引擎3的一个DEMO,展示了Web成为一个3D游戏平台的潜力。这一演示吸引了游戏工作室NomNom Games的注意...

2013/12/13 17:07

Chrome 和 Opera 为 asm.js 优化

Mozilla宣布,除Firefox外,另外两大浏览器Chrome和Opera正为asm.js优化。asm.js是 Mozilla开发的JavaScript子集,避开了JavaScript中大量难以优化的动态功能,特性更少但更容易优化,能实现...

2013/11/27 14:29

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

2016年度 JavaScript 展望(上)

本文将会介绍,除了用 JavaScript 框架运行服务器端 JavaScript、创建移动 apps 以及桌面应用之外,未来将何去何从?文中将直接引述许多 JavaScript 解决方案的开发者之观点。让我们首先了解...

2016/04/20 16:27
52
3
WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich

为什么我们需要WebAssembly—采访JavaScript之父Brendan Eich。

2015/08/06 12:46
964
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部