Design: ์ฝ์„ ์ˆ˜ ์—†๋Š” was ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ์—๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 04์›” 22์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: WebAssembly/design

์˜ค๋Š˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด์•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์—์„œ wasm์„ ์‹คํ–‰ํ•˜๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋†“์นœ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.

์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋งต ํŒŒ์ผ์ด๋‚˜ ์›๋ณธ ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ์œ ์‚ฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ปดํŒŒ์ผ/๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ๊ฒฐ์ •๋œ ์ œํ’ˆ์„ ์–ต์ œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์–ต์ œํ•˜๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(์ œ๊ณตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์†Œ์Šค/๋งํฌ ํฌํ•จ). ๋„์šฉ์— ๋Œ€ํ•œ ๋…ธ๋ ฅ/์œ„ํ—˜์ด ๋ฒ•์  ๋ผ์ด์„ ์Šค ๋น„์šฉ๋ณด๋‹ค ๋” ํฐ ๊ฒฝ์šฐ. ๋“ฑ ๋“ฑ

๊ฐ€๋…์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ip ๋ณด์•ˆ์˜ ์ถ”๊ฐ€ ์š”์†Œ๋Š” ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ๋” ๋น ๋ฅธ ์ฑ„ํƒ์„ ์žฅ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ๋ณด์•ˆ์ƒ์˜ ์ด์ ์ด ์—†๋‹ค๋ฉด....์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋” ๋น ๋ฅธ hw/js ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ C/C++๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•˜๊ณ  ๋” ํ™•์žฅ๋œ ๊ธฐ์ˆ  ์ง‘ํ•ฉ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

was ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์–ด์จŒ๋“  ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฒฐ๊ตญ ๊ทธ๊ฒƒ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋™์•ˆ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์ฝ”๋“œ์˜ ์งง์€ ์‹œ๋Œ€๋ฅผ ์ฆ๊ธฐ๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค.

๋‹จ๋ฐœ.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ์†Œ์Šค์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์€ WebAssembly๊ฐ€ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์ž์‹ ์˜ ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์˜๊ณ  ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด ๊ทธ๋ฃน์€ ์›น์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์ด์‹ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ ๋ฐ ๋กœ๋“œ ์‹œ๊ฐ„ ํšจ์œจ์ ์ธ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ํ…์ŠคํŠธ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ์ด์œ ์ด๋ฉฐ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋””์ปดํŒŒ์ผ, ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๋˜๋Š” ๊ธฐํƒ€ ๋น„๊ธฐ์ˆ ์  ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฒ•์  ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ท€ํ•˜์˜ ๋ณ€ํ˜ธ์‚ฌ์—๊ฒŒ ๋งก๊ธฐ๊ณ  ๋ณ€ํ˜ธ์‚ฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์€ ์ถ”์ธก์„ ํ”ผํ•˜๋„๋ก ์ด‰๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฒ•๋ฅ  ์ž๋ฌธ์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์—…์„ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ๋…ผ์˜๊ฐ€ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ? ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์œ ๋กญ๊ฒŒ ๋‹ค์‹œ ์—ด๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ณ„์† ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

์ตœ์‹  ๋ฒ„์ „์˜ Chrome์€ ์ด๋ฏธ ๋ฐ”์ด๋„ˆ๋ฆฌ WASM์„ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๊นŒ? (์œ„ํ‚คํ”ผ๋””์•„ ํ•ญ๋ชฉ์—์„œ ๊ฐ€์ ธ์˜ด)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7์ผ
10 00
7e
0b

์—๊ฒŒ

์ •์ˆ˜ ๊ณ„์Šน(int n) {
๋งŒ์•ฝ (n == 0)
๋ฐ˜ํ™˜ 1;
๋˜ ๋‹ค๋ฅธ
๋ฐ˜ํ™˜ n * factorial(n-1);
}

๋˜๋Š” ๊ทธ๋Œ€๋กœ ํฌ๋กฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, http://webassembly.org/docs/text-format/ ์— ์„ค๋ช…๋œ ์•„์ง ๊ณต์‹์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š์€ "WAST" ํ˜•์‹์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ž‘๊ณ  ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ๊ตฌ๋ฌธ์„ ์™„์ „ํžˆ ๋ณต๊ตฌํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ๋ณด์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๋” ํฌ๊ณ  ๋ณต์žกํ• ์ˆ˜๋ก ๋””์ปดํŒŒ์ผ์„ ๋œ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค, ํ…œํ”Œ๋ฆฟ ๋ฐ ๊ธฐํƒ€ ์ƒ์œ„ ์ˆ˜์ค€ ๊ธฐ๋Šฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณด๋ฉด ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์šฐ์ˆ˜(์œ„ํ‚คํ”ผ๋””์•„ ๊ธฐ์‚ฌ์— ๋‚˜์—ด๋œ "์ค‘๊ฐ„ ํ‘œํ˜„"์ž…๋‹ˆ๋‹ค) - ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์ด ์ด๋ฏธ ๋” "์˜ˆ์˜๊ฒŒ" ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. - ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด (์ฆ‰์‹œ) ๋  ์ˆ˜ ์—†๋‹ค๋ฉด ๋” ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

(๋‚˜๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜๋ฏธ ์žˆ๋Š” ์‹๋ณ„์ž๊ฐ€ ์—†๋”๋ผ๋„ ๊ถ๊ทน์ ์œผ๋กœ ํ•ฉ๋ฆฌ์ ์ธ ์˜์‚ฌ ์ฝ”๋“œ๋กœ ๋‹ค์‹œ ๋ฒˆ์—ญํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ณ„ํš์ด ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.)

์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ํ˜•ํƒœ์˜ ์†Œ์Šค์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์€ WebAssembly๊ฐ€ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์ž์‹ ์˜ ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์˜๊ณ  ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด ๊ทธ๋ฃน์€ ์›น์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์ด์‹ ๊ฐ€๋Šฅํ•œ ํฌ๊ธฐ ๋ฐ ๋กœ๋“œ ์‹œ๊ฐ„ ํšจ์œจ์ ์ธ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ํ…์ŠคํŠธ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ์ด์œ ์ด๋ฉฐ ๋””๋ฒ„๊น… ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋””์ปดํŒŒ์ผ, ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๋˜๋Š” ๊ธฐํƒ€ ๋น„๊ธฐ์ˆ ์  ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฒ•์  ๋ณดํ˜ธ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ท€ํ•˜์˜ ๋ณ€ํ˜ธ์‚ฌ์—๊ฒŒ ๋งก๊ธฐ๊ณ  ๋ณ€ํ˜ธ์‚ฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค์€ ์ถ”์ธก์„ ํ”ผํ•˜๋„๋ก ์ด‰๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฒ•๋ฅ  ์ž๋ฌธ์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์—…์„ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ๋…ผ์˜๊ฐ€ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ? ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์œ ๋กญ๊ฒŒ ๋‹ค์‹œ ์—ด๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ณ„์† ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

chintailease.wast.zip

์ด .wast ํŒŒ์ผ์„ ์›๋ณธ ์†Œ์Šค ์ฝ”๋“œ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

chicoxyzzy picture chicoxyzzy  ยท  5์ฝ”๋ฉ˜ํŠธ

spidoche picture spidoche  ยท  4์ฝ”๋ฉ˜ํŠธ

dpw picture dpw  ยท  3์ฝ”๋ฉ˜ํŠธ

beriberikix picture beriberikix  ยท  7์ฝ”๋ฉ˜ํŠธ

arunetm picture arunetm  ยท  7์ฝ”๋ฉ˜ํŠธ