Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20160903-WebAssembly
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
chikoski
September 03, 2016
Technology
9
3.1k
20160903-WebAssembly
chikoski
September 03, 2016
Tweet
Share
More Decks by chikoski
See All by chikoski
20210825_ossx
chikoski
0
330
festudy02-wasm
chikoski
1
1k
An overview of WebAssembly; how it is used, created, and applied?
chikoski
1
750
Functions in JavaScript
chikoski
1
1.2k
20171018-WASM
chikoski
2
1.4k
20171002-wejs
chikoski
1
610
20170924-html5conference-wasm
chikoski
5
10k
Equivalence_in_JS
chikoski
0
1.5k
いまさら振り返るPromise
chikoski
1
590
Other Decks in Technology
See All in Technology
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
170
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
340
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
180
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
AWS Network Firewall Proxyを触ってみた
nagisa53
0
210
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
3k
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
130
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
110
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
1
120
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
870
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
Featured
See All Featured
The browser strikes back
jonoalderson
0
360
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
KATA
mclloyd
PRO
34
15k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
930
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Embracing the Ebb and Flow
colly
88
5k
The SEO Collaboration Effect
kristinabergwall1
0
350
How to train your dragon (web standard)
notwaldorf
97
6.5k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
320
Transcript
ـٓؐؠ欽ך$16⡲״ 8FC"TTFNCMZד .P[JMMB+BQBO /4IJNJ[V OTIJNJ[V!NP[JMMBKBQBOPSH!DIJLPTLJ )5.-$POGFSFODF !匌❨ꨵ堣㣐㷕⻌⼪⡝ٍؗٝػأ
+BWB4DSJQU7. KT
+BWB4DSJQU7. KT 8"4.7. XBTN
/4IJNJ[V!DIJLPTLJ ˖ .P[JMMB+BQBO ˖ %FWFMPQFSSFMBUJPO ˖ -PDBMJ[FS.%/ 46.0 'JSFGPYGPSJ04 ˖
IUNMK8FCفٓحزؿؓ٦ي鿇٦ي鿇 ˖ فؚٗٓىؚٝ鎉铂ךךָ㥨ֹדׅ ˖ IUUQTTMJEFTIBSFOFUDIJLPTLJ ˖ IUUQTIUNMFYQFSUTKQDIJLPTLJ
None
None
None
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/)
Our mission is to promote openness, innovation & opportunity on
the Web. Mozilla Mission(https://www.mozilla.org/en-US/mission/)
IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOJTTVFT IUUQTHJUIVCDPN'PHBDDJP0QFO%FTJHO
8FC"TTFNCMZ ˖ 8$ך؝ىُصذ؍ؚٕ٦فד陽锷ׁגְ倜׃ְ8FC垥彊 ˖ 㼭ֻׁגه٦ةـٕזغ؎شٔؿؓ٦وحز ˖ ط؎ذ؍ـח鵚ְأؾ٦سדך㹋遤 ˖ 㸜Ⰻז㹋遤橆㞮 ˖
㼎ד㼎䘔ׅذؗأز邌植
https://www.w3.org/community/webassembly/
None
.P[JMMB .JDSPTPGU (PPHMF "QQMF
https://www.w3.org/community/webassembly/
https://webassembly.github.io/demo/
IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS'"2NE
文字列 実行コード 抽象構文木 トークン列 中間表現 字句解析 構文解析 意味解析 最適化・コード生成
文字列 AST バイトコード 字句解析 / 構文解析 生成 実行 * AST:
Abstract Syntax Tree / 抽象構文木 IUUQTCMPHNP[JMMBPSHMVLFBTNKTBPUDPNQJMBUJPOBOETUBSUVQQFSGPSNBODF
文字列 字句解析 / 構文解析 実行 バイトコード 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
文字列 字句解析 / 構文解析 AST MIR 実行コード 生成 Compile *
AST: Abstract Syntax Tree / 抽象構文木 MIR: Medium-level Intermediate Representation / 中間表現
asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル
実行開始 ダウンロード 構文解析 コンパイル 実行開始
asm.js JS Native ダウンロード 構文解析 コンパイル 実行開始 ダウンロード 構文解析 コンパイル
実行開始 ダウンロード 構文解析 コンパイル 実行開始 WASM ダウンロード 構文解析 コンパイル 実行開始
8"4.؝ٝػ؎ٕך欰䧭暟
D DQQ XBTN XBTU BTN KT DMBOHFNDD FNDD XBTNBT BTNXBTN
変換パイプライン
None
FNTELJOTUBMMFNTDSJQUFOJODPNJOHCJU FNTELJOTUBMMDMBOHJODPNJOHCJU FNTELJOTUBMMTELJODPNJOHCJU FNTELBDUJWBUFFNTDSJQUFOJODPNJOHCJU FNTELBDUJWBUFDMBOHJODPNJOHCJU FNTELBDUJWBUFTELJODPNJOHCJU TPVSDF\&.4%,@*/45"--@%*3^FNTEL@FOWTI Emscripten から wasm
を出力する設定
MT BEEDQQ FNDDT#*/&3:&/PBEEXBTNBEEDQQ MT BEEDQQBEEXBTN
LLVMのターゲットにもWebAssemblyの文字が
8FCل٦آפך穈鴥
WebAssemblyは実行コードに変換されてから実行される
GFUDI BEEXBTN UIFO SFTQPOTF SFTQPOTFBSSBZ#VGGFS UIFO CVGGFS\ DPOTUDPEF#ZUFOFX6*OU"SSBZ CVGGFS
DPOTUNPEVMF8BTNJOTUBODJBUF.PEMVF DPEF#ZUF BMFSU A \NPEVMFFYQPSUTBEE ^A ^ WASM.instanceiateModule でコンパイル
FYQPSUJOUBEE JOU JNQPSUJOUTPNFUIJOH JOUBEE4PNF JOUB \ SFUVSOB TPNFUIJOH
^ CからJSの関数を呼び出す場合
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の関数を呼び出す場合
8FC"TTFNCMZך暴䗙 ˖ 㘗➰ֽׁأةحؙوءٝ ˖ 鸬竲זًٌٌٔرٕ ˖ 䬄韋圓俑加 "45 ˖
圓鸡⻉ׁ؝ٝزٗ٦ٕؿٗ٦㹀纏 ˖ ٌآُ٦ٕءأذي
B
B B
B B 抽象構文木 (Abstract
Syntax Tree : AST)
8FC"TTFNCMZ Y "3. JBEE BEEM "%% DBMM DBMM #- JMPBE
$)&$, NPW $)&$, -%3 実マシンのコードに近い仮想的な命令セットを定義 IUUQTHJUIVCDPN8FC"TTFNCMZEFTJHOCMPCNBTUFS"TU4FNBOUJDTNE
8"4. BTNKT JBEE B C ] DBMM G ] JMPBE
)&"1<J>] asm.js との互換性
JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU JDPOTU
テキスト表現(仕様策定中) JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU
JDPOTU TFU@MPDBMB JBEE JDPOTU JNVM JDPOTU JDPOTU
子ノードが出現順に評価される JNVM JBEE TFU@MPDBM B JDPOTU JDPOTU
JDPOTU
㘗 䪔ִ⦼ך珏겲 J ؽحزך侭侧⦼ J ؽحزך侭侧⦼ G ؽحزך侭侧⦼ G ؽحزך侭侧⦼
ㄏ⟀ 䮶莸ְ JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸 JMPBE@T غ؎زٗ٦س׃ג痗〾➰ֹJפ䭁䓸 JMPBE@V غ؎زٗ٦س׃ג痗〾ז׃Jפ䭁䓸
JMPBE غ؎زٗ٦س
ㄏ⟀ 䮶莸ְ JTUPSF JJח㢌䳔׃גأز، JTUPSF JJח㢌䳔׃גأز، JTUPSF 㢌䳔ׇ׆חغ؎زأز،
QUSNBMMPD BEESFTT@TQBDF@NBY (# غ؎ز 連続的にとられるメモリ JMPBE JTUPSF
ㄏ⟀ 䮶莸ְ HSPX@NFNPSZ ًٌٔ䭷㹀ׁل٦آⴓ㟓װׅ DVSSFOU@NFNPSZ 植㖈ךًٌٔ؟؎ؤل٦آ侧ד鵤ׅ
ㄏ⟀ 䮶莸ְ OPQ ⡦׃זְ CMPDL ـٗحؙך㹀纏 MPPQ 粸鵤׃ JG JG俑UIFOח醱侧ך䒭ָ֮㜥さ
CS ⴓ䀄 CS@JG 勴⟝➰ֹⴓ䀄 CS@UBCMF آٍٝفذ٦ـٕ SFUVSO 鵤⦼
NPEVMF NFNPSZ FYQPSUNFNPSZNFNPSZ FYQPSUBEEBEE
GVODBEE QBSBNJ QBSBNJ SFTVMUJ JBEE HFU@MPDBM HFU@MPDBM 同等のWASMモジュール
8FC"TTFNCMZך➙䖓 .71ך䖓ח✮㹀ׁגְ堣腉 ˖ أٖحس ˖ Ⱏ剣ًٌٔ ˖ ت؎شىحؙؙٔٝ ˖ ؝أزך⢽㢩
˖ 㔿㹀ꞿך4*.% 㼛勻涸ז堣腉 ˖ 稢ְַ磛䏝דךًٌٔ盖椚 ˖ 㣐ְֹ؟؎ؤךل٦آ ˖ ⵖ䖴圓鸡ך⯍㹋 ˖ ($װ%0.ך窟さ ˖ (#⟃♳ך简䕎ًٌٔ ˖ FUD
תה ˖ 8"4.כ؝ٝػ؎ٓך欰䧭暟 ˖ 1PMZMM ˖ +4ך縧ֹ䳔ִדכזְ ˖ ְתךהֿ%0.湫䱸ⵃ欽דֹזְ ˖
넝鸞ד侧⦼鎘皾׃ְ㜥כꣲ ˖ 欰欵䚍ך倯⮚⯓ׅ㜥さ㢳ְ
ꟼ鸬䞔㜠 ˖ 8FC"TTFNCMZ$PNNVOJUZ(SPVQ IUUQTXXXXPSHDPNNVOJUZXFCBTTFNCMZ ˖ .PEFTU IUUQTEFWNP[JMMBKQ ˖ FNTDSJQUFO
IUUQTFNTDSJQUFOPSH ˖ 8"4.&YQMPSFS IUUQNCFCFOJUBHJUIVCJP8BTN&YQMPSFS