// ------------------------------------------- ----------------------------
// セクション 1: インポート
var H32 = 新しい global.Int32Array(buffer);
var HU32 = new global.Uint32Array(buffer);
var log = external.consoleDotLog;
// ------------------------------------------- ----------------------------
// セクション 2: 関数
function f(x, y, z, w) {
// セクション A: パラメーターの型宣言
x = x|0; // int パラメータ
y = y; // ダブルパラメータ
// セクション B: 関数本体
log(x|0); // FFI を呼び出します -- 符号を強制する必要があります
log(y); // FFI を呼び出します -- これが double であることはすでにわかっています
x = (x 3)|0; // 署名付き追加
// セクション C: 無条件リターン
return ((((x 1)|0)>gt;>>>0)/(x|0))>gt;>>>0; // 複合式
}
function g() {
g_f = g_i; // 読み取り/書き込みグローバル
return;
}
function g2() {
return;
}
function h(i, x) {
i = i|0;
x = x|0;
H32[(i&0xffffffff)>gt;>4] = x; // 2^k-1 でマスクされ、バイト数でシフトされます
ftable_2[(x-2)&2](); // 表 2 の関数の動的呼び出し
}
// ------------------------------------------- ----------------------------
// セクション 3: 関数テーブル
var ftable_1 = [f];
var ftable_2 = [g, g2]; // すべて同じ型
// ------------------------------------------- ----------------------------
// セクション 4: グローバル
var g_i = 0; // int global
var g_f = 0.0; // ダブルグローバル
// ------------------------------------------- ----------------------------
// セクション 5: エクスポート
return { f_export: f, goop: g };
}