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