Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

+BWB4DSJQU7. KT

Slide 3

Slide 3 text

+BWB4DSJQU7. KT 8"4.7. XBTN

Slide 4

Slide 4 text

/4IJNJ[V!DIJLPTLJ ˖ .P[JMMB+BQBO ˖ %FWFMPQFSSFMBUJPO ˖ -PDBMJ[FS.%/ 46.0 'JSFGPYGPSJ04 ˖ IUNMK8FCفٓحزؿؓ٦ي鿇؜٦ي鿇 ˖ فؚٗٓىؚٝ鎉铂׉ך׮ךָ㥨ֹדׅ ˖ IUUQTTMJEFTIBSFOFUDIJLPTLJ ˖ IUUQTIUNMFYQFSUTKQDIJLPTLJ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

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/)

Slide 9

Slide 9 text

Our mission is to promote openness, innovation & opportunity on the Web. Mozilla Mission(https://www.mozilla.org/en-US/mission/)

Slide 10

Slide 10 text

IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOJTTVFT IUUQTHJUIVCDPN'PHBDDJP0QFO%FTJHO

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

.P[JMMB .JDSPTPGU (PPHMF "QQMF

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS'"2NE

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

文字列 AST バイトコード 字句解析 / 構文解析 生成 実行 * AST: Abstract Syntax Tree / 抽象構文木 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF

Slide 20

Slide 20 text

文字列 字句解析 / 構文解析 実行 バイトコード 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

Slide 21

Slide 21 text

文字列 字句解析 / 構文解析 AST MIR 実行コード 生成 Compile * AST: Abstract Syntax Tree / 抽象構文木  MIR: Medium-level Intermediate Representation / 中間表現

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

8"4.؝ٝػ؎ٕך欰䧭暟

Slide 25

Slide 25 text

D DQQ XBTN XBTU BTN KT DMBOHFNDD FNDD XBTNBT BTNXBTN 変換パイプライン

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

FNTELJOTUBMMFNTDSJQUFOJODPNJOHCJU FNTELJOTUBMMDMBOHJODPNJOHCJU FNTELJOTUBMMTELJODPNJOHCJU FNTELBDUJWBUFFNTDSJQUFOJODPNJOHCJU FNTELBDUJWBUFDMBOHJODPNJOHCJU FNTELBDUJWBUFTELJODPNJOHCJU TPVSDF\&.4%,@*/45"--@%*3^FNTEL@FOWTI Emscripten から wasm を出力する設定

Slide 28

Slide 28 text

MT BEEDQQ FNDDT#*/&3:&/PBEEXBTNBEEDQQ MT BEEDQQBEEXBTN

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

8FCل٦آפך穈׫鴥׫

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

GFUDI BEEXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS DPOTUNPEVMF8BTNJOTUBODJBUF.PEMVF DPEF#ZUF BMFSU A\NPEVMFFYQPSUTBEE ^A ^ WASM.instanceiateModule でコンパイル

Slide 33

Slide 33 text

FYQPSUJOUBEE JOU JNQPSUJOUTPNFUIJOH JOUBEE4PNF JOUB \ SFUVSOBTPNFUIJOH ^ CからJSの関数を呼び出す場合

Slide 34

Slide 34 text

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の関数を呼び出す場合

Slide 35

Slide 35 text

8FC"TTFNCMZך暴䗙 ˖ 㘗➰ֽׁ׸׋أةحؙوءٝ ˖ 鸬竲זًٌٌٔرٕ ˖ 䬄韋圓俑加 "45 ˖ 圓鸡⻉ׁ׸׋؝ٝزٗ٦ٕؿٗ٦׾㹀纏 ˖ ٌآُ٦ٕءأذي

Slide 36

Slide 36 text

B

Slide 37

Slide 37 text

B B

Slide 38

Slide 38 text

B B 抽象構文木 (Abstract Syntax Tree : AST)

Slide 39

Slide 39 text

8FC"TTFNCMZ Y "3. JBEE BEEM "%% DBMM DBMM #- JMPBE $)&$,NPW $)&$,-%3 実マシンのコードに近い仮想的な命令セットを定義 IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS"TU4FNBOUJDTNE

Slide 40

Slide 40 text

8"4. BTNKT JBEE BC ] DBMM G ] JMPBE )&"1] asm.js との互換性

Slide 41

Slide 41 text

JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU JDPOTU

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

ㄏ⟀ 䮶׷莸ְ JTUPSF J׾Jח㢌䳔׃גأز، JTUPSF J׾Jח㢌䳔׃גأز، JTUPSF 㢌䳔ׇ׆חغ؎ز׾أز،

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

ㄏ⟀ 䮶׷莸ְ OPQ ⡦׮׃זְ CMPDL ـٗحؙך㹀纏 MPPQ 粸׶鵤׃ JG JG俑UIFOח醱侧ך䒭ָ֮׷㜥さ CS ⴓ䀄 CS@JG 勴⟝➰ֹⴓ䀄 CS@UBCMF آٍٝفذ٦ـٕ SFUVSO 鵤׶⦼

Slide 50

Slide 50 text

NPEVMF NFNPSZ FYQPSUNFNPSZNFNPSZ FYQPSUBEEBEE GVODBEE QBSBNJ QBSBNJ SFTVMUJ JBEE HFU@MPDBM HFU@MPDBM 同等のWASMモジュール

Slide 51

Slide 51 text

8FC"TTFNCMZך➙䖓 .71ך䖓ח✮㹀ׁ׸גְ׷堣腉 ˖ أٖحس ˖ Ⱏ剣ًٌٔ ˖ ت؎شىحؙؙٔٝ ˖ ؝أزך⢽㢩 ˖ 㔿㹀ꞿך4*.% 㼛勻涸ז堣腉 ˖ 稢ְַ磛䏝דךًٌٔ盖椚 ˖ 㣐ְֹ؟؎ؤךل٦آ ˖ ⵖ䖴圓鸡ך⯍㹋 ˖ ($װ%0.ך窟さ ˖ (#⟃♳ך简䕎ًٌٔ ˖ FUD

Slide 52

Slide 52 text

תה׭ ˖ 8"4.כ؝ٝػ؎ٓך欰䧭暟 ˖ 1PMZMM ˖ +4ך縧ֹ䳔ִדכזְ ˖ ְתךהֿ׹%0.׾湫䱸ⵃ欽דֹזְ ˖ 넝鸞ד侧⦼鎘皾׾׃׋ְ㜥꬗כꣲ׵׸׷ ˖ 欰欵䚍ך倯׾⮚⯓ׅ׷㜥さ׮㢳ְ

Slide 53

Slide 53 text

ꟼ鸬䞔㜠 ˖ 8FC"TTFNCMZ$PNNVOJUZ(SPVQ
 IUUQTXXXXPSHDPNNVOJUZXFCBTTFNCMZ ˖ .PEFTU IUUQTEFWNP[JMMBKQ ˖ FNTDSJQUFO IUUQTFNTDSJQUFOPSH ˖ 8"4.&YQMPSFS
 IUUQNCFCFOJUBHJUIVCJP8BTN&YQMPSFS