WebAssembly.Memory()
WebAssembly.Memory()
์์ฑ์๋ WebAssembly Instance
๊ฐ ์ก์ธ์คํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ง ArrayBuffer(ํฌ๊ธฐ์กฐ์ ์ด ๊ฐ๋ฅ)์ธ ์ Memory
๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
๋ฉ๋ชจ๋ฆฌ๋ JavaScript ํน์ WebAssembly ์ฝ๋ ์์์ ๋ง๋ค์ด์ง๋ฉฐ JavaScript ๊ทธ๋ฆฌ๊ณ WebAssembly์์ ์ ๊ทผํ๊ฑฐ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํฉ๋๋ค.
Syntax
var myMemory = new WebAssembly.Memory(memoryDescriptor);
Parameters
- memoryDescriptor
-
๋ค์์ ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง์ ์๋ ๊ฐ์ฒด์ ๋๋ค._ initial _ : WebAssembly Page์ ๋จ์๋ณ WebAssembly ๋ฉ๋ชจ๋ฆฌ์ ์ด๊ธฐ ํฌ๊ธฐ์ ๋๋ค.
- maximum Optional
-
WebAssembly ๋ฉ๋ชจ๋ฆฌ์ ์ต๋ ํฌ๊ธฐ๋ WebAssembly ํ์ด์ง ๋จ์๋ก ์ฆ๊ฐ ํ ์ ์์ต๋๋ค. ์ด ๋งค๊ฐ ๋ณ์๊ฐ ์์ผ๋ฉด
maximum
๋งค๊ฐ ๋ณ์๋ ์์ง์ ๋ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฉด์ ์์ฝํ๋๋ก ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ง์ ์ด ์์ฝ ์์ฒญ์ ๋ฌด์ํ๊ฑฐ๋ ํด๋จํ ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ WebAssembly ๋ชจ๋์maximum
๊ฐ์ ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ฐธ๊ณ : WebAssembly ํ์ด์ง์ ํฌ๊ธฐ๋ 65,536 ๋ฐ์ดํธ๋ก 64KiB๋ก ๊ณ ์ ๋์ด ์์ต๋๋ค.
Exceptions
memoryDescriptor
๊ฐ object ์ ํ์ด ์๋ ๊ฒฝ์ฐTypeError
๊ฐ ๋ฐ์ํฉ๋๋ค.maximum
์ด ์ง์ ๋๊ณinitial
๋ณด๋ค ์์ ๊ฒฝ์ฐRangeError
๊ฐ ๋ฐ์ํฉ๋๋ค.
Memory
instances
๋ชจ๋ Memory
์ธ์คํด์ค๋ Memory()
์์ฑ์์ prototype object๋ฅผ ์์ํฉ๋๋ค.์ด ์ธ์คํด์ค๋ ๋ชจ๋ Memory
์ธ์คํด์ค์ ์ ์ฉ๋๋๋ก ์์ ํ ์ ์์ต๋๋ค.
Instance properties
Memory.prototype.constructor
-
์ด ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ์์ฑ ํ ํจ์๋ฅผ ๋๋ ค์ค๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ฒ์
WebAssembly.Memory()
์์ฑ์์ ๋๋ค. Memory.prototype.buffer
-
๋ฉ๋ชจ๋ฆฌ์ ํฌํจ ๋ ๋ฒํผ๋ฅผ ๋ฐํํ๋ ์ ๊ทผ ์ ์์ฑ์ ๋๋ค.
Instance methods
Memory.prototype.grow()
-
์ง์ ๋ ์์ WebAssembly ํ์ด์ง (๊ฐ๊ฐ 64KB ํฌ๊ธฐ)๋งํผ ๋ฉ๋ชจ๋ฆฌ ์ธ์คํด์ค์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฝ๋๋ค.
Examples
WebAssembly.Memory
๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ ์ค๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ JavaScript์์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ๋ค์ ์์ ์์๋ ์ด๊ธฐ ํฌ๊ธฐ๊ฐ 10 ํ์ด์ง (640KiB)์ด๊ณ ์ต๋ ํฌ๊ธฐ๊ฐ 100 ํ์ด์ง (6.4MiB) ์ธ ์ WebAssembly ๋ฉ๋ชจ๋ฆฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
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);
});
๋ช ์ธ์
Specification |
---|
WebAssembly JavaScript Interface # memories |
Unknown specification |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
webassembly.api.Memory
Loadingโฆ
webassembly.multiMemory
Loadingโฆ