Upload
kensuke-matsuzaki
View
616
Download
1
Embed Size (px)
Citation preview
HSP3Dish.js
Matsuzaki Kensuke
2014/06/08
HSP● HSPには、次のような特長があります。
● 簡単に覚えられる強力な命令セットと付属エディタにより初心者でもすぐに使い始めることができます
● 作ったプログラムは実行ファイルに変換して自由に再配布が可能、ライセンス料も不要です
● 拡張プラグイン・モジュールにより 3D表示や通信など数多くの機能を追加可能です
● 10年以上に渡る多くのユーザー資産と使用実績があります
● 詳細なマニュアルとリファレンスヘルプシステムを装備しています
● 純国産のツールとして書籍資料なども豊富です
● マウス操作によりスクリプトを作成する簡易プログラミングシステムを利用できます
● HSPLetの Java変換機能によりWEBブラウザ上でも動作させることができます
● HSP3DishランタイムによりiPhone,iPad,android等のスマートフォンアプリの開発が可能です
● ソースコンバーター機能によるC言語への変換をサポート、ネイティブコードが生成可能です
● USBIO、 HIDaspx等の外部機器コントロール機能を同梱しています
● インタプリタ動作仕様はオープンソースとして公開されています
http://hsp.tv/make/hsp3.html
HSP
→ 構造化 BASIC にしようとして
途中で辞めた行番号 BASIC
比較JavaScript 上位言語の比較表http://qiita.com/yuch_i/items/17e22b77ce4ad9d1b7e9
HSP● 静的型付け● 型推論● コード最適化● JS互換● クラス● mixin● 名前空間● 構造的部分型● ジェネリクス
● 関数のオプション引数● 不変変数● 列挙型● パターンマッチ● 全て式● ラムダ式● リスト内包表記
ありませんありません
HSP3Dish
http://www.onionsoft.net/wp/archives/tag/hsp3dish
HSP3Dish標準 hsp3 Dish hsp3dish
動作環境 Windows(+Linux/Java 部分的対応 )
Windows/iOS/Android
表示 GDI DirectX/OpenGL
API COM 、 DLL プラグインWindows 依存
整理済み
Demo● http://peppermint.jp/products/hsp/block3.html
Emscripten● Emscripten is an LLVM-to-JavaScript
compiler. ● By Alon Zakai
Emscripten & asm.js
http://www.4gamer.net/games/032/G003263/20130328081/
HSP3Dish の移植
● インタプリタの移植は実質 1 日程度– Alignment 違反の修正
– メインループの while 分をコールバックに展開
– OpenGL エミュレーションがたまに変● テクスチャ扱い
● コンパイラのコア部分の移植は 2 時間程度– ほぼ何もしていない
– エラー処理や HTML/JavaScript 側との連携がまだ取れてない
アライメント
● 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.
アライメント
● 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.
ループの展開
ループの展開
ループの展開
結論
Awesome emscriptenAwesome emscripten
HSP3Dish.js● https://github.com/zakki/openhsp● http://dev.onionsoft.net/trac/