复制代码代码如下:
функция mymodule(глобальный, внешний, буфер) {
"использовать ассемблер";
// ---------------------------------------------------------------- -------------------------
// РАЗДЕЛ 1: импорт
вар H32 = новый global.Int32Array(буфер);
вар HU32 = новый global.Uint32Array(буфер);
вар журнал = Foreign.consoleDotLog;
// ---------------------------------------------------------------- -------------------------
// РАЗДЕЛ 2: функции
функция f(x, y, z, w) {
// РАЗДЕЛ A: объявления типов параметров
х = х|0; //целочисленный параметр
у = +у; // двойной параметр
// РАЗДЕЛ B: тело функции
журнал (х | 0); // вызов FFI -- должен принудительно поставить знак
журнал (у); // вызываем FFI - уже знаем, что это двойной номер
х = (х+3)|0; // подписанное дополнение
// РАЗДЕЛ C: безусловный возврат
return ((((x+1)|0)>>>0)/(x|0))>>>0; // составное выражение
}
функция г() {
g_f = +g_i; // чтение/запись глобальных переменных
возвращаться;
}
функция g2() {
возвращаться;
}
функция h(i, x) {
я = я|0;
х = х|0;
H32[(i&0xffffffff)>>4] = x; // замаскировано 2^k-1, сдвинуто на количество байтов
ftable_2[(x-2)&2](); // динамический вызов функций из таблицы 2
}
// ---------------------------------------------------------------- -------------------------
// РАЗДЕЛ 3: таблицы функций
вар ftable_1 = [ф];
вар ftable_2 = [г, г2]; // все одного типа
// ---------------------------------------------------------------- -------------------------
// РАЗДЕЛ 4: глобальные переменные
вар г_и = 0; // целое глобальное
вар g_f = 0,0; // двойной глобальный
// ---------------------------------------------------------------- -------------------------
// РАЗДЕЛ 5: экспорт
return {f_export: f, goop: g};
}