Download - HSP3Dish.js 天下一altJS武闘会 2014/06/09
![Page 1: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/1.jpg)
HSP3Dish.js
Matsuzaki Kensuke
2014/06/08
![Page 2: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/3.jpg)
HSP
→ 構造化 BASIC にしようとして
途中で辞めた行番号 BASIC
![Page 4: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/4.jpg)
比較JavaScript 上位言語の比較表http://qiita.com/yuch_i/items/17e22b77ce4ad9d1b7e9
![Page 5: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/5.jpg)
HSP● 静的型付け● 型推論● コード最適化● JS互換● クラス● mixin● 名前空間● 構造的部分型● ジェネリクス
● 関数のオプション引数● 不変変数● 列挙型● パターンマッチ● 全て式● ラムダ式● リスト内包表記
ありませんありません
![Page 6: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/6.jpg)
HSP3Dish
http://www.onionsoft.net/wp/archives/tag/hsp3dish
![Page 7: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/8.jpg)
Demo● http://peppermint.jp/products/hsp/block3.html
![Page 9: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/9.jpg)
Emscripten● Emscripten is an LLVM-to-JavaScript
compiler. ● By Alon Zakai
![Page 10: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/10.jpg)
Emscripten & asm.js
http://www.4gamer.net/games/032/G003263/20130328081/
![Page 11: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/11.jpg)
HSP3Dish の移植
● インタプリタの移植は実質 1 日程度– Alignment 違反の修正
– メインループの while 分をコールバックに展開
– OpenGL エミュレーションがたまに変● テクスチャ扱い
● コンパイラのコア部分の移植は 2 時間程度– ほぼ何もしていない
– エラー処理や HTML/JavaScript 側との連携がまだ取れてない
![Page 12: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/12.jpg)
アライメント
● 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](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/13.jpg)
アライメント
● 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](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/14.jpg)
ループの展開
![Page 15: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/15.jpg)
ループの展開
![Page 16: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/16.jpg)
ループの展開
![Page 17: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/17.jpg)
結論
Awesome emscriptenAwesome emscripten
![Page 18: HSP3Dish.js 天下一altJS武闘会 2014/06/09](https://reader034.vdocuments.pub/reader034/viewer/2022052700/55a05b5b1a28ab0e688b4788/html5/thumbnails/18.jpg)
HSP3Dish.js● https://github.com/zakki/openhsp● http://dev.onionsoft.net/trac/