Design: 10์ง„์ˆ˜/ํ™”ํ ์œ ํ˜•

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

Float ์œ ํ˜• ๊ณผ ๋ถ„์ˆ˜ ๋ถ€๋ถ„์ด (2 ๊ธฐ๋ฐ˜)^(-1)์ธ ์‚ฐ์ˆ ์— ๋Œ€ํ•œ ์ข‹์€ WASM ๋ฌธ์„œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋…„ ๋™์•ˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ชจ๋“  ์ˆซ์ž์— ๋Œ€ํ•œ ์œ ์ผํ•œ 64๋น„ํŠธ ๋ถ€๋™ ์œ ํ˜• ์œผ๋กœ ์ธํ•ด ์ ์ ˆํ•œ ์†Œ์ˆ˜ ๊ณ„์‚ฐ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด JavaScript์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค.
__Money__ ์œ ํ˜• ๋˜๋Š” __Decimal__ ์œ ํ˜•( ์˜ˆ 1 , ์˜ˆ 2 )์„ ์ง€์›ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์‹ค์งˆ์ ์œผ๋กœ ์‹ญ์ง„์ˆ˜ ์œ ํ˜•์€ ๋Œ€๋ถ€๋ถ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์–ธ์–ด, ํ”Œ๋žซํผ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

OP๊ฐ€ BCD ์ง€์›์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 10์ง„์ˆ˜ ๋ถ€๋™ ์†Œ์ˆ˜์  ์— ๋Œ€ํ•œ ์ง€์›์„ ์š”๊ตฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” @jfbastien ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ธ์šฉํ•œ Wikipedia ํŽ˜์ด์ง€์— ๋”ฐ๋ฅด๋ฉด ์ง€๊ธˆ๊นŒ์ง€ IBM ํ•˜๋“œ์›จ์–ด๋งŒ์ด ์ด๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ISTR ์ธํ…”์ด ์ด๋ฅผ ์ถ”๊ตฌํ•œ๋‹ค๋Š” ์†Œ๋ฌธ์ด ์žˆ์—ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์‹คํ˜„๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

Intel์€ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ฃผ์žฅ ๋˜๋Š” ์—๋ฎฌ๋ ˆ์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ C๋Š” Wasm์œผ๋กœ ์ปดํŒŒ์ผ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ถ”์ธก์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ „ํ˜€ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

WebAssembly๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ๋•Œ ์ผ๋ฐ˜์ ์ธ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์ง„ ์ฝ”๋“œ ์‹ญ์ง„์ˆ˜๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ์‹  ISA์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”. ์ด์ „ x86์— ์žˆ์—ˆ๊ณ  ๊ธด ๋ชจ๋“œ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋” ๋น ๋ฅธ๊ฐ€์š”? ๋•Œ๋•Œ๋กœ ์˜๋„ ๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด(์˜ˆ: "BCD ์ถ”๊ฐ€ ์ˆ˜ํ–‰") ์˜๋„๊ฐ€ ์†์‹ค๋˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ์ฝ”๋“œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ๋ถ„๋ช…ํžˆ ๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ๊บผ์ด ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

OP๊ฐ€ BCD ์ง€์›์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 10์ง„์ˆ˜ ๋ถ€๋™ ์†Œ์ˆ˜์  ์— ๋Œ€ํ•œ ์ง€์›์„ ์š”๊ตฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” @jfbastien ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ธ์šฉํ•œ Wikipedia ํŽ˜์ด์ง€์— ๋”ฐ๋ฅด๋ฉด ์ง€๊ธˆ๊นŒ์ง€ IBM ํ•˜๋“œ์›จ์–ด๋งŒ์ด ์ด๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ISTR ์ธํ…”์ด ์ด๋ฅผ ์ถ”๊ตฌํ•œ๋‹ค๋Š” ์†Œ๋ฌธ์ด ์žˆ์—ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์‹คํ˜„๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

Intel์€ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ฃผ์žฅ ๋˜๋Š” ์—๋ฎฌ๋ ˆ์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ์•„๋งˆ๋„ C๋Š” Wasm์œผ๋กœ ์ปดํŒŒ์ผ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ถ”์ธก์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ „ํ˜€ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‹ต๋ณ€์„ ์œ„ํ•ด @jfbastien ๋ฐ @lars-t-hansen์„ ๋„์™€์ฃผ์„ธ์š”.

์ด์ œ ์ด ๋ฌธ์ œ๋Š” WASM๊ณผ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ๋‹ค๋ฅธ ๊ทธ๋ฃน์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„์„œ๊ด€์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ๋ฌธ์ œ

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

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

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

jfbastien picture jfbastien  ยท  6์ฝ”๋ฉ˜ํŠธ

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