OSECPU-VM, 第三世代OSASK について
(1) OSECPU-VMとは?
- JavaVMみたいなものを自分で作りたい。そうしたらCPUやOSに関係なくアプリが実行できる。どうせ作るのならJava互換ではなく最高の仕様を考えたい。
- シンプルで移植しやすいバイトコード仕様
- アプリの圧倒的なコード密度
- セキュリティホールを生みにくい仕様
- その他に意識したこと:
- 「アプリは確かに小さいがその分VMが大きい」みたいなことにはしたくない。うまく設計すればVMの肥大化を避けつつも、アプリを小さくすることが可能なはずだ。シンプルを目指す。ここが腕の見せ所。
(2) 第三世代OSASKとの関係
- OSECPU-VMのrev2の仕様は第三世代OSASKアプリの仕様のサブセットになっています。ということでOSECPU-VMは第三世代OSASKとも呼ばれます。
(3) 主な成果
- osecpu.exe(win32版)は29.0KBになりました。Javaなどに比べればずっと小さいです。
- たとえば以下のようなグラデーション画像を描画するアプリは6バイトで書けます。
- たとえば以下のようなボール画像を描画するアプリは63バイトで書けます。
- たとえば以下のようなフラクタル画像を描画するアプリは111バイトで書けます。
- たとえば以下のようなインベーダゲームが430バイトで書けます。
- これらがどんなに無茶なことかすぐには分からないかもしれません。その場合は他の環境での作り比べ競争の結果がありますので参考にしてください。OSECPU-VMの「ぶっちぎり」ぶりがよくわかると思われます。
(4) ダウンロード
- rev2(インタプリタ実行版で低速だけど最新仕様で移植しやすい)
- セキュリティキャンプ2014での資料:(rev2向け)
- rev1(JITコンパイラ版で高速だけど仕様が古い)
(5) リンクなど
(6) KH-FDPLとの関係
- KH-FDPLではセキュリティを意識していますが、それはOSECPU-VMに由来しています。
- KH-FDPLはコード密度を追及せず、また高級言語志向ですが、これはOSECPU-VMがコード密度や低級言語志向での追及を徹底的にやっているので、取りこぼしたことをKH-FDPLにやらせようという意図があります。
- 究極的には、KH-FDPLのアプリがOSECPU-VMのバイトコードにコンパイルされたら素敵です。そういうコンパイラを作れるようになりたい・・・。
- KH-FDPLは複数のプログラム言語を併存可能にして、言語の実行環境を統合しようとしていますが、OSECPU-VMでも似たような構想があります。それはすべてをOSECPU-VMのバイトコードにしてしまおうということです。OSECPU-VMはセキュリティが高いのでそういう夢も描けるのです。
- KH-FDPLの、むやみに性能の追及をしない、性能が出ないからという理由だけで仕様を妥協したりはしない、という方針は、OSECPU-VMからの伝統です。
こめんと欄