WebAssembly.Memory()
WebAssembly.Memory() æé 彿°å建ä¸ä¸ªæ°ç Memory 对象ã该对象ç buffer 屿§æ¯ä¸ä¸ªå¯è°æ´å¤§å°ç ArrayBuffer ï¼å
¶å
åå¨çæ¯ WebAssembly å®ä¾ æè®¿é®å
åçåå§åèç ã
ä» JavaScript æ WebAssembly 䏿å建çå åï¼å¯ä»¥ç± JavaScript æ WebAssembly æ¥è®¿é®åæ´æ¹ã
è¯æ³
var myMemory = new WebAssembly.Memory(memoryDescriptor);
åæ°
- memoryDescriptor
-
ä¸ä¸ªå¯å å«ä»¥ä¸æåç对象ï¼
- initial
-
WebAssembly å åçåå§å¤§å°ï¼ä»¥ WebAssembly 页é¢ä¸ºåä½ã
- maximum å¯é
-
以 WebAssembly 页é¢ä¸ºåä½ï¼å¯å 许 WebAssembly å åç
æå¤§å¼ãå½å卿¤å±æ§æ¶ï¼æ¤åæ°ç¨äºæç¤ºå¼æé¢å ä¿çå åã使¯ï¼å¼æå¯è½ä¼å¿½ç¥æéå¶æ¤é¢ç请æ±ãé常æ åµä¸å¤§å¤æ° WebAssembly 模åä¸éè¦è®¾ç½®æå¤§å¼ã
夿³¨ï¼A WebAssembly 页é¢ç大å°ä¸ºä¸ä¸ªå¸¸é 65,536 åèï¼å³ 64KBã
å¼å¸¸
- 妿
memoryDescriptorçç±»å䏿¯å¯¹è±¡ï¼åæåºTypeErrorå¼å¸¸ã - 妿æå®äº
maximumå¹¶ä¸å°äºinitialï¼åæåºRangeErrorå¼å¸¸ã
Memory å®ä¾
ææ Memory å®ä¾é½ç»§æ¿èª Memory() æé 彿°ç åå对象ââè¿ä¸ªååå¯è¢«ä¿®æ¹å¹¶å½±åå°ææç Memory å®ä¾ã
å®ä¾å±æ§
Memory.prototype.constructor-
è¿åå建æ¤å¯¹è±¡å®ä¾ç彿°ãé»è®¤æ åµä¸ï¼å®æ¯
WebAssembly.Memory()æé 彿°ã Memory.prototype.buffer-
ä¸ä¸ªè®¿é®å¨ï¼ç¨äºè¿åå åä¸å å«çç¼å²åºã
å®ä¾æ¹æ³
Memory.prototype.grow()-
éè¿æå® WebAssembly 页颿°éæ¥å¢å å åå®ä¾ç大å°ãï¼æ¯ä¸ªé¡µé¢å¤§å°ä¸º 64KBï¼
示ä¾
æä¸¤ç§æ¹æ³å¯ä»¥è·å¾ WebAssembly.Memory 对象ã第ä¸ç§æ¹æ³æ¯ç± JavaScript æ¥å建ã以ä¸ç¤ºä¾å建äºä¸ä¸ªæ°ç WebAssembly å
åå®ä¾ï¼åå§å¤§å°ä¸º 10 页ï¼640KBï¼ï¼æå¤§å¼è®¾ç½®ä¸º 100 页ï¼6.4MBï¼ã
var memory = new WebAssembly.Memory({ initial: 10, maximum: 100 });
è·å WebAssembly.Memory 对象ç第äºç§æ¹æ³æ¯ä» WebAssembly 模åä¸å¯¼åºã以ä¸ç¤ºä¾ï¼è¯¦è§ GitHub é¡µé¢ memory.htmlï¼ä¹å¯ä»¥ ç¨æµè§å¨è¿è¡æ¥çï¼ä½¿ç¨ WebAssembly.instantiateStreaming() æ¹æ³å®ä¾åå·²å è½½ç memory.wasm åè代ç ï¼åæ¶å¯¼å
¥ä¸é¢ä¸è¡ä¸å建çå
åãç¨å®æ¥åå¨ä¸äºå¼ï¼ç¶å导åºä¸ä¸ªå½æ°å¹¶ç¨å®æ¥å¯¹ä¸äºå¼è¿è¡æ±åæä½ã
WebAssembly.instantiateStreaming(fetch("memory.wasm"), {
js: { mem: memory },
}).then((obj) => {
var i32 = new Uint32Array(memory.buffer);
for (var i = 0; i < 10; i++) {
i32[i] = i;
}
var sum = obj.instance.exports.accumulate(0, 10);
console.log(sum);
});
æ åè§è
| è§è |
|---|
| WebAssembly JavaScript Interface> # memories> |
| Unknown specification> |