// -------------------------------- ---------------
// 섹션 1: 가져오기
var H32 = new global.Int32Array(buffer);
var HU32 = new global.Uint32Array(buffer);
var log = foreign.consoleDotLog;
// -------------------------------- ---------------
// 섹션 2: 기능
function f(x, y, z, w) {
// 섹션 A: 매개변수 유형 선언
x = x|0; // 정수 매개변수
y = y; // 이중 매개변수
// 섹션 B: 함수 본문
log(x|0); // FFI에 호출 -- 부호를 강제로 적용해야 함
log(y); // FFI에 호출 - 이미 double이라는 것을 알고 있습니다
x = (x 3)|0; // 서명된 추가
// 섹션 C: 무조건 반환
return ((((x 1)|0)>>>0)/(x|0))>>>0; // 복합 표현식
}
함수 g() {
g_f = g_i; // 전역 읽기/쓰기
return;
}
함수 g2() {
return;
}
함수 h(i, x) {
i = i|0;
x = x|0;
H32[(i&0xffffffff)>>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 전역
var g_f = 0.0; // 이중 전역
// -------------------------------- ---------------
// 섹션 5: 내보내기
return { f_export: f, goop: g };
}