复制代码代码如下 :
function monmodule (global, étranger, tampon) {
"utiliser asm" ;
// ------------------------------------------------ -------------------------
// SECTION 1 : importations
var H32 = nouveau global.Int32Array(buffer);
var HU32 = nouveau global.Uint32Array(buffer);
var log = étranger.consoleDotLog;
// ------------------------------------------------ -------------------------
// SECTION 2 : fonctions
fonction f(x, y, z, w) {
// SECTION A : déclarations de types de paramètres
x = x|0 ; // paramètre entier
y = +y; // double paramètre
// SECTION B : corps de la fonction
journal(x|0); // appelle FFI -- doit forcer le signe
journal(y); // appelle FFI -- je sais déjà que c'est un double
x = (x+3)|0; // ajout signé
// SECTION C : retour inconditionnel
return ((((x+1)|0)>>>0)/(x|0))>>>0; // expression composée
}
fonction g() {
g_f = +g_i; // lecture/écriture des globales
retour;
}
fonction g2() {
retour;
}
fonction h(i, x) {
je = je|0;
x = x|0 ;
H32[(i&0xffffffff)>>4] = x; // masqué par 2^k-1, décalé du nombre d'octets
ftable_2[(x-2)&2](); // appel dynamique des fonctions du tableau 2
}
// ------------------------------------------------ -------------------------
// SECTION 3 : tables de fonctions
var ftable_1 = [f];
var ftable_2 = [g, g2]; // tous du même type
// ------------------------------------------------ -------------------------
// SECTION 4 : globales
var g_i = 0; // entier global
var g_f = 0,0 ; // double global
// ------------------------------------------------ -------------------------
// SECTION 5 : exportations
return { f_export : f, goop : g } ;
}