复制代码代码如下:
function mymodule(global, asing, buffer) {
"gunakan asm";
// ------------------------------------------------ -------------------------
// BAGIAN 1: impor
var H32 = global baru.Int32Array(buffer);
var HU32 = global baru.Uint32Array(buffer);
var log = asing.consoleDotLog;
// ------------------------------------------------ -------------------------
// BAGIAN 2: fungsi
fungsi f(x, y, z, w) {
// BAGIAN A: deklarasi tipe parameter
x = x|0; // parameter ke dalam
kamu = +kamu; // parameter ganda
// BAGIAN B: isi fungsi
catatan(x|0); // memanggil FFI -- harus memaksakan tandanya
catatan(kamu); // panggil ke FFI -- sudah tahu itu ganda
x = (x+3)|0; // menandatangani tambahan
// BAGIAN C: pengembalian tanpa syarat
kembali ((((x+1)|0)>>>0)/(x|0))>>>0; // ekspresi gabungan
}
fungsi g() {
g_f = +g_i; // membaca/menulis global
kembali;
}
fungsi g2() {
kembali;
}
fungsi h(i, x) {
saya = saya|0;
x = x|0;
H32[(i&0xffffffff)>>4] = x; // ditutupi oleh 2^k-1, digeser berdasarkan jumlah byte
ftable_2[(x-2)&2](); // pemanggilan fungsi dinamis pada tabel 2
}
// ------------------------------------------------ -------------------------
// BAGIAN 3: tabel fungsi
var ftable_1 = [f];
var ftable_2 = [g, g2]; // semua bertipe sama
// ------------------------------------------------ -------------------------
// BAGIAN 4: global
var g_i = 0; // ke global
var g_f = 0,0; // gandakan global
// ------------------------------------------------ -------------------------
// BAGIAN 5: ekspor
kembali { f_ekspor: f, goop: g };
}