とりあえず、ARM用JITコンパイラのデバッグ作業に入りました。
ARM用JITコンパイラは結局ARMv4以降の対応となりました。つまり、Android機ではJITコンパイラは常に有効です。ただ、パフォーマンスが最大限得られるようになるのはNEON搭載機になります。これはx86用JITコンパイラでSSE2以降でないと十分なパフォーマンスが得られないのと同じです。
最近のAndroid機ではARMv7、VFPv3、NEONはいずれも搭載していると思うので(手持ちのAndroid2.2ですらARMv7ですし………ただTegra-2はNEON搭載CPUにも関わらず(VFPv3-D16のせいだと思いますが)CPUの実装機能としてNEONが取得できないので、ARMv7+VFPv3になりますが…)パフォーマンス的に問題にはならないでしょう…。
いや〜、しかし Android はデバッグ大変だなぁ…(吐血)(因みにもちろん逐次実行の方は動いてます)。でもこれさえ出来ればWindowsでデバッグしてそのままAndroidで(そこそこ高速)実行も可能になるので………ぐぬぬ
EntisGLS4s.02 を公開しました。
これを公開しないと、これから ARM 用 JIT コンパイラとかに着手し始めたら当分更新できないので、とりあえず。
EntisGLS4s.01 からの変更/追加点としては、サンプルコードにUDP/IP通信のサンプルが追加されたのと、cotobuild 上から Android の apk ファイルを生成出来るようになった点などです。Sakura2VM のデバッガも追加されています。apk 生成については同梱の「EntisGLS4導入マニュアル.doc」を参照してください。
それ以外では、レンダリングに EntisGLS3 ではなく OpenGL を利用するライブラリと仮想マシンが追加されています。Android 用仮想マシンも含まれています。
ただ、OpenGL 版と Android 版については正直、大して動作チェックはしていないので、バグは多いと思います。
それにしても、EntisGLS4 はライブラリというより、プラットフォームですね。
今後の予定としては、ARM 用 JIT コンパイラの実装と、簡易なAVGシステムのサンプル、コミケで出す予定のゲーム、ということでしょうか。
Windows と Android のアプリケーションが共通のコードで動作するのはかなり意義深いというか、個人的には Android 用ライブラリとしての有用性にかなり期待しています。
宇宙戦艦ヤマト2199で古代進が女体化した薄い本を見かけたのでネタとして買ってみたのですが、島が攻めじゃないんですね…(ぇ
それはさておき、某仕事でHTML5/JavaScriptでのゲームエンジンを作ったりし{た/ている}のですが、やっぱりどこまで行ってもHTML5はやりづらいですねぇ…
特にスレッド。要するに、画像だファイルだHTTP通信だと、時間の掛かる処理は一旦関数を抜けなきゃいけない。ワーカースレッドは実用上使い物にならず、JavaScriptで擬似的にスレッド処理を再現するものとかも世にはあるようで試してみたのですが重くてちょっと…
現状は、自前で色々やって組みやすくはしているのですが、それでも色々不満はあるもので…
詞葉(Sakura2)バイナリをJavaScriptに変換して、擬似スレッドのように実行出来るエンジン作ったら色々楽になりそうだなと思ってみたり…。流石に、EntisGLS4とは完全互換とは行きませんが(完全互換も原理上は不可能じゃないにしても処理速度上やめたほうがいい)、単に処理がC++と同じようなソースで書けて、ポインタが使えて、ファイルとかもロードしてもコード上その場で返り値を受け取れるという「普通」のプログラムを書ける意義は大きいんじゃないかと。
まあ、当面はEntisGLS4ですけどね…。
とりあえず、自前のフロントエンドのGUIプログラムで Win32 exe と Android apk を自動生成出来るようにしたので、多分そのうちWEBで公開するんじゃないかと思います。
|