esb02b.hrb について
(1) esb02b.hrb とは?
- esb02b.hrbは、ES-BASIC ver.0.2b を「30日でできる!OS自作入門」のサンプルOSである「はりぼてOS」に移植したものです。
- ES-BASIC ver.0.2b については、ここに詳しく書いてあります。 → esbasic02a
- ただし、純粋な「はりぼてOS」では ES-BASIC ver.0.2b 相当の機能を容易には実現できないので、以下の改造を施しています。
- [定番の改造] FPU命令を利用可能にする拡張
- [定番の改造] IPLの改良(これでサイズの大きいアプリが扱いやすくなる)
- [定番の改造] OSの無駄を少し減らす改造
- データ領域に書いたコードを実行可能にするAPIの追加
- これらの改造についての詳細は http://hrb.osask.jp/wiki/?esb02b に書きました。
- これらの改造の結果、OS本体+デバイスドライバ+シェルである HARIBOTE.SYS は29.8KBになっています。
- つまりは、なんだかんだ言ってもその程度のシンプルなOSだということです。一応このサイズで、32ビットマルチタスク、マルチウィンドウを実現しています。
- 「はりぼてOS」は以下の写真のような感じのOSです( http://hrb.osask.jp/figures.html より)。これが29.8KBでできるって、なかなかよくできていると自分では思っています。
- 「はりぼてOS」は残念ながら、ファイルへの書き込み機能を持っていません(読み込みはできます)。したがって esb02b.hrb は、MKEXE コマンドもそのまま実装されているものの、なにも出力できません。ということでコンパイラとして使うことはできません。
- でも移植を楽にしたかったので、コンパイラ処理部分もすべてそのまま残してあります。
- しかしそれ以外の機能はほとんど問題なく使えます。もちろん高速なスクリプト実行やデバッグ支援機能も全部使えます。
- 率直な感想として、自作OSの上で自作言語がサクサクと動いて、そこでプログラムを書いて、RUNしたりデバッグしたりできるのは、非常に感動的です。夢のようです。
- なんというか、まずOSが一人前になった感じがします。「このOSはここまでできるのかー」と。
- 同時に「この言語はこんな貧弱な環境でも問題なく動いてしまうのかー」とも感じます。
- 私は以前、gccを(別の自作OSである)OSASK上で動くようにしたことがあります。それはかなり大変でした。
- それと比べたら、今回の移植は非常に楽でした。「はりぼてOS」はOSASKよりもずっと貧弱で、だから苦労することはあっても楽することなんてないはずなのですが、それでも格段に移植は楽でした。
- 理由としては、 ES-BAISC ver.0.2b が標準ライブラリすらわずかなものしか利用していなかった、言語処理系として素直でシンプルに構成されていた、ということがあります。
- もし、Pythonを移植するとしたらどのくらいの手間がかかるでしょうか。・・・正直想像したくないです・・・。
- esb02b.hrb を起動すると、当然ですがメモリを消費します。でもそのメモリ消費量は11.1MBだけです(OSのmemコマンドで確認しました)。たったこれだけでES-BASICは動いてしまうのかーと感じます。
- ちなみにOS込みで、32MBくらいあればメモリ不足を感じることは全くなく快適に動きます(32MBもあれば、esb02b.hrbの他にも同時に複数のアプリを起動できます)。今回はQEMUでメモリ32MBで使っています。
- 普段は「Windows はメモリ2GB(=2048MB)ではしんどいなあ」なんて感じているのに・・・。
(2) 移植の手間
- 今回の移植はどのくらいの手間だったのかをここで報告します。
こめんと欄