hsp3dish.js 天下一altjs武闘会 2014/06/09

18
HSP3Dish.js Matsuzaki Kensuke 2014/06/08

Upload: kensuke-matsuzaki

Post on 11-Jul-2015

616 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP3Dish.js

Matsuzaki Kensuke

2014/06/08

Page 2: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP● HSPには、次のような特長があります。

● 簡単に覚えられる強力な命令セットと付属エディタにより初心者でもすぐに使い始めることができます

● 作ったプログラムは実行ファイルに変換して自由に再配布が可能、ライセンス料も不要です

● 拡張プラグイン・モジュールにより 3D表示や通信など数多くの機能を追加可能です

● 10年以上に渡る多くのユーザー資産と使用実績があります

● 詳細なマニュアルとリファレンスヘルプシステムを装備しています

● 純国産のツールとして書籍資料なども豊富です

● マウス操作によりスクリプトを作成する簡易プログラミングシステムを利用できます

● HSPLetの Java変換機能によりWEBブラウザ上でも動作させることができます

● HSP3DishランタイムによりiPhone,iPad,android等のスマートフォンアプリの開発が可能です

● ソースコンバーター機能によるC言語への変換をサポート、ネイティブコードが生成可能です

● USBIO、 HIDaspx等の外部機器コントロール機能を同梱しています

● インタプリタ動作仕様はオープンソースとして公開されています

http://hsp.tv/make/hsp3.html

Page 3: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP

→ 構造化 BASIC にしようとして

途中で辞めた行番号 BASIC

Page 4: HSP3Dish.js 天下一altJS武闘会 2014/06/09

比較JavaScript 上位言語の比較表http://qiita.com/yuch_i/items/17e22b77ce4ad9d1b7e9

Page 5: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP● 静的型付け● 型推論● コード最適化● JS互換● クラス● mixin● 名前空間● 構造的部分型● ジェネリクス

● 関数のオプション引数● 不変変数● 列挙型● パターンマッチ● 全て式● ラムダ式● リスト内包表記

ありませんありません

Page 6: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP3Dish

http://www.onionsoft.net/wp/archives/tag/hsp3dish

Page 7: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP3Dish標準 hsp3 Dish hsp3dish

動作環境 Windows(+Linux/Java 部分的対応 )

Windows/iOS/Android

表示 GDI DirectX/OpenGL

API COM 、 DLL プラグインWindows 依存

整理済み

Page 8: HSP3Dish.js 天下一altJS武闘会 2014/06/09

Demo● http://peppermint.jp/products/hsp/block3.html

Page 9: HSP3Dish.js 天下一altJS武闘会 2014/06/09

Emscripten● Emscripten is an LLVM-to-JavaScript

compiler. ● By Alon Zakai

Page 10: HSP3Dish.js 天下一altJS武闘会 2014/06/09

Emscripten & asm.js

http://www.4gamer.net/games/032/G003263/20130328081/

Page 11: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP3Dish の移植

● インタプリタの移植は実質 1 日程度– Alignment 違反の修正

– メインループの while 分をコールバックに展開

– OpenGL エミュレーションがたまに変● テクスチャ扱い

● コンパイラのコア部分の移植は 2 時間程度– ほぼ何もしていない

– エラー処理や HTML/JavaScript 側との連携がまだ取れてない

Page 12: HSP3Dish.js 天下一altJS武闘会 2014/06/09

アライメント

● Nonportable code that relies on x86 alignment behavior. X86 allows unaligned reads and writes (so you can read a 16-bit value from a non-even address, i.e., which is only 8-bit aligned address, for example), but other archs do not: ARM will raise SIGILL, and when emscripten generates JS you will get undefined behavior in this case.

Page 13: HSP3Dish.js 天下一altJS武闘会 2014/06/09

アライメント

● Nonportable code that relies on x86 alignment behavior. X86 allows unaligned reads and writes (so you can read a 16-bit value from a non-even address, i.e., which is only 8-bit aligned address, for example), but other archs do not: ARM will raise SIGILL, and when emscripten generates JS you will get undefined behavior in this case.

Page 14: HSP3Dish.js 天下一altJS武闘会 2014/06/09

ループの展開

Page 15: HSP3Dish.js 天下一altJS武闘会 2014/06/09

ループの展開

Page 16: HSP3Dish.js 天下一altJS武闘会 2014/06/09

ループの展開

Page 17: HSP3Dish.js 天下一altJS武闘会 2014/06/09

結論

Awesome emscriptenAwesome emscripten

Page 18: HSP3Dish.js 天下一altJS武闘会 2014/06/09

HSP3Dish.js● https://github.com/zakki/openhsp● http://dev.onionsoft.net/trac/