LLVM LL Future LL LLVM is NOT a

  • Slides: 18
Download presentation

ここから LLVM の話 • ちなみに LL Future の LL とは全く関係無い – LLVM is NOT

ここから LLVM の話 • ちなみに LL Future の LL とは全く関係無い – LLVM is NOT a Lightweight Virtual Machine. – LLVM is NOT a Virtual Machine design for Lightweight Language. • ようこそ Low. Level の世界に ! – 話者のレベルが LL という噂も

LLVM (Low-Level Virtual Machine) • RISC ライクな低水準命令セット – about 49 opcedes (llvm 2. 3)

LLVM (Low-Level Virtual Machine) • RISC ライクな低水準命令セット – about 49 opcedes (llvm 2. 3) • – • • llvm 2. 3 で多値サポートのための getresult 命令が追加 豊富なビルトイン関数 ( Intrinsic Function) llvm. * レジスタマシン (SSA) – 特定の言語やオブジェクトモデルをサポートしない プログラムのライフサイクル全体に渡る変換と最適化 – Offline code generation and optimization • • Install-time target-specific optimization Link-Time interprocedural Optimization (LTO) – – whole program analysis User-based profiling and optimization • run-time & idle time

参考文献 • The LLVM Compiler Infrastructure – http: //llvm. org/ • "LLVM: A Compilation

参考文献 • The LLVM Compiler Infrastructure – http: //llvm. org/ • "LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation", Chris Lattner and Vikram Adve. Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04), Palo Alto, California, Mar. 2004. ) – http: //llvm. org/pubs/2004 -01 -30 -CGO-LLVM. html – この時点では only 31 opecodes という記述が • LLVM 勉強会資料 (syoyo さん,omo さん) – http: //groups. google. co. jp/group/llvm_study/web/

パネルディスカッションの元ネタ • Running C and Python Code on The Web – http: //www. toolness.

パネルディスカッションの元ネタ • Running C and Python Code on The Web – http: //www. toolness. com/wp/? p=52 – Scott Peterson (Adobe) ‘s toolchain – C code to be targeted to the Tamarin VM • C言語をブラウザで実行、Ruby/Python/Perlも然り – http: //journal. mycom. co. jp/news/2008/07/10/031/ind ex. html • 移植性 ⇔ 効率性のトレードオフを解消できる技術と 来たら,ブラウザへの応用は自然と言える

背景知識 (ぁゃしぃ ) • from Adobe, Mozilla, and Tamarin – http: //hecker. org/mozilla/adobe-mozilla-and-tamarin •

背景知識 (ぁゃしぃ ) • from Adobe, Mozilla, and Tamarin – http: //hecker. org/mozilla/adobe-mozilla-and-tamarin • Tamarin プロジェクト – Flash player 9 から採用された新しい JIT VM が AVM 2 – コードネーム Tamarin として Open. Source 化し Mozilla プロジェクトに提供 • Flash player 9 = AVM 2 + graphics, musics, videos, networking, etc components – JRE (Java Runtime Environment) が JVM + 膨大な標準クラスライブラリなのと同じ ? • Action. Script 3. 0 (Flash 5 から Action. Script と呼ばれるように) – Java. Script の兄弟 (プロトタイプベース vs クラスベース) – ECMAScript 4 (ECMA-262) に準拠 (完全ではない) – クラスベース (Java / C# に近い ? ) • Free Flex 2. SDK などで foo. as を foo. swf にコンパイル (javac に相当 ? ) • Flash player 9 により foo. swf 内部の abc file が実行される

Tamarin Project • http: //www. mozilla-japan. org/projects/tamarin/ • 目標 – ECMAScript 第 4版 (ES

Tamarin Project • http: //www. mozilla-japan. org/projects/tamarin/ • 目標 – ECMAScript 第 4版 (ES 4) をパフォーマンスの高いオープンソースの コードとして実装すること – Tamarin VM は Mozilla の Java. Script コアエンジン Spider. Monkey 内部と Adobe Flash Player の AVM の一部として利用されている • AVMPlus のソースコードを公開している – http: //developer. mozilla. org/ja/docs/Tamarin_Build_Documentation – AVMPlus (VM library), MMgc (garbage collection library), avmplus (実行ファイル) を提供 – avmplus コマンドは ABC file format を JIT 実行 – Adobe Flex 2 SDK に含まれる ASC (Action. Script Compiler) など で foo. as を foo. abc に変換 • asc. jar のために jdk 1. 4 以降が必要 – Mozilla Spider. Monkey ベースの Java. Script コンパイラ esc で foo. js から foo. abc を生成できる (まだ完璧ではないらしい ? )