WebAssembly.Memory()
æé 彿°å建ä¸ä¸ªæ°ç Memory
对象ã该对象ç buffer
屿§æ¯ä¸ä¸ªå¯è°æ´å¤§å°ç ArrayBuffer ï¼å
¶å
åå¨çæ¯ WebAssembly å®ä¾
æè®¿é®å
åçåå§åèç ã
ä» JavaScript æ WebAssembly 䏿å建çå åï¼å¯ä»¥ç± JavaScript æ WebAssembly æ¥è®¿é®åæ´æ¹ã
è¯æ³var myMemory = new WebAssembly.Memory(memoryDescriptor);åæ°
ä¸ä¸ªå¯å å«ä»¥ä¸æåç对象ï¼
WebAssembly å åçåå§å¤§å°ï¼ä»¥ WebAssembly 页é¢ä¸ºåä½ã
以 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.api.Memory webassembly.multiMemory åè§
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