esb02b_hrb
のバックアップ(No.6)
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
esb02b_hrb
へ行く。
1 (2020-05-30 (土) 22:09:11)
2 (2020-05-30 (土) 22:21:24)
3 (2020-05-31 (日) 06:18:45)
4 (2020-05-31 (日) 11:14:30)
5 (2020-05-31 (日) 11:14:30)
6 (2020-05-31 (日) 22:25:51)
7 (2020-06-01 (月) 16:38:28)
8 (2020-06-02 (火) 20:44:46)
9 (2020-06-02 (火) 23:20:58)
10 (2020-06-03 (水) 17:01:26)
11 (2020-06-03 (水) 17:01:26)
12 (2020-06-05 (金) 11:26:56)
13 (2020-06-05 (金) 17:35:49)
esb02b.hrb について
(by
K
, 2020.05.30)
↑
(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)ではしんどいなあ」なんて感じているのに・・・。だった32MBでここまでできるなんて・・・。
↑
(2) 移植の手間
今回の移植はどのくらいの手間だったのかをここで報告します。
今回即席で作った標準関数:
qsort, exit, strtoull, malloc
time, clock
vsnprintf, fprintf, vfprintf, printf, putchar, scanf
fopen, fread, fwrite, fseek, feof, fgets, fclose
strchr
(工事中)
↑
(3) サイズ比較と考察
ファイル名
サイズ
説明
esbasic32.exe
62,976バイト
ES-BASIC ver.0.2b のWindows版(32bit)
esbasic64.exe
67,072バイト
ES-BASIC ver.0.2b のWindows版(64bit)
esb02b.hrb
ES-BASIC ver.0.2b の「はりぼてOS」版(32bit)
(工事中)
↑
こめんと欄
コメント
お名前
NameLink