Flash Playerの作り方
- 3. Open Screen Project 2008年5月1日 – Adobe Open Screen Project にて、 Flash の仕様書を読んだ人も Flash Playerを作ってもよくなりました。 前は、 読んでいない人->作ってOK 読んだ人->作っちゃだめ たぶん、ECMAScript 4がActionScript 3ベースにする予定だったためか?(推測)
- 4. Flash Playerの要素 以下の3つが Flash Player を作るうえでの肝 AVM (ActionScript Virtual Machine) ActionScript を実行します。 1 と 2 の両方を作る必要あり。 描画 gyuque さんが話すよ! タイムライン この部分が最もドキュメント不足。 Gnash の Wiki が最も情報多いです。 onLoad 、 onUnload 、 onEnterFrame の呼ばれるタイミングなどが不明確。あまりにも難しい話が多すぎて話せません。 全体として、ドキュメントが不十分。仕様不明のため作るのが困難。
- 6. with AVM2 (ActionScript3) の場合 var a = 456; with({a: 123}) { trace("a = " + a); } 456 と出る。 JavaScript は 123 。 AVM1 は 静的スコープでなく、動的スコープ movieClip のプロパティとかぶると、 read と write でスコープ解決のルールが変わる Flash Player の完全再現は大変…
- 8. AVM2 on JS with JIT ActionScript 3のソースコード -> SWFファイル by Flex 3 -> ActionScript バイトコードを文字列に変換 by Tamarin -> JavaScript で読み込む -> ActionScript バイトコードを JavaScript のソースに変換。 -> 高速に実行!
- 9. 作り方 ABC pushshort 5 pushshort 3 multiply setlocal_1 JS 自前のコンパイラ用のスタックを用意して、 {type: “number”, value: 5} をスタックに積む {type: “number”, value: 3} をスタックに積む {type: “src”, src: “(3 * 5)”} をスタックに積む local1 = (3 * 5); を出力
- 13. Flash 11 への希望 AVM1 AVM2 LLVM AS1,2 AS3 C/C++ Flash Player 11 CPU GPU