当前位置: 软件>JavaScript软件
asm.js
本文导语: asm.js 是一个底层、格外为 JavaScript 子集优化的编译器。这是 Mozilla 研究项目,类似 Emscripten, Mandreel, 和 LLJS. 示例代码: function mymodule(global, foreign, buffer) { "use asm"; // -----------------------------------------------------------------------...
asm.js 是一个底层、格外为 JavaScript 子集优化的编译器。这是 Mozilla 研究项目,类似 Emscripten, Mandreel, 和 LLJS.
示例代码:
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 }; }
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。