20160903-WebAssembly

00580f6c11851d2fff0b3e2f7392226b?s=47 N. Shimizu
September 03, 2016

 20160903-WebAssembly

00580f6c11851d2fff0b3e2f7392226b?s=128

N. Shimizu

September 03, 2016
Tweet

Transcript

  1. ـٓؐؠ欽ך$16׾⡲׷״ 8FC"TTFNCMZד .P[JMMB+BQBO /4IJNJ[V OTIJNJ[V!NP[JMMBKBQBOPSH!DIJLPTLJ )5.-$POGFSFODF !匌❨ꨵ堣㣐㷕⻌⼪⡝ٍؗٝػأ

  2. +BWB4DSJQU7. KT

  3. +BWB4DSJQU7. KT 8"4.7. XBTN

  4. /4IJNJ[V!DIJLPTLJ ˖ .P[JMMB+BQBO ˖ %FWFMPQFSSFMBUJPO ˖ -PDBMJ[FS.%/ 46.0 'JSFGPYGPSJ04 ˖

    IUNMK8FCفٓحزؿؓ٦ي鿇؜٦ي鿇 ˖ فؚٗٓىؚٝ鎉铂׉ך׮ךָ㥨ֹדׅ ˖ IUUQTTMJEFTIBSFOFUDIJLPTLJ ˖ IUUQTIUNMFYQFSUTKQDIJLPTLJ
  5. None
  6. None
  7. None
  8. Proudly non-profit, Mozilla makes products like Firefox with a mission

    to keep the power of the Web in the hands of users everywhere. Mozilla Mission (https://www.mozilla.org/en-US/mission/)
  9. Our mission is to promote openness, innovation & opportunity on

    the Web. Mozilla Mission(https://www.mozilla.org/en-US/mission/)
  10. IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOJTTVFT IUUQTHJUIVCDPN'PHBDDJP0QFO%FTJHO

  11. 8FC"TTFNCMZ ˖ 8$ך؝ىُصذ؍ؚٕ٦فד陽锷ׁ׸גְ׷倜׃ְ8FC垥彊 ˖ 㼭ֻׁגه٦ةـٕזغ؎شٔؿؓ٦وحز ˖ ط؎ذ؍ـח鵚ְأؾ٦سדך㹋遤 ˖ 㸜Ⰻז㹋遤橆㞮 ˖

    㼎ד㼎䘔ׅ׷ذؗأز邌植
  12. https://www.w3.org/community/webassembly/

  13. None
  14. .P[JMMB .JDSPTPGU (PPHMF "QQMF

  15. https://www.w3.org/community/webassembly/

  16. https://webassembly.github.io/demo/

  17. IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS'"2NE

  18. 文字列 実行コード 抽象構文木 トークン列 中間表現 字句解析 構文解析 意味解析 最適化・コード生成

  19. 文字列 AST バイトコード 字句解析 / 構文解析 生成 実行 * AST:

    Abstract Syntax Tree / 抽象構文木 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF
  20. 文字列 字句解析 / 構文解析 実行 バイトコード AST Baseline Compiled Code

    MIR Iron Compiled Code 実行と プロファイル 実行 Bail 生成 Baseline Compile Iron Build Iron Compile * AST: Abstract Syntax Tree / 抽象構文木  MIR: Medium-level Intermediate Representation / 中間表現 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF
  21. 文字列 字句解析 / 構文解析 AST MIR 実行コード 生成 Compile *

    AST: Abstract Syntax Tree / 抽象構文木  MIR: Medium-level Intermediate Representation / 中間表現
  22. asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル

    実行開始 ダウンロード 構文解析 コンパイル 実行開始
  23. asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル

    実行開始 ダウンロード 構文解析 コンパイル 実行開始 WASM ダウンロード 構文解析 コンパイル 実行開始
  24. 8"4.؝ٝػ؎ٕך欰䧭暟

  25. D DQQ XBTN XBTU BTN KT DMBOHFNDD FNDD XBTNBT BTNXBTN

    変換パイプライン
  26. None
  27. FNTELJOTUBMMFNTDSJQUFOJODPNJOHCJU FNTELJOTUBMMDMBOHJODPNJOHCJU FNTELJOTUBMMTELJODPNJOHCJU FNTELBDUJWBUFFNTDSJQUFOJODPNJOHCJU FNTELBDUJWBUFDMBOHJODPNJOHCJU FNTELBDUJWBUFTELJODPNJOHCJU TPVSDF\&.4%,@*/45"--@%*3^FNTEL@FOWTI Emscripten から wasm

    を出力する設定
  28. MT BEEDQQ FNDDT#*/&3:&/PBEEXBTNBEEDQQ MT BEEDQQBEEXBTN

  29. LLVMのターゲットにもWebAssemblyの文字が

  30. 8FCل٦آפך穈׫鴥׫

  31. WebAssemblyは実行コードに変換されてから実行される

  32. GFUDI BEEXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS  UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS

     DPOTUNPEVMF8BTNJOTUBODJBUF.PEMVF DPEF#ZUF  BMFSU A \NPEVMFFYQPSUTBEE   ^A  ^  WASM.instanceiateModule でコンパイル
  33. FYQPSUJOUBEE JOU  JNQPSUJOUTPNFUIJOH  JOUBEE4PNF JOUB \ SFUVSOB TPNFUIJOH

     ^ CからJSの関数を呼び出す場合
  34. GFUDI BEETPNFXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS  UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS

     DPOTUNPEVMF8"4.JOTUBODJBUF.PEMVF DPEF#ZUF \ TPNFUIJOH  ^  BMFSU A \NPEVMFFYQPSUTBEETPNF  ^A  ^  CからJSの関数を呼び出す場合
  35. 8FC"TTFNCMZך暴䗙 ˖ 㘗➰ֽׁ׸׋أةحؙوءٝ ˖ 鸬竲זًٌٌٔرٕ ˖ 䬄韋圓俑加 "45  ˖

    圓鸡⻉ׁ׸׋؝ٝزٗ٦ٕؿٗ٦׾㹀纏 ˖ ٌآُ٦ٕءأذي
  36. B  

  37. B      B  

  38. B       B 抽象構文木 (Abstract

    Syntax Tree : AST)
  39. 8FC"TTFNCMZ Y "3. JBEE BEEM "%% DBMM DBMM #- JMPBE

    $)&$, NPW $)&$, -%3 実マシンのコードに近い仮想的な命令セットを定義 IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS"TU4FNBOUJDTNE
  40. 8"4. BTNKT JBEE B C ] DBMM G ] JMPBE

    )&"1<J>] asm.js との互換性
  41. JNVM JBEE TFU@MPDBM B  JDPOTU  JDPOTU  JDPOTU

  42. テキスト表現(仕様策定中) JNVM JBEE TFU@MPDBM B  JDPOTU  JDPOTU 

    JDPOTU TFU@MPDBMB  JBEE  JDPOTU   JNVM  JDPOTU   JDPOTU     
  43. 子ノードが出現順に評価される JNVM JBEE TFU@MPDBM B  JDPOTU  JDPOTU 

    JDPOTU      
  44. 㘗 䪔ִ׷⦼ך珏겲 J ؽحزך侭侧⦼ J ؽحزך侭侧⦼ G ؽحزך侭侧⦼ G ؽحزך侭侧⦼

  45. ㄏ⟀ 䮶׷莸ְ JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸 JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸

    JMPBE غ؎زٗ٦س
  46. ㄏ⟀ 䮶׷莸ְ JTUPSF J׾Jח㢌䳔׃גأز، JTUPSF J׾Jח㢌䳔׃גأز، JTUPSF 㢌䳔ׇ׆חغ؎ز׾أز،

  47. QUSNBMMPD   BEESFTT@TQBDF@NBY (# غ؎ز 連続的にとられるメモリ JMPBE JTUPSF

  48. ㄏ⟀ 䮶׷莸ְ HSPX@NFNPSZ ًٌٔ׾䭷㹀ׁ׸׋ل٦آⴓ㟓װׅ DVSSFOU@NFNPSZ 植㖈ךًٌٔ؟؎ؤ׾ل٦آ侧ד鵤ׅ

  49. ㄏ⟀ 䮶׷莸ְ OPQ ⡦׮׃זְ CMPDL ـٗحؙך㹀纏 MPPQ 粸׶鵤׃ JG JG俑UIFOח醱侧ך䒭ָ֮׷㜥さ

    CS ⴓ䀄 CS@JG 勴⟝➰ֹⴓ䀄 CS@UBCMF آٍٝفذ٦ـٕ SFUVSO 鵤׶⦼
  50. NPEVMF  NFNPSZ   FYQPSUNFNPSZNFNPSZ   FYQPSUBEEBEE 

     GVODBEE QBSBNJ  QBSBNJ  SFTVMUJ   JBEE  HFU@MPDBM   HFU@MPDBM      同等のWASMモジュール
  51. 8FC"TTFNCMZך➙䖓 .71ך䖓ח✮㹀ׁ׸גְ׷堣腉 ˖ أٖحس ˖ Ⱏ剣ًٌٔ ˖ ت؎شىحؙؙٔٝ ˖ ؝أزך⢽㢩

    ˖ 㔿㹀ꞿך4*.% 㼛勻涸ז堣腉 ˖ 稢ְַ磛䏝דךًٌٔ盖椚 ˖ 㣐ְֹ؟؎ؤךل٦آ ˖ ⵖ䖴圓鸡ך⯍㹋 ˖ ($װ%0.ך窟さ ˖ (#⟃♳ך简䕎ًٌٔ ˖ FUD
  52. תה׭ ˖ 8"4.כ؝ٝػ؎ٓך欰䧭暟 ˖ 1PMZMM ˖ +4ך縧ֹ䳔ִדכזְ ˖ ְתךהֿ׹%0.׾湫䱸ⵃ欽דֹזְ ˖

    넝鸞ד侧⦼鎘皾׾׃׋ְ㜥꬗כꣲ׵׸׷ ˖ 欰欵䚍ך倯׾⮚⯓ׅ׷㜥さ׮㢳ְ
  53. ꟼ鸬䞔㜠 ˖ 8FC"TTFNCMZ$PNNVOJUZ(SPVQ
 IUUQTXXXXPSHDPNNVOJUZXFCBTTFNCMZ ˖ .PEFTU IUUQTEFWNP[JMMBKQ  ˖ FNTDSJQUFO

    IUUQTFNTDSJQUFOPSH  ˖ 8"4.&YQMPSFS
 IUUQNCFCFOJUBHJUIVCJP8BTN&YQMPSFS