复制代码代码如下:
Funktion mymodule(global, Foreign, buffer) {
„asm verwenden“;
// ------------------------------------------------ -------------------------
// ABSCHNITT 1: Importe
var H32 = new global.Int32Array(buffer);
var HU32 = new global.Uint32Array(buffer);
var log = Foreign.consoleDotLog;
// ------------------------------------------------ -------------------------
// ABSCHNITT 2: Funktionen
Funktion f(x, y, z, w) {
// ABSCHNITT A: Parametertypdeklarationen
x = x|0; // int-Parameter
y = +y; // Doppelter Parameter
// ABSCHNITT B: Funktionskörper
log(x|0); // Aufruf an FFI – muss das Zeichen erzwingen
log(y); // Call in FFI – ich weiß bereits, dass es ein Double ist
x = (x+3)|0; // signierter Zusatz
// ABSCHNITT C: bedingungslose Rückgabe
return ((((x+1)|0)>>>0)/(x|0))>>>0; // zusammengesetzter Ausdruck
}
Funktion g() {
g_f = +g_i; // Globale lesen/schreiben
zurückkehren;
}
Funktion g2() {
zurückkehren;
}
Funktion h(i, x) {
i = i|0;
x = x|0;
H32[(i&0xffffffff)>>4] = x; // maskiert um 2^k-1, verschoben um Byteanzahl
ftable_2[(x-2)&2](); // dynamischer Aufruf von Funktionen in Tabelle 2
}
// ------------------------------------------------ -------------------------
// ABSCHNITT 3: Funktionstabellen
var ftable_1 = [f];
var ftable_2 = [g, g2]; // alle vom gleichen Typ
// ------------------------------------------------ -------------------------
// ABSCHNITT 4: Globals
var g_i = 0; // int global
var g_f = 0,0; // doppelt global
// ------------------------------------------------ -------------------------
// ABSCHNITT 5: Exporte
return { f_export: f, goop: g };
}