WebAssembly.Memory
ãªãã¸ã§ã¯ãã¯ãµã¤ãºå¤æ´å¯è½ãª ArrayBuffer
ã¾ã㯠SharedArrayBuffer
ã§ããã WebAssembly Instance
ããã¢ã¯ã»ã¹ããçã®ãã¤ãåã®ã¡ã¢ãªã¼ãæã¡ã¾ãã
JavaScript ã¾ã㯠WebAssembly ã³ã¼ãããçæãããã¡ã¢ãªã¼ã¯ JavaScript 㨠WebAssembly ã®ã©ã¡ããããã¢ã¯ã»ã¹ã夿´ãå¯è½ã«ãªãã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼WebAssembly.Memory()
æ°ãã Memory
ãªãã¸ã§ã¯ããçæãã¾ãã
Memory.prototype.buffer
ã¡ã¢ãªã¼ã«æ ¼ç´ããã¦ãããããã¡ã¼ãè¿ãã¢ã¯ã»ãµã¼ããããã£ã§ãã
Memory.prototype.grow()
æå®ãã WebAssembly ãã¼ã¸ (64KB ã§ 1 åä½) ã®æ°ã§ã¡ã¢ãªã¼ã®ã¤ã³ã¹ã¿ã³ã¹ã®ãµã¤ãºãå¢ããã¾ãã
WebAssembly.Memory
ãªãã¸ã§ã¯ããåå¾ããæ¹æ³ã¯ 2 ã¤ããã¾ãã 1 ã¤ç®ã¯ JavaScript ããçæããæ¹æ³ã§ãã以ä¸ã®ä¾ã§ã¯ãåæãµã¤ãºã 10 ãã¼ã¸ (640KiB) ãæå¤§ãµã¤ãºã 100 ãã¼ã¸ (6.4MiB) ã§æ°ãã WebAssembly Memory ã¤ã³ã¹ã¿ã³ã¹ãçæãã¦ãã¾ãããã® buffer
ããããã£ã¯ ArrayBuffer
ãè¿ãã¾ãã
var memory = new WebAssembly.Memory({ initial: 10, maximum: 100 });
次ã®ä¾ã§ã¯ (GitHub ä¸ã® memory.html ããã³å®è¡ä¾ãåç
§)ã memory.wasm ãã¤ãã³ã¼ãã WebAssembly.instantiateStreaming()
ã¡ã½ããã使ç¨ãã¦èªã¿è¾¼ã¿ãã§ã¤ã³ã¹ã¿ã³ã¹åãããã®ä¸ã®è¡ã§çæãããã¡ã¢ãªã¼ã«ã¤ã³ãã¼ããã¾ãããããããã¡ã¢ãªã¼ã«ããã¤ãã®å¤ãæ ¼ç´ãã颿°ãã¨ã¯ã¹ãã¼ããã¦ä½¿ç¨ããããã¤ãã®å¤ãåè¨ãã¾ãã
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.Memory ãªãã¸ã§ã¯ããåå¾ãã 2 ã¤ç®ã®æ¹æ³ã¯ã WebAssembly ã¢ã¸ã¥ã¼ã«ã«ãã£ã¦ã¨ã¯ã¹ãã¼ãããããã¨ã§ãããã®ã¡ã¢ãªã¼ã¯ WebAssembly ã¤ã³ã¹ã¿ã³ã¹ã® exports
ããããã£ã§ (ã¡ã¢ãªã¼ã WebAssembly ã¢ã¸ã¥ã¼ã«å
ã§ã¨ã¯ã¹ãã¼ããããå¾ã«) ã¢ã¯ã»ã¹ã§ãã¾ããæ¬¡ã®ã¹ããããã¯ã WebAssembly ããã¨ã¯ã¹ãã¼ããããã¡ã¢ãªã¼ã memory
ã¨ããååã§ã¤ã³ãã¼ãããã¡ã¢ãªã¼ã®æåã®è¦ç´ ã Uint32Array ã¨ãã¦è§£éãã¦è¡¨ç¤ºãã¦ãã¾ãã
WebAssembly.instantiateStreaming(fetch("memory.wasm")).then((obj) => {
var i32 = new Uint32Array(obj.instance.exports.memory.buffer);
console.log(i32[0]);
});
å
±æã¡ã¢ãªã¼ã®ä½æ
æ¢å®ã§ã¯ã WebAssembly ã®ã¡ã¢ãªã¼ã¯å
±æããã¦ãã¾ãããå
±æã¡ã¢ãªã¼ã使ããã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ ã®åæåãªãã¸ã§ã¯ãã« shared: true
ãæ¸¡ãã¾ãã
let memory = new WebAssembly.Memory({
initial: 10,
maximum: 100,
shared: true,
});
ãã®ã¡ã¢ãªã¼ã® buffer
ããããã£ã¯ SharedArrayBuffer
ãè¿ãã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4